Đáp án của Đề kiểm tra giửa học kì 2 - Môn: Vi xử lý – Mã MH: 402030

VXL_KTGHK_AY1112-S2_trang 1/4 Câu 1: (3 đ) Mạch giải mã địa chỉ cho các bộ nhớ (có số bit dữ liệu là 8) dùng 74138 như hình sau: a) Xác định vùng địa chỉ của các ngõ ra /Yi: A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vùng địa chỉ (HEX) 1 0 1 1 0 0 0 X X X X X X X X X X X X X /Y1: B2000–B3FFF 1 0 1 1 0 0 1 X X X X X X X X X X X X X /Y1: B2000–B3FFF 1 0 1 1 0 1 0 X X X X X X X X X X X X X /Y2: B4000–B5FFF 1 0 1 1 0 1 1 X X X X X X X X X X X X X /Y3: B6000–B7FFF 1 0 1 1 1 0 0 X X X X X X X X X X X X X /Y4: B8000–B9FFF 1 0 1 1 1 0 1 X X X X X X X X X X X X X /Y5: BA000–BBFFF 1 0 1 1 1 1 0 X X X X X X X X X X X X X /Y6: BC000–BDFFF 1 0 1 1 1 1 1 X X X X X X X X X X X X X /Y7: BE000–BFFFF b) Từ mạch giải mã trên, sử dụng thêm các cổng logic cần thiết để tạo ra các tín hiệu chọn chip /CS0, /CS1, /CS2 (giải mã địa chỉ toàn phần) tích cực thấp và có các vùng địa chỉ liên tục. Vẽ hình trực tiếp lên mạch giải mã phía trên. Tín hiệu chọn chip Vùng địa chỉ (Hex) /CS0 (24 KB) B0000–B5FFF /CS1 ( 4 KB) B6000–B6FFF /CS2 (14 KB) B7000–BA7FF

