Đề kiểm tra giữa học kỳ 2 môn Vi xử lý - Năm học 2013-2014 - Hồ Trung Mỹ
Đ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 2 – NH: 2013-2014
Chữ ký giám thị
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ó 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 Laptop)
Họ và tên SV: __________________________ MSSV: ____________ Nhóm: ______
Bộ môn Điện Tử duyệt
GV ra đề
Hồ Trung Mỹ
Câu 1: (2 đ)
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:
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Vùng địa chỉ (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
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
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 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 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
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 (giải mã địa chỉ toàn phần) tích cực thấp và có các vùng địa chỉ sau. Vẽ hình trực tiếp lên
mạch giải mã địa chỉ phía trên.
Tín hiệu chọn chip
/CS0
Vùng địa chỉ (Hex)
1000 – 2FFF
/CS1
5400 – 57FF
Đáp án của VXL_KTGHK_AY1314-S2_trang 1/5
Câu 2: (3 đ)
a) (1 đ) Cho trước các mạch giải mã địa chỉ bộ nhớ sau:
Mạch giải mã địa chỉ ban đầu
Mạch giải mã địa chỉ mới
i) (0.5 đ) Bộ nhớ này có vùng địa chỉ là: A8000H – AFFFFH
ii) (0.5 đ) Vẽ lại mạch giải mã địa chỉ mới (không cần vẽ lại bộ nhớ) để có địa chỉ bắt đầu là 50000H. Chỉ
dùng các cổng logic để thiết kế mạch.
b) (0.5 đ) Điền vào bảng sau giá trị của các biến 2 byte X (bắt đầu từ địa chì 1000H) và Y (bắt đầu từ địa
chì 1002H) nếu sắp xếp thứ tự byte trong bộ nhớ theo: i) little endian và ii) big endian.
Địa chì Nội dung
Little Endian
Big Endian
Dạng thập phân
1000H
1001H
1002H
1003H
A5H
42H
27H
C3H
Biến 2 byte
Dạng thập phân
Dạng hex
Dạng hex
có dấu
+17061
–15577
có dấu
–23230
+10179
42A5H
C327H
A542H
27C3H
X
Y
c) (0.5 đ) Hãy cho biết giá trị của các cờ trong thanh ghi F của Z80 sau khi thực thi các lệnh sau:
LD
A, 75H
ADD A, 6CH
0
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
1
0
0
1
1
0
0
0
0
0
0
1
0
1
Nhớ
Cờ
S
0
C
0
H
0
P/V
0
75H
6CH
Trước
+
Tổng
Sau
1
0
1
1
d) (1 đ) Viết các “từ điều khiển” để thực hiện phép toán sau: R3 5 x R1/4 – 3 x (bù 2 của R2)
Từ điểu khiển
Các tác vụ
Chú thích
SELA SELB SELD
OPR
Dịch phải = chia 2
Dịch phải = chia 2
R1/4 + R1 = 5R1/4
001
011
011
010
010
010
100
011
000
000
001
000
000
010
010
100
011
011
011
010
010
100
100
011
10000
10000
00010
01110
00001
00010
00010
00101
R3 R1/2
R3 R3/2 = R1/4
R3 R3 + R1
R2 bù 1 của R2
R2 R2 + 1
R2 = bù 2 của R2
R4 = 2 x (bù 2 của R2)
R4 = 3 x (bù 2 của R2)
R3 = 5R1/4 – 3 x (bù 2 của R2)
R4 R2 + R2
R4 R4 + R2
R3 R3 – R4
Đáp án của VXL_KTGHK_AY1314-S2_trang 2/5
Ý nghĩa của các vùng trong “từ điều khiển”:
Mã nhị phân SELA SELB SELD
OPR
Tác vụ
Ký hiệu
TSFA
INCA
ADD
00000 Chuyển A (output = A)
000
001
010
011
100
101
110
111
Input Input Output
00001
00010
00101
00110
01000
01010
01100
01110
10000
11000
Tăng A thêm 1
A + B
R1
R2
R3
R4
R5
R6
R7
R1
R2
R3
R4
R5
R6
R7
R1
R2
R3
R4
R5
R6
R7
A – B
SUB
Giảm A đi 1
A AND B
A OR B
DECA
AND
OR
A XOR B
Bù A
XOR
COMA
SHRA
SHLA
Dịch phải A
Dịch trái A
Câu 3: (2.5 đ)
a) (1 đ) Trước khi thực thi đoạn chương trình Z80 sau, giả sử các nội dung thanh ghi:
HL = 0203H, IX = 0204H, DE = 5678H, SP = 0205H
Bộ nhớ
Hợp ngữ Z80
A
D
E
SP
Địa chỉ
0200H
0201H
0202H
0203H
0204H
0205H
0206H
SRAM
A5H
47H
19H
C6H
E8H
13H
02H
Trị mới
LD A, (IX + 2)
LD E, (IX – 3)
LD D, (HL)
PUSH DE
02H ___ ___
_________
04H
02H
47H
C6H
___ ___ 47H _________
___ C6H ___
_________
___ ___ ___
0203H
INC HL
___
___
___ ___ _________
___ ___
0201H
PUSH HL
Đoạn chương trình trên được thực thi liên tục, hãy điền vào bảng các thanh ghi có trị bị thay đổi sau khi
Z80 thực thi mỗi dòng lệnh và nội dung các ô nhớ bị thay đổi.
b) (0.5 đ) Hãy cho biết cách định địa chỉ của các toán hạng trong các lệnh sau:
Định địa chỉ của
Lệnh Z80
Toán hạng 1
Thanh ghi
Thanh ghi
Toán hạng 2
Chỉ số
LD A, (IX + 2)
LD D, (HL)
Gián tiếp thanh ghi
c) (0.5 đ) Hãy đánh dấu vào ô nà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ụ nếu cc = NC thì xét xem lệnh JR NC, CONT có nhảy đến nhãn CONT không? Nếu có
thì đánh dấu vào ô NC trong bảng (giả sử A đang 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 trong bộ nhớ chương trình lần lượt là 18H, 57H. Nếu
lệnh này bắt đầu ở địa chỉ 0218H, như vậy nhãn NEXT có địa chỉ là bao nhiêu? Tại sao?
Ta có: Địa chỉ lệnh kế = địa chỉ lệnh hiện tại + chiều dài lệnh = 0218H + 2 = 021AH
Địa chỉ nhảy đến (NEXT) = Địa chỉ 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 trong bộ nhớ bắt đầu từ địa chỉ 0200H các nội dung sau:
0, 1, 4, 9, 16, 25, 36, 49, 64, 81
nghĩa là (0200H) = 0, (0201H) = 1, ... , (0209H) = 81
Đáp án của VXL_KTGHK_AY1314-S2_trang 3/5
Chương trình
Bài làm
ORG 100H
ORG 200H
DEFB 0
DEFB 1
DEFB 4
DEFB 9
DEFB 16
DEFB 25
DEFB 36
DEFB 49
DEFB 64
DEFB 81
END
a) (0.5 đ) Giả sử B và C chứa các giá trị nguyên không dấu
luôn nhỏ hơn 10, hãy tính giá trị cất vào ô nhớ Result với
các trường hợp sau:
LD H,02H
IN A,(01H)
AND 3
CP 0
JR Z, L1
CP 2
JR Z,L3
JR NC,L4
A
0
1
2
3
B
5
5
5
5
C
7
7
7
7
(Result)
2
15
7
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
25
Chú ý: giá trị A trong bảng trên là giá trị sau lệnh AND 3
b) (1 đ) Hãy điền vào bảng hoạt động của chương trình này.
(Chú ý: B và C chứa các giá trị nguyên không dấu < 10)
A
0
1
2
3
Phép tính
(Result) = | B – 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
(Result) = B/4 + 2 x C
(Result) = max(B, C)
(Result) = B x B = B2
Result: DEFS 1
Câu 5: (1 đ) Lập trình hợp ngữ Z80
a) (0.5 đ) Viết chương trình con BCD2Bin để đổi 1 số BCD 2 ký số trong thanh ghi A thành số nhị phân
tương ứng đặt lại vào thanh ghi A.
b) (0.5 đ) Viết đoạn chương trình bắt đầu từ địa chỉ 100H thực hiện chuyển 5 byte (mỗi byte là số BCD 2
ký số) từng vùng có địa chỉ đầu 0220H sang vùng có địa chỉ đầu 0230H, trước khi điền mỗi byte vào
vùng mới thì đổi nó sang nhị phân.
Chương trình con BCD2Bin
Đoạn chương trình áp dụng BCD2Bin
BCD2Bin:
ORG 100h
LD D,A ; A = abH (dạng BCD)
AND 0FH ; A = 0bH = b
LD E,A ; E = 0bH = b
LD A,D
LD
LD
B,5
HL,0220H
IX,0230H
A,(HL)
LD
Loop: LD
AND 0F0H ; A = a0H và cờ CY = 0
RLCA ; hoặc 4 RRCA
RLCA
CALL BCD2Bin
LD
(IX+0),A
HL
INC
INC
RLCA
IX
RLCA ; A = 0aH
DJNZ Loop
Here: JR Here
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
Kết thúc bài kiểm tra
Đáp án của VXL_KTGHK_AY1314-S2_trang 4/5
Phụ lục: Các cách giải khác cho câu 5.
1) Tối ưu mã cho cách đã giải:
Chương trình con BCD2Bin
Đoạn chương trình áp dụng BCD2Bin
BCD2Bin:
ORG 100h
LD D,A ; A = abH (dạng BCD)
AND 0FH ; A = 0bH = b
LD E,A ; E = 0bH = b
LD A,D
LD
LD
B,5
IX,0220H
A,(IX)
Loop: LD
CALL BCD2Bin
AND 0F0H ; A = a0H và cờ CY = 0
RRCA ; A = a0H/2 = 16a/2 = 8a
LD D,A ; D = 8a
LD
(IX + 10H),A
IX
INC
DJNZ Loop
Here: JR Here
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:
; Hai địa chỉ của đích và nguồn lệch nhau
;
0230H – 0220H = 0010H
; Nhận xét:
; nếu 0 <= a <=9 thì 16a = a x 24 = a << 4 = a0H
; RRCA = A >> 1
2) Nhân 10 bằng phép cộng nhiều lần:
Chương trình con BCD2Bin
Đoạn chương trình áp dụng BCD2Bin
BCD2Bin:
ORG 100h
PUSH BC
LD
LD
B,5
LD B,A ; A = abH (dạng BCD)
AND 0FH ; A = 0bH = b
LD C,A ; C = 0bH = b
LD A,B
HL,0220H
DE,0230H
A,(HL)
LD
Loop: LD
CALL BCD2Bin
AND 0F0H ; A = a0H và cờ CY = 0
RLCA ; hoặc 4 RRCA
RLCA
LD
(DE),A
HL
INC
INC
DE
RLCA
DJNZ Loop
Here: JR Here
RLCA ; A = 0aH = a
LD B,A ; B = a
LD A,C ; A = b
LD C,B ; C = a
Loop:
ADD A,C ; A = A + a
DJNZ Loop
; A = 10a + b (dạng binary)
POP BC
RET
3) Chuyển BCD sang nhị phân bằng cách tra bảng: (SV hãy tự viết cho cách này!)
Đáp án của VXL_KTGHK_AY1314-S2_trang 5/5
Bạn đang xem tài liệu "Đề kiểm tra giữa học kỳ 2 môn Vi xử lý - Năm học 2013-2014 - Hồ Trung Mỹ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
de_kiem_tra_giua_hoc_ky_2_mon_vi_xu_ly_nam_hoc_2013_2014_ho.pdf

