Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
0,99 MB
Nội dung
GIẢI NGÂN HÀNG ĐỀ THI KỸ THUẬT VI XỬ LÝ Ngành đào tạo : Điện – Điện tử Phan Văn Hiện - Email: hienpv@lophocvui.com – Date: 12/12/2017 Câu hỏi loại điểm Câu 1.1: Kể tên loại bus thường thấy hệ vi xử lý? Nêu tóm tắt chức loại bus ? Trả lời : loại bus thường thấy hệ vi xử lí : - Address bus : Truyền địa tham chiếu tới khu vực nhớ liệu lưu giữ đâu không gian nhớ - Data bus : Là kênh truyền tải thông tin theo hai chiều CPU nhớ thiết bị ngoại vi vào - Control bus : Phục vụ truyền tải thông tin liệu để điều khiển hoạt động hệ thống Câu 1.2: a) Họ vi xử lý ARM7 thuộc kiến trúc nào? b) Phần lớn vi xử lý ARM7 thực tập lệnh nào? Trả lời: a) Dòng ARM7 dựa kiến trúc Von Neumann sử dụng chung vùng nhớ để chứa liệu chương trình, dùng chung bus cho việc truy xuất liệu chương trình b) Phần lớn vi xử lí ARM7 thực tập lệnh RISC Câu 1.3: a) Các vi xử lý ARM thuộc kiến trúc CISC hay RISC? b) Bộ vi xử lý ARM có tổng cộng ghi, ghi có chiều dài bit? Trả lời : a) Các kiến trúc ARM thuộc kiến trúc RISC b) Bộ vi xử lý ARM có tổng cộng 37 ghi, có 30 ghi đa dụng, ghi trạng thái ghi đếm chương trình Tất ghi có độ dài 32 bit Câu 1.4: Trong chế độ hoạt động vi xử lý ARM, chế độ chế độ ưu tiên (Privileged mode), chế độ chế độ không ưu tiên (Unprivileged mode), chế độ chế độ ngoại lệ (Exception mode), chế độ chế độ ngoại lệ? Trả lời : Trong chế độ vi xử lý ARM, chế độ User chế độ khơng ưu tiên, cịn lại chế độ chế độ ưu tiên Có hai chế độ User System khơng phải chế độ ngoại lệ, cịn lại chế độ chế độ ngoại lệ Câu 1.5: a) Trong vi xử lý ARM, chế độ người dùng (User mode) có ghi? Kể tên ghi dùng chế độ này? b) Mỗi chế độ hoạt động vi xử lý ARM có tập ghi riêng truy cập (đúng hay sai)? Trả lời : a) Trong chế độ User có tất 18 ghi, có 16 ghi da dụng (R0-R15) ghi hiển thị trạng thái Trong 16 ghi đa dụng có ghi R13R15 ghi chức đặc biệt - R13: Dùng trỏ ngăn xếp - R14: Dùng làm ghi kết nối chứa địa chương trình chạy hàm - R15: Thanh ghi đếm chương trình - Thanh ghi trạng thái chương trình (CPSR) : Chứa thơng tin trạng thái VXL thời điểm - Thanh ghi lưu trữ trạng thái chương trình (SPSR) : Lưu trữ thông tin trạng thái VXL trước VXL chuyển sang chế độ khác b) Đúng Câu 1.6: a) Chế độ hệ thống (System mode) chế độ người dùng (User mode) vi xử lý ARM sử dụng tập ghi (đúng hay sai)? b) Trong ghi trạng thái chương trình vi xử lý ARM, bit I=1 có ý nghĩa gì, bit F=1 có ý nghĩa gì? Trả lời : a) Đúng Chỉ khác chế độ System cho phép thay đổi giá trị CPSR b) I = : Cấm ngắt thường IRQ F = : Cấm ngắt nhanh FIQ Câu 1.7: Trong ghi trạng thái chương trình vi xử lý ARM, bit từ 31-28 có chức gì? Các bít từ 7-0 có chức gì? Trả lời : Các bit từ 31-28 bit cờ trạng thái bit bao gồm N, Z, C, V - N = kết phép tính ALU âm - Z = kết phép tính ALU = - C = kết phép tính ALU có nhớ - V = kết phép tính ALU xảy tượng tràn Bit bit bit ngắt ARM - I = : Cấm ngắt thường IRQ - I = : Cấm ngắt nhanh FIQ Bit bit T biểu diễn trạng thái tập lệnh ARM - T = 1: VXL hoạt động chế độ Thumb 16bit - T = 0: VXL hoạt động chế độ ARM 32bit - Các bit từ 4-0 biểu diễn chế độ hoạt động ARM Câu 1.8: Việc xử lý ngoại lệ (Exception) vi xử lý ARM điều khiển thông qua việc sử dụng vùng nhớ gọi bảng Vector Hãy vẽ bảng vector với địa chỉ? Trả lời : Ngoại lệ Chế độ hoạt động Địa vector Reset (Khởi động lại) Supervisor (Giám sát) 0x00000000 Undefined instruction(Lệnh bị sai) Undefined (Không xác định) 0x00000004 Softwave Interrupt (Ngắt mềm) Supervisor 0x00000008 Prefetch Abort (Không nạp lệnh sai địa chỉ) Abort 0x0000000C Data Abort (Không nạp liệu sai địa chỉ) Abort 0x00000010 Interrupt Interrupt 0x00000018 Fast Interrupt Fast Interrupt 0x0000001C Câu 1.9: a) Trong vi xử lý ARM, truy cập nhớ bắt buộc phải chỉnh (align) kích thước truy cập cách phù hợp? b) Ngoại lệ (Exception) sử dụng để phát truy cập liệu không chỉnh bất hợp lệ? Trả lời : a) Vì ARM cho phép đánh địa ô nhớ theo kích thước byte, byte, 16 byte, 32 byte Do cần phải chỉnh kích thước để truy cập nhớ cách xác b) Alignment exceptions Câu 1.10: Endian có ý nghĩa gì? Bộ vi xử lý ARM7 hỗ trợ loại hệ thống nhớ Endian nào? Mô tả khác loại này? Chế độ mặc định vi xử lý ARM7 loại Endian nào? Trả lời : Endian thuật ngữ dùng để thứ tự ghi byte từ vào nhớ Có loại Endian Big-endian Little endian Trong hệ thống nhớ Big-endian byte có trọng số lớn ghi vào nhớ có địa thấp Trong hệ thống Little-endian, byte có trọng số nhỏ ghi nhớ có địa thấp ARM7 hỗ trợ loại hệ thống nhớ Endian Chế độ mặc định ARM7 Littleendian Câu 1.11: a) Trong vi xử lý ARM, ghi nằm nhóm “thấp” (Low group), ghi nằm nhóm “cao” (High group) tập lệnh Thumb? b) Trong vi xử lý ARM, tất lệnh Thumb buộc phải chỉnh (align) theo biên giới (boundary) nào? Trả lời : a) Nhóm thấp : R0-R7 Nhóm cao : SP, LR, PC b) 32bit 16bit Câu 1.12: a) Khi có reset lõi ARM chế độ (mode) trạng thái (state) nào? b) Trong ghi trạng thái chương trình, bit T=1 lõi ARM hoạt động chế độ nào? Trả lời : a) Khi reset lõi ARM chế độ User cờ trạng thái b) Chế độ Thumb 16bit Câu 1.13: Nêu đặc điểm tập lệnh Thumb? Trả lời : Về chức tập lệnh Thumb giống tập tập lệnh ARM Tất lệnh Thumb có độ dài 16 bit chỉnh theo định dạng haftword-aligned nhớ Do bit có trọng số thấp địa lệnh ln có giá trị Một số lệnh sử dụng bit có trọng số thấp để xác định chế độ làm việc ARM hay Thumb Tất lệnh xử lí liệu Thumb thao tác ghi 32 bit Ngồi lệnh xử lí địa 32 bit để truy cập liệu Giống ARM, tập lệnh Thumb có số khả sau: - Thực lệnh theo điều kiện đặt ra; - Truy cập ghi; - Truy cập dịch Câu 1.14: Thumb tập lệnh bit? Nêu ưu điểm tập lệnh Thumb so với tập lệnh ARM? Trả lời : Các lệnh Thumb có chiều dài 16 bit Ưu điểm Thumb so với ARM: - Do mã lệnh ngắn nên tiết kiệm dung lượng nhớ dành cho chương trình - Hiệu suất cao ARM sai sót trình nạp lệnh vào đệm lệnh Câu 1.15: Nêu đặc điểm tập lệnh ARM? Trả lời : Tất lệnh ARM có chiều dài 32 bit Các lệnh chỉnh 32 bit nên hai bit có trọng số thấp mã lệnh Tuy nhiên, số lệnh sử dụng bit thấp để chuyển chế độ từ ARM sang Thumb ngược lại Các lệnh ARM chia thành nhóm theo chức sau: - Lệnh rẽ nhánh - Lệnh xử lý liệu - Lệnh nạp liệu từ ô nhớ vào ghi đơn ngược lại - Lệnh nạp liệu từ ô nhớ vào ghi ngược lại - Lệnh truy cập ghi trạng thái - Lệnh đồng xử lý Tập lệnh ARM có số khả sau: - Thực lệnh theo điều kiện đặt - Truy cập ghi - Truy cập dịch Câu 1.16: Để chuyển trạng thái ARM Thumb ta cần phải sử dụng lệnh nào? Viết cú pháp lệnh muốn chuyển trạng thái vi xử lý từ ARM sang Thumb ngược lại? Trả lời : Để chuyển đổi trạng thái ARM Thumb ta sử dụng lệnh BX Cú pháp BX Ri - Nếu LSB Ri = chuyển ARM sang Thumb - Nếu LSB Ri = chuyển Thumb sang ARM Câu 1.17: a) Nêu ưu điểm tập lệnh ARM so với tập lệnh Thumb? b) Lệnh MOVNES R1,R4,ASL #3 thực gì? Trả lời : a) - Tập lệnh ARM truy cập nhiều ghi - Tập lệnh ARM hỗ trợ lệnh nhiều địa so với địa tập lệnh Thumb b) Dịch trái số học ghi R4 sau chuyển vào ghi R1 trường hợp giá trị R4 sau dịch khơng R1 Kết có tác động đến cờ Câu 1.18: Nêu giai đoạn (stage) đường ống (pipeline) họ ARM7? Giải thích chức giai đoạn? Trả lời : ARM7 có giai đoạn là: FETCH – Nạp lệnh từ nhớ DECODE – Giải mã lệnh EXECUTE – Thự lệnh Câu 1.19: Mô tả sơ lược cấu trúc vi điều khiển 8051? Vẽ sơ lược sơ đồ chân 8051 Trả lời : Câu 1.20: Mô tả tổ chức nhớ vi điều khiển 8051? Trả lời : Các vi điều khiển thuộc họ 8051 tổ chức thành không gian : Bộ nhớ chương trình nhớ liệu - Bộ nhớ chương trình (ROM, EPROM) nhớ đọc, mở rộng tối đa 64Kbyte - Bộ nhớ liệu (RAM) tồn độc lập so với nhớ chương trình Họ vi điều khiển 8051 có nhớ liệu tích hợp chip nhỏ 128byte mở rộng với nhớ liệu lên tới 64kByte Câu 1.21: Vi điều khiển 8051 hỗ trợ chế độ đánh địa nào? Cho ví dụ ứng với kiểu Trả lời : 8051 hỗ trợ chế độ đánh địa chỉ: Chế độ tức MOV A, #69H ;Nạp giá trị 69H cho ghi A MOV R4, #96 ;Nạp giá trị 96 cho ghi R4 MOV DPTR, #6969H ;Nạp giá trị 6969H cho trỏ liệu DPTR Chế độ đánh địa theo ghi MOV A, R0 ; Sao chép nội dung ghi R0 vào ghi A MOV R2, A ; Sao chép nội dung ghi A vào ghi R0 Chế độ đánh địa trực tiếp MOV R0, 69H ; Lưu nội dung nhớ có địa 69H vào ghi R0 MOV 69H, R0 ; Lưu nội dung ghi R0 vào nhớ có địa 69H Chế độ đánh địa gián tiếp qua ghi MOV A, @R0 ; Chuyển nội dung ô nhớ có địa giá trị R0 vào A MOV @R0, A ; Chuyển nội dung A vào ô nhớ có địa giá trị R0 Chế độ đánh địa số MOVC A, @A+DPTR ; Nạp giá trị trỏ liệu DPTR trỏ A vào A Câu 1.22: Viết chương trình cho vi điều khiển 8051 để chép giá trị 20H vào ngăn nhớ RAM địa 30H đến 34H cách sử dụng chế độ đánh địa trực tiếp Trả lời: ORG 00H MAIN: MOV A, #20H ; Nạp cho ghi A giá trị 20H MOV 30H, A ; Lưu giá trị ghi A vào ô nhớ có địa 30H MOV 31H, A ; Lưu giá trị ghi A vào nhớ có địa 31H MOV 32H, A ; Lưu giá trị ghi A vào nhớ có địa 32H MOV 33H, A ; Lưu giá trị ghi A vào ô nhớ có địa 33H MOV 34H, A ; Lưu giá trị ghi A vào nhớ có địa 34H END Câu 1.23: Viết chương trình cho vi điều khiển 8051 để chép giá trị 20H vào ngăn nhớ RAM địa 30H đến 32H cách sử dụng chế độ đánh địa gián tiếp ghi Trả lời : ORG 00H MAIN: MOV A, #20H ; Nạp cho ghi A giá trị 20H MOV R0, #30H ; Nạp cho ghi R0 giá trị 30H MOV R1, #31H ; Nạp cho ghi R1 giá trị 31H MOV R2, #32H ; Nạp cho ghi R2 giá trị 32H MOV @R0, A ; Lưu giá trị ghi A vào ô nhớ trỏ R0 MOV @R1, A ; Lưu giá trị ghi A vào ô nhớ trỏ R1 MOV @R2, A ; Lưu giá trị ghi A vào ô nhớ trỏ R2 END Câu 1.24: Viết chương trình cho vi điều khiển 8051 để chép giá trị 20H vào ngăn nhớ RAM địa 30H đến 36H cách sử dụng vòng lặp chế độ đánh địa gián tiếp ghi Trả lời : ORG 00H MAIN: LOOP: MOV A, #20H ; Nạp cho ghi A giá trị 20H MOV R0, #30H ; Nạp cho ghi R0 giá trị 30H MOV @R0, A ; Lưu giá trị ghi A vào ô nhớ trỏ R0 INC R0 ; Tăng giá trị ghi R0 thêm CJNE R0, #37H, LOOP ; So sánh nhảy đến LOOP R0 khác #37H END Câu 1.25: Viết đoạn chương trình cho vi điều khiển 8051 để tạo chuỗi xung vuông với độ đầy xung 50% bit cổng Giả sử có hàm tạo trễ DELAY Trả lời : Độ đầy xung 50% => Time cao = time thấp ORG 00H MAIN: DELAY: CPL P1.2 ; Đảo trạng thái P1.2 CALL DELAY ; Gọi hàm DELAY SJMP MAIN ; Trở lại MAIN …………… ; Hàm có sẵn RET END Câu 1.26: Viết đoạn chương trình cho vi điều khiển 8051 để tạo chuỗi xung vuông với độ đầy xung 75% bit cổng Giả sử có hàm tạo trễ DELAY Trả lời : Độ đầy xung 75% => Time cao = time thấp ORG 00H MAIN: SETB P1.0 ; P1.0 = CALL DELAY ; Gọi hàm DELAY CALL DELAY ; Gọi hàm DELAY CALL DELAY ; Gọi hàm DELAY CLEAR P1.0 ; P1.0 = CALL DELAY ; Gọi hàm DELAY TH = 0FFH TL = 83H ORG 00H MAIN: MOV TMOD, #10H ; Timer1 chế độ LOOP: MOV TL1, #0FFH ; Nạp TL1 MOV TH1, #83H ; Nạp TH1 SETB TR1 ; Khởi động định thời JNB TF1, $ ; Lặp TF1 = CLR TR1 ; Dừng định thời CLR TF1 ; Xóa cờ TF CPL P2.1 ; P2.1 = ~P1.0 SJMP LOOP ; Quay trở lại LOOP END Câu 2.17: Giả sử xung đồng hồ cấp tới chân P3.4 vi điều khiển 8051 Màn hình hiển thị nối với 8051 cổng P2 để đếm số xung Hãy viết chương trình hợp ngữ cho đếm Timer0 chế độ để đếm xung hiển thị trạng thái số đếm TL0 cổng P2 Trả lời: ORG 00H MOV TMOD, #6H ; Timer0 chế độ 2, C/T=1 MOV TL0, #0H ; Nạp TL0 giá trị ban đầu LOOP1: SETB TR0 ; Khởi động Timer0 LOOP2: MOV A, TL0 ; Chuyển giá trị từ TL0 vào A MOV P2, A ; Hiển thị giá trị JNB TF0, LOOP2 ; Lặp lại cờ chưa tràn CLR TR0 ; Dừng định thời CLR TF0 ; Xóa cờ TF MOV TL0, #0H ; Nạp lại TL0 SJMP LOOP1 ; Chạy lại Timer0 MAIN: END Câu 2.18: Hãy viết chương trình hợp ngữ cho vi điều khiển 8051 để truyền nối tiếp liên tục chữ “PTIT” với tốc độ 9600 baud Thanh ghi điều khiển SCON làm việc chế độ Trả lời: Chọn Timer1 chế độ Giả sử thạch anh sử dụng có tần số 11.0592MHz => Để đạt tốc độ Baud = 9600 giá trị cần nạp cho TH = 0FDH MAIN: LOOP: SEND: ORG 00H MOV TMOD, #20H ; Timer chế độ MOV TH1, #0FDH ; Cài đặt tốc độ baud = 9600 MOV SCON, #50H ; Chọn chế độ UART bit data SETB TR1 ; Khởi động Timer1 MOV A, #“P” ; Nạp A = “P” CALL SEND ; Gọi hàm SEND MOV A, #“T” ; Nạp A = “T” CALL SEND ; Gọi hàm SEND MOV A, #“I” ; Nạp A = “I” CALL SEND ; Gọi hàm SEND MOV A, #“T” ; Nạp A = “T” CALL SEND ; Gọi hàm SEND SJMP LOOP ; Quay lại LOOP MOV SBUF, A ; SBUF = A JNB TI, $ ; Lặp đến cờ TI bật lên CLR TI ; Xóa cờ TI RET ; Quay lại chương trình END Câu 2.19: Viết chương trình hợp ngữ cho vi điều khiển 8051 để phát chuỗi mã ASCII kết thúc ký tự null (mã ASCII 00H) cổng nối tiếp P2 (không gửi ký tự null) Giả sử chuỗi mã ASCII nằm RAM bắt đầu địa 3000H Chế độ truyền UART bit, tốc độ 2400 baud, tần số dao động thạch là 12MHz Trả lời : Để đạt tốc độ Baud = 2400 giá trị cần nạp cho TH = 0F3H MAIN: LOOP: SEND: EXIT: ORG 00H MOV DPTR, #3000H ; DPTR = #3000H MOV TMOD, #20H ; Timer chế độ MOV TH1, #0F3H ; Cài đặt tốc độ baud = 2400 MOV SCON, #50H ; Chọn chế độ UART bit data SETB TR1 ; Khởi động Timer1 MOVX A, @DPTR ; Nạp cho A giá trị nhớ RAM ngồi trỏ DPTR CJNE A, #0H, SEND ; Nhảy đến SEND A khác null SJMP EXIT ; Nhảy đến EXIT MOV SUBF, A ; Nạp SBUF = A JNB TI, $ ; Chờ chuyển xong liệu CLR TI ; Xóa cờ TI INC DPTR ; Tăng DPTR SJMP LOOP ; Quay lại LOOP END Câu 2.20: Hãy viết chương trình hợp ngữ cho vi điều khiển 8051 để nhận byte liệu nối tiếp liên tục với tốc độ 9600 baud Dữ liệu sau gửi cổng P2 Thanh ghi điều khiển SCON làm việc chế độ Trả lời: Chọn Timer1 chế độ Giả sử thạch anh sử dụng có tần số 11.0592MHz => Để đạt tốc độ Baud = 9600 giá trị cần nạp cho TH = 0FDH MAIN: LOOP: ORG 00H MOV TMOD, #20H ; Timer chế độ MOV TH1, #0FDH ; Cài đặt tốc độ baud = 9600 MOV SCON, #50H ; Chọn chế độ UART bit data SETB TR1 ; Khởi động Timer1 JNB RI, $ ; Lặp đến nhận kí tự MOV A, SBUF ; Chuyển kí tự nhận vào A MOV P2, A ; Gửi P2 CLR RI ; Xóa RI SJMP LOOP ; Quay lại LOOP END Câu 2.21: Viết chương trình hợp ngữ cho vi điều khiển 8051 để nhận chuỗi mã ASCII kết thúc ký tự CR (mã ASCII 13H) từ cổng nối tiếp P1 (không nhận ký tự CR) Chuỗi mã nhận cất vào RAM nội địa 40H Chế độ truyền UART bit, tốc độ 2400 baud, tần số dao động thạch là 12MHz Trả lời : Để đạt tốc độ baud = 2400 => TH = 0F3H MAIN: LOOP: SAVE: EXIT: ORG 00H MOV R0, #40H MOV TMOD, #20H ; Timer chế độ MOV TH1, #0F3H ; Cài đặt tốc độ baud = 2400 MOV SCON, #50H ; Chọn chế độ UART bit data SETB TR1 ; Khởi động Timer1 JNB RI, $ ; Lặp đến nhận kí tự MOV A, SBUF ; Chuyển kí tự nhận vào A CJNE A, #13H, SAVE ; Nhảy đến SAVE A khác #13H SJMP EXIT ; Nhảy đến EXIT MOV @R0, A ; Lưu giá trị A vào ô nhớ trỏ R0 INC R0 ; Tăng R0 CLR RI ; Xóa RI SJMP LOOP ; Quay trở lại LOOP END ; Kết thúc Câu 2.22: Viết chương trình hợp ngữ cho vi điều khiển 8051 điều kiển LED đơn chân P2.0 nhấp nháy với tần số 2000Hz, thời gian nghỉ thời gian sáng, sử dụng ngắt Timer0 chế độ Biết tần số thạch anh sử dụng 12MHz Trả lời: Fmáy = 1/12 = 1MHz => Tmáy = 1us F = 2000Hz => T = 1/2000 = 500us => Tcần = 250us Số chu kì máy cần tạo = 250/1 = 250 ckm Giá trị nạp = 65536 – 250 = FF06 => TH0 = 0FFH; TL0 = 6H MAIN: NGAT: ORG 00H LJMP MAIN ; Nhảy đến chương trình ORG 0BH ; Địa vùng nhớ ngắt Timer LJMP NGAT ; Nhảy đến trình phục vụ ngắt ORG 30H ; Bắt đầu sau bảng ngắt MOV TMOD, #1H ; Timer0 chế độ MOV TH0, #0FFH ; Nạp TH MOV TL0, #6H ; Nạp TL MOV IE, #82H ; Ngắt Timer0 SETB TR0 ; Khởi động Timer0 SJMP $ ; while(1) ORG 100H ; Ghi chương trình ngắt địa 100H CPL P2.0 ; Đảo P2.0 MOV TH0, #0FFH ; Nạp ghi TH MOV TL0, #6H ; Nạp ghi TL RETI ; Trở lại chương trình END Câu 2.23: Viết chương trình hợp ngữ cho vi điều khiển 8051 tạo xung vuông chân P2.1 ngắt Timer1 chế độ Xung có tần số 1000Hz độ rộng xung 50% chu kỳ xung Biết tần số thạch anh sử dụng 12MHz Trả lời: Fmáy = 1/12 = 1MHz => Tmáy = 1us F = 2000Hz => T = 1/1000 = 1000us => Tcần = 500us Số chu kì máy cần tạo = 500/1 = 500 ckm Giá trị nạp = 65536 – 500 = 65036 = FE0C => TH1 = 0FEH; TL1 = 0CH MAIN: NGAT: ORG 00H LJMP MAIN ; Nhảy đến chương trình ORG 1BH ; Địa vùng nhớ ngắt Timer LJMP NGAT ; Nhảy đến trình phục vụ ngắt ORG 30H ; Bắt đầu sau bảng ngắt MOV TMOD, #10H ; Timer1 chế độ MOV TH1, #0FCH ; Nạp TH MOV TL1, 0C#H ; Nạp TL MOV IE, #88H ; Ngắt Timer1 SETB TR1 ; Khởi động Timer1 SJMP $ ; while(1) ORG 100H ; Ghi chương trình ngắt địa 100H CPL P2.1 ; Đảo P2.1 MOV TH1, #0FCH ; Nạp ghi TH MOV TL1, #0CH ; Nạp ghi TL RETI ; Trở lại chương trình END Câu 2.24: Giả sử chân INT0 vi điều khiển 8051 nối đến cơng tắc bình thường mức cao Viết chương trình hợp ngữ sử dụng ngắt phần cứng ngồi INT0 để cơng tắc chuyển xuống mức thấp đèn LED nối với chân P1.1 bật sáng Khi công tắc chuyển lên mức cao đèn LED tắt Trả lời: ORG 00H LJMP MAIN ; Nhảy đến MAIN ORG 3H ; Địa phục vụ trình ngắt ngồi SETB P1.1 ; Bật P1.1 RETI MAIN: ; Trở lại chương trình ORG 30H ; Bắt đầu sau bảng Vector ngắt MOV IE, #81H ; Cho phép ngắt CLR P1.1 ; Tắt Led END Câu hỏi loại điểm Câu 3.1: Viết chương trình hợp ngữ ARM thực việc trừ hai số 32 bit: số thứ trừ số thứ hai, kết lưu vào ô nhớ chứa số thứ Đầu vào: Số thứ = 28C3E123, Số thứ Đầu ra: = 1254AB02 Số thứ = kết phép trừ Xác định kết phép trừ? Trả lời : AREA PROGRAM,CODE,READONLY ENTRY MAIN LDR R0, Sothunhat ; Nạp Sothunhat vào R0 LDR R1, Sothuhai ; Nạp Sothunhai vào R1 SUBB A, R0, R1 ; A = R0 – R1 STR A, Sothunhat ; Lưu A vào Sothunhat SWI &11 ; Thốt khỏi chương trình Sothunhat DCD &28C3E123 ; Khai báo số thứ Sothuhai DCD &1254AB02 ; Khai báo số thứ hai END Kết phép tính 166F3621 Câu 3.2: Viết chương trình hợp ngữ ARM thực việc xác định số nhỏ số sau: Số thứ = 23456781 Số thứ hai = 2B123A49 Kết lưu vào biến Result Trả lời: AREA PROGRAM,CODE,READONLY ENTRY MAIN LDR R0, Sothunhat ; Nạp Sothunhat cho R0 LDR R1, Sothuhai ; Nạp Sothuhai cho R1 SUBS R2, R0, R1 ; R2 = R0 – R1 có ảnh hưởng N,Z,C,V STRPL R0, Result ; Result = R0 N=0 (R0>R1) STRML R1, Result ; Result = R1 N=1 (R0