1. Trang chủ
  2. » Tất cả

132-VXL-Kiểm tra-Đáp án

5 0 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

ĐHQG TPHCM–ĐH Bách Khoa Khoa Đ-ĐT–BM Điện Tử GV soạn đáp án: Hồ Trung Mỹ Điểm Đề kiểm tra giửa HK – NH: 2013-2014 Môn: Vi xử lý – Mã MH: 402030 Ngày thi: 26/03/2014 – Thời gian làm bài: 75 phút Đề có trang SV làm trực tiếp đề (SV sử dụng tài liệu mình, KHƠNG dùng Laptop) Chữ ký giám thị Họ tên SV: MSSV: Nhóm: Bộ môn Điện Tử duyệt GV đề Hồ Trung Mỹ Câu 1: (2 đ) Mạch giải mã địa cho nhớ (có số bit liệu 8) dùng 74138 hình sau: a) Xác định vùng địa ngõ /Yi: A15 A14 A13 A12 0 0 0 0 0 0 1 1 0 1 0 1 1 1 A11 A10 A9 A8 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X A7 A6 A5 A4 X X X X X X X X X X X X X X X X XX XX XX XX XX XX XX XX A3 A2 A1 A0 X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Vùng địa (hex) /Y0: 0000 – 0FFF /Y1: 1000 – 1FFF /Y2: 2000 – 2FFF /Y3: 3000 – 3FFF /Y4: 4000 – 4FFF /Y5: 5000 – 5FFF /Y6: 6000 – 6FFF /Y7: 7000 – 7FFF b) Từ mạch giải mã trên, sử dụng thêm cổng logic cần thiết để tạo tín hiệu chọn chip /CS0, /CS1 (giải mã địa toàn phần) tích cực thấp có vùng địa sau Vẽ hình trực tiếp lên mạch giải mã địa phía Tín hiệu chọn chip Vùng địa (Hex) /CS0 1000 – 2FFF /CS1 5400 – 57FF Đáp án VXL_KTGHK_AY1314-S2_trang 1/5 Câu 2: (3 đ) a) (1 đ) Cho trước mạch giải mã địa nhớ sau: Mạch giải mã địa ban đầu Mạch giải mã địa i) (0.5 đ) Bộ nhớ có vùng địa là: A8000H – AFFFFH ii) (0.5 đ) Vẽ lại mạch giải mã địa (không cần vẽ lại nhớ) để có địa bắt đầu 50000H Chỉ dùng cổng logic để thiết kế mạch b) (0.5 đ) Điền vào bảng sau giá trị biến byte X (bắt đầu từ địa chì 1000H) Y (bắt đầu từ địa chì 1002H) xếp thứ tự byte nhớ theo: i) little endian ii) big endian Địa chì Nội dung 1000H A5H 1001H 42H 1002H 27H 1003H C3H Little Endian Biến byte Big Endian Dạng hex Dạng thập phân có dấu Dạng hex Dạng thập phân có dấu X 42A5H +17061 A542H –23230 Y C327H –15577 27C3H +10179 c) (0.5 đ) Hãy cho biết giá trị cờ ghi F Z80 sau thực thi lệnh sau: LD ADD 75H 6CH Tổng A, 75H A, 6CH 1 1 0 +  1 1 1 1 0 1 0 0 Nhớ Cờ S C H P/V Trước 0 0 Sau 1 d) (1 đ) Viết “từ điều khiển” để thực phép toán sau: R3  x R1/4 – x (bù R2) Các tác vụ Chú thích Từ điểu khiển SELA SELB SELD OPR R3  R1/2 Dịch phải = chia 001 000 011 10000 R3  R3/2 = R1/4 Dịch phải = chia 011 000 011 10000 R3  R3 + R1 R1/4 + R1 = 5R1/4 011 001 011 00010 010 000 010 01110 R2  bù R2 R2  R2 + R2 = bù R2 010 000 010 00001 R4  R2 + R2 R4 = x (bù R2) 010 010 100 00010 R4  R4 + R2 R4 = x (bù R2) 100 010 100 00010 R3  R3 – R4 R3 = 5R1/4 – x (bù R2) 011 100 011 00101 Đáp án VXL_KTGHK_AY1314-S2_trang 2/5  Ý nghĩa vùng “từ điều khiển”: Mã nhị phân SELA SELB OPR Tác vụ 00000 Chuyển A (output = A) 00001 Tăng A thêm 00010 A+B 00101 A–B 00110 Giảm A 01000 A AND B 01010 A OR B 01100 A XOR B 01110 Bù A 10000 Dịch phải A 11000 Dịch trái A SELD 000 Input Input Output 001 R1 R1 R1 010 R2 R2 R2 011 R3 R3 R3 100 R4 R4 R4 101 R5 R5 R5 110 R6 R6 R6 111 R7 R7 R7 Ký hiệu TSFA INCA ADD SUB DECA AND OR XOR COMA SHRA SHLA Câu 3: (2.5 đ) a) (1 đ) Trước thực thi đoạn chương trình Z80 sau, giả sử nội dung ghi: HL = 0203H, IX = 0204H, DE = 5678H, SP = 0205H Bộ nhớ Hợp ngữ Z80 A D E SP LD A, (IX + 2) 02H _ _ _ Địa SRAM Trị 0200H A5H 0201H 47H 04H LD E, (IX – 3) _ _ 47H _ 0202H 19H 02H LD D, (HL) _ C6H _ _ 0203H C6H 47H PUSH DE _ _ _ 0203H 0204H E8H C6H INC HL _ _ _ _ 0205H 13H PUSH HL _ _ _ 0201H 0206H 02H Đoạn chương trình thực thi liên tục, điền vào bảng ghi có trị bị thay đổi sau Z80 thực thi dịng lệnh nội dung nhớ bị thay đổi b) (0.5 đ) Hãy cho biết cách định địa toán hạng lệnh sau: Định địa Lệnh Z80 Toán hạng Toán hạng LD A, (IX + 2) Thanh ghi Chỉ số LD D, (HL) Thanh ghi Gián tiếp ghi c) (0.5 đ) Hãy đánh dấu  vào có mã điều kiện (cc) làm cho đoạn chương trình sau nhảy đến nhãn CONT Thí dụ cc = NC xét xem lệnh JR NC, CONT có nhảy đến nhãn CONT khơng? Nếu có đánh dấu  vào ô NC bảng (giả sử A chứa giá trị 12) Chuỗi lệnh CP –18 JR cc, CONT C NC Z  NZ  d) (0.5 đ) Lệnh nhảy JR NEXT có mã máy chứa nhớ chương trình 18H, 57H Nếu lệnh bắt đầu địa 0218H, nhãn NEXT có địa bao nhiêu? Tại sao? Ta có: Địa lệnh kế = địa lệnh + chiều dài lệnh = 0218H + = 021AH Địa nhảy đến (NEXT) = Địa lệnh kế + offset = 021AH + 57H = 0271H Câu 4: (1.5 đ) Phân tích chương trình hợp ngữ Z80 Giả sử ta có sẵn nhớ địa 0200H nội dung sau: 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 nghĩa (0200H) = 0, (0201H) = 1, , (0209H) = 81 Đáp án VXL_KTGHK_AY1314-S2_trang 3/5 Bài làm Chương trình ORG 100H LD H,02H IN A,(01H) AND CP JR Z, L1 CP JR Z,L3 JR NC,L4 L2: SRA B SRA B SLA C LD A,B ADD A,C JR Fin L1: LD A,B SUB C JP P, Nxt NEG Nxt: JR Fin L3: LD A,B CP C JR NC,Fin LD A,C JR Fin L4: LD A,B AND 0FH LD L,A LD A,(HL) Fin: LD (Result),A Here: JR Here ORG 200H DEFB DEFB DEFB DEFB DEFB 16 DEFB 25 DEFB 36 DEFB 49 DEFB 64 DEFB 81 END a) (0.5 đ) Giả sử B C chứa giá trị nguyên không dấu nhỏ 10, tính giá trị cất vào nhớ Result với trường hợp sau: A B C (Result) 7 15 7 25 Chú ý: giá trị A bảng giá trị sau lệnh AND b) (1 đ) Hãy điền vào bảng hoạt động chương trình (Chú ý: B C chứa giá trị ngun khơng dấu < 10) A Phép tính (Result) = | B – C | (Result) = B/4 + x C (Result) = max(B, C) (Result) = B x B = B2 Result: DEFS Câu 5: (1 đ) Lập trình hợp ngữ Z80 a) (0.5 đ) Viết chương trình BCD2Bin để đổi số BCD ký số ghi A thành số nhị phân tương ứng đặt lại vào ghi A b) (0.5 đ) Viết đoạn chương trình địa 100H thực chuyển byte (mỗi byte số BCD ký số) vùng có địa đầu 0220H sang vùng có địa đầu 0230H, trước điền byte vào vùng đổi sang nhị phân Chương trình BCD2Bin Đoạn chương trình áp dụng BCD2Bin BCD2Bin: LD D,A ; A = abH (dạng BCD) AND 0FH ; A = 0bH = b LD E,A ; E = 0bH = b LD A,D AND 0F0H ; A = a0H cờ CY = RLCA ; RRCA RLCA RLCA RLCA ; A = 0aH ADD A,A ; A = 2a LD D,A ; D = 2a ADD A,A ; A = 2a + 2a = 4a ADD A,A ; A = 4a + 4a = 8a ADD A,D ; A = 8a + 2a = 10a ADD A,E ; A = 10a + b (dạng binary) RET ORG LD LD LD Loop: LD CALL LD INC INC DJNZ Here: JR 100h B,5 HL,0220H IX,0230H A,(HL) BCD2Bin (IX+0),A HL IX Loop Here Kết thúc kiểm tra Đáp án VXL_KTGHK_AY1314-S2_trang 4/5 Phụ lục: Các cách giải khác cho câu 1) Tối ưu mã cho cách giải: Chương trình BCD2Bin BCD2Bin: LD D,A ; A = abH (dạng BCD) AND 0FH ; A = 0bH = b LD E,A ; E = 0bH = b LD A,D AND 0F0H ; A = a0H cờ CY = RRCA ; A = a0H/2 = 16a/2 = 8a LD D,A ; D = 8a RRCA ; A = 8a/2 = 4a RRCA ; A = 4a/2 = 2a ADD A,D; A = 2a + 8a = 10a ADD A,E ; A = 10a + b (dạng binary) RET ; Nhận xét: ;

Ngày đăng: 24/12/2018, 11:34

w