pdf5 trang | Chia sẻ: hoang10 | Lượt xem: 741 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Đáp án của Đề kiểm tra giửa học kì 2 - Môn: Vi xử lý – Mã MH: 402030, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
ĐHQG TPHCM–ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử Chữ ký giám thị Đáp án của Đề kiểm tra giửa HK 2 – NH:2011-2012 Điểm Môn: Vi xử lý – Mã MH:402030 Ngày thi: 04/04/2012 – Thời gian làm bài: 80 phút Đề có 4 trang và SV làm trực tiếp trên đề. (SV được sử dụng tài liệu của mình, KHÔNG được dùng máy tính) Họ và tên SV: __________________________ MSSV: ____________ Nhóm: ______ Bộ môn Điện Tử duyệt GV ra đề Hồ Trung Mỹ Câu 1: (3 đ) Mạch giải mã địa chỉ cho các bộ nhớ (có số bit dữ liệu là 8) dùng 74138 như hình sau: a) Xác định vùng địa chỉ của các ngõ ra /Yi: A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 Vùng địa chỉ (HEX) 1 0 1 1 0 0 0 X X X X X X X X X X X X X /Y1: B2000–B3FFF 1 0 1 1 0 0 1 X X X X X X X X X X X X X /Y1: B2000–B3FFF 1 0 1 1 0 1 0 X X X X X X X X X X X X X /Y2: B4000–B5FFF 1 0 1 1 0 1 1 X X X X X X X X X X X X X /Y3: B6000–B7FFF 1 0 1 1 1 0 0 X X X X X X X X X X X X X /Y4: B8000–B9FFF 1 0 1 1 1 0 1 X X X X X X X X X X X X X /Y5: BA000–BBFFF 1 0 1 1 1 1 0 X X X X X X X X X X X X X /Y6: BC000–BDFFF 1 0 1 1 1 1 1 X X X X X X X X X X X X X /Y7: BE000–BFFFF b) Từ mạch giải mã trên, sử dụng thêm các cổng logic cần thiết để tạo ra các tín hiệu chọn chip /CS0, /CS1, /CS2 (giải mã địa chỉ toàn phần) tích cực thấp và có các vùng địa chỉ liên tục. Vẽ hình trực tiếp lên mạch giải mã phía trên. Tín hiệu chọn chip Vùng địa chỉ (Hex) /CS0 (24 KB) B0000–B5FFF /CS1 ( 4 KB) B6000–B6FFF /CS2 (14 KB) B7000–BA7FF VXL_KTGHK_AY1112-S2_trang 1/4 Câu 2: (1 đ) Vẽ thêm các đường kết nối (có thể dùng thêm các cổng logic) CPU với ROM và RAM tĩnh để CPU có thể truy cập ROM 8Kx8 với vùng địa chỉ (hex): 0000–1FFF và RAM 8Kx8 với vùng địa chỉ (hex): 4000–5FFF Xem cách giải khác dùng giải mã toàn phần ở phần phụ lục! Chú ý:  Các tín hiệu RD và WR của CPU không bao giờ đồng thời bằng 0.  Đường R/W của RAM = 1 là cho phép đọc và = 0 là cho phép ghi. Câu 3: (1 đ) Viết các lệnh Z80 để thực hiện các công việc sau: Công việc Các lệnh Z80 a) Nạp giá trị 23H vào thanh ghi E và nạp giá Chỉ dùng 1 lệnh: LD DE, 5723H trị 57H vào thanh ghi D b) Xóa cờ carry C Chỉ dùng 1 lệnh: OR A (hoặc AND A hoặc XOR A hoặc CP A) c) Hoán đổi 4 bit thấp và 4 bit cao của thanh Tối đa 4 lệnh: RRCA (hoặc dùng toàn RLCA) ghi A RRCA RRCA RRCA d) Nạp giá trị 28H vào ô nhớ có địa chỉ là 200H Tối đa 2 lệnh: LD A,28H LD (0200H), A Câu 4: (1 đ) Cho trước đoạn chương trình hợp ngữ Z80 sau: Địa chỉ (hex) Mã máy (hex) Nhãn Lệnh 0100 B8 L1: CP B 0101 28 MM JR Z, L2 0103 3D DEC A 0104 10 NN DJNZ L1 0106 76 L2: HALT Các byte MM và NN (hex) có giá trị sau: (byte thấp của phép toán trừ 2 số 16 bit) MM = 0106H – 0103H = 03H NN = 0100H – 0106H = FAH VXL_KTGHK_AY1112-S2_trang 2/4 Câu 5: (2 đ) Phân tích đoạn chương trình hợp ngữ Z80 sau bằng cách ghi các giá trị hex ở các thanh ghi trong bảng sau khi thực hiện lệnh và giá trị 0 hay 1 cho các cờ C và Z. Chương trình Lần lặp 1 (0.5đ) Lần lặp 2 (0.5đ) Lần lặp 3 (0.5đ) ORG 100H LD B,3 LD HL,TABLE XOR A LD D,A LD E,A L1: LD A,(HL) A = 78H A = 85H A = 83H BIT 7,A Cờ Z = 1 Cờ Z = 0 Cờ Z = 0 JR Z,L2 NEG L2: ADD A,E Cờ C = 0 Cờ C = 0 Cờ C = 1 LD E,A E = 78H E = F3H E = 70H LD A,D ADC A,0 LD D,A D = 00H D = 00H D = 01H INC HL DE = 120 + 123 + 125 DJNZ L1 = 368 = 0170H JR $ TABLE: DEFB 120 DEFB -123 DEFB -125 DEFB 57 Ý nghĩa của đoạn chương trình trên là: (0.5 đ) Tính tổng trị tuyệt đối của N phần tử đầu trong bảng (N là giá trị ở trong B) Câu 6: (1 đ) a) Viết chương trình con AND_8 để thực hiện AND 8 bit trong thanh ghi A và kết quả đặt ở cờ C (thí dụ: nếu A = 0FH thì cờ C = 0, nếu A = FFH thì cờ C = 1). b) Viết đoạn chương trình gọi AND_8 để thực hiện AND 4 bit thấp của thanh ghi A và kết quả đặt ở LSB của thanh ghi B (thí dụ A= 5FH thì LSB của B là 1, nếu A = 2EH thì LSB của B là 0) Chương trình con AND_8 Đoạn chương trình thực hiện AND 4 bit thấp của A ; Chuong trinh con AND 8 bit . . . AND_8: CP 0FFH ; A đã chứa trị cần tính JR Z,AND_8_1 OR 0F0H AND A ; cờ C = 0 CALL AND_8 RET JR C,OUT_1 AND_8_1: RES 0,B ; LSB của B = 0 SCF ; cờ C = 1 JR NEXT RET OUT_1: SET 0,B ; LSB của B = 1 NEXT: . . . ; Có các khác làm cho cờ C=0: ; STC ; C = 1 ; CCF ; C = NOT(C)=0 VXL_KTGHK_AY1112-S2_trang 3/4 Câu 7: (1 đ) a) Viết chương trình con a_z2A_Z bằng hợp ngữ Z80 kiểm tra nội dung của thanh ghi A nếu thuộc ký tự chữ thường (thuộc tập ký tự từ ‘a’ đến ‘z’) thì biến đổi nó thành ký tự chữ in hoa (thuộc tập ký tự từ ‘A’ đến ‘Z’), ngược lại thì không thay đổi nội dung thanh ghi A. Biết mã ASCII của các ký tự ‘a’ đến ‘z’ là 61H đến 7AH và mã ASCII của các ký tự ‘A’ đến ‘Z’ là 41H đến 5AH. (0.5 đ) a_z2A_Z: CP 'a' ; hoặc CP 61H RET C CP 'z'+1 ; hoặc CP 7BH RET NC ADD A,'A'-'a' ; hoặc ADD A,0E0H hoặc ADD A,-20H RET Có thể viết theo cách khác: A_z2A_Z: CP 'a' ; hoặc CP 61H JR C,KTHUC CP 'z'+1 ; hoặc CP 7BH JR NC,KTHUC SUB 20H ; ‘A’ = ‘a’ – 20H KTHUC: RET b) Viết đoạn chương trình gọi chương trình con ở a) để thực hiện biến đổi các ký tự chữ thường sang chữ hoa trong chuỗi ký tự được khai báo với nhãn STRING có kết thúc chuỗi là ký tự NULL (mã ASCII là 0). (0.5 đ) Thí dụ: STRING: DB ‘H’, ’e’, ’l’, ‘l’, ‘o’, 0 (trong bộ nhớ chứa “Hello”) Sau khi chạy đoạn chương trình này, ta thấy trong bộ nhớ có nội dung giống như ta định nghĩa STRING: DB ‘H’, ’E’, ’L’, ‘L’, ‘O’, 0 Bài giải. LD HL,STRING LOOP: LD A,(HL) CP 0 ; kiểm tra xem có đến ký tự NULL chưa? JR Z,NEXT CALL a_z2A_Z LD (HL),A INC HL JR LOOP NEXT: JR $ ; Phần định nghĩa STRING có thể xem như cho trước, không ghi cũng được STRING: DEFB 'H' DEFB 'e' DEFB 'l' DEFB 'l' DEFB 'o' DEFB 0 Kết thúc bài kiểm tra VXL_KTGHK_AY1112-S2_trang 4/4 Phụ lục: Một đáp số khác của câu 2 dùng giải mã địa chỉ toàn phần: VXL_KTGHK_AY1112-S2_trang 5/4