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
5 trang |
Chia sẻ: hoang10 | Lượt xem: 873 | Lượt tải: 0
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