ĐHBK Tp HCM – Khoa ĐĐT–BMĐT
GVPT: Hồ Trung Mỹ
Vi xử lý – AY1213-S2
Đáp án của kiểm tra tại lớp đợt 11. Viết các “từ điều khiển” (control word) (hình 1.14 trong sách VXL) để thực hiện
các phép toán sau:
a) R5 4R1 – 2(R2 AND R4)
b) R3 R1/2 + (bù 1 của R2)/4
BG.
Có nhiều cách giải loại bài này:
Cách 1:
Không biến đổi biểu thức
a) Từ điểu khiển
Các tác vụ Chú thích SELA SELB SELD OPR
R5 R1 + R1 R5 = 2R1 001 001 101 00010
R5 R5 + R5 R5 = 4R1 101 101 101 00010
R3 R2 AND R4 R3 = R2 And R4 010 100 011 01000
R3 R3 + R3 R3 = 2(R2 And R4) 011 011 011 00010
R5 R5 - R3 R5 = 4R1 - 2(R2 And R4) 101 011 101 00101b) Từ điểu khiển
Các tác vụ Chú thích
S
ELA
S
ELB SELD
O
P
R5 R5 - R3 R5 = 2
R
1
-
(
R2 And R4)
1
01 011 101
0
0101
R5 R5 + R5 R5 = 4R1 - 2(R2 And R4) 101 101 101 00010
b) Từ điểu khiển
Các tác vụ Chú thích SELA SELB SELD OPR
R4 COM R2 R4 = bù 1 của R2 010 000 100 01110
R4 SHR R4 R4 = (bù 1 của R2)/2 100 000 100 10000
R3 R1 + R4 R3 = R1 + (bù 1 của R2)/2 001 100 011 00010
R3 SHR R3 R3 = R1/2 + (bù 1 của R2)/4 011 000 011 10000
. . .
2. Hãy cho biết dung lượng bộ nhớ lớn nhất (tính theo byte và word) mà CPU có thể
quản lý được nếu nó có:
a) Số đường địa chỉ là 16 và số đường dữ liệu là 8.
b) Số đường địa chỉ là 20 và số đường dữ liệu là 16.
BG.
Số đ
ư
ờng
địa chỉ
Số đ
0 1 1 1 1 1 1 0 0 Nhớ
Cờ Z S C HC OV
+126 0 1 1 1 1 1 1 0 Trước 0 0 0 0 0
+15 0 0 0 0 1 1 1 1
Tổng -115 1 0 0 0 1 1 0 1 Sau 0 1 0 1 1
b) Cộng 2 số 8 bit: E7H với 09H
0 0 0 0 1 1 1 1 0 Nhớ
Cờ Z S C HC OV
E7H 1 1 1 0 0 1 1 1 Trước 0 0 0 0 0
09H 0 0 0 0 1 0 0 1
Tổng F0H 1 1 1 1 0 0 0 0 Sau 0 1 0 1 0
c) Trừ 2 số 8 bit: +104 với –12
1 1 1 1 0 1 0 0 0 Mượn
Cờ Z S C HC OV
+104 0 1 1 0 1 0 0 0 Trước 0 0 0 0 0
–12 1 1 1 1 0 1 0 0
Hiệu +116 0 1 1 1 0 1 0 0 Sau 0 0 1 0 0
4. Viết mã để tính biểu thức F = A * ( B + C) + D trên các CPU có lệnh 2, 1, và 0 địa
chỉ. Không sắp xếp lại biểu thức và khi tính toán không làm thay đổi các biến A, B, C,
và D.
BG.
CPU có lệnh 2 địa chỉ CPU có l
ệ
n
h
1
đ
ị
+
+
–
ĐHBK Tp HCM – Khoa ĐĐT–BMĐT
GVPT: Hồ Trung Mỹ
Vi xử lý – AY1213-S2
Đáp án của Kiểm tra tại lớp đợt 2
Thời gian làm bài: 30 phút (Cho mở TL)
1. (2 đ) Vẽ dạng sóng của truyền dữ liệu nối tiếp bất đồng bộ khi truyền 1 byte 4BH với LSB
được truyền đi trước cho các trường hợp sau: (nếu biết tốc độ truyền là 2400 bps)
a) Dữ liệu 7 bit, không có parity và 1 bit stop.
b) Dữ liệu 8 bit, có parity lẻ và 1 bit stop.
BG.
4BH = 0100 1011
2
Tốc độ baud = 2400 bps => Thời gian cho 1 bit T = 1/2400 = 0.417 ms
a) Dữ liệu 7 bit, không có parity và 1 bit stop: b) Dữ liệu 8 bit, có parity lẻ và 1 bit stop:
2. (3 đ) Thiết kế ROM 3K x 8 từ các chip ROM 1K x 4
BG.
3. (5 đ) Hãy tìm dải địa chỉ của tất cả các tín hiệu /CS trong mạch sau:
BG.
LD B, 3
LD A, 0A5H
LD HL, 0C028H
LOOP: ADC A, (HL)
INC HL
DJNZ LOOP
BG.
Lệnh
Cách định địa chỉ
Toán hạng 1 Toán hạng 2
LD B, 3 Thanh ghi Tức thời
LD A, 0A5H Thanh ghi Tức thời
LD HL, 0C028H Thanh ghi Tức thời mở rộng
LOOP: ADC A, (HL) Thanh ghi Gián tiếp
INC HL Thanh ghi
DJNZ LOOP Tương đối
2. (6 đ) Hãy viết vài lệnh Z80 để thực hiện các công việc sau: ( PORT1 EQU 07H)
a) B 39H và D 92H; L B và (PORT1) D
b) B 47H và C F2H chỉ dùng 1 lệnh; (2080H) C và (PORT1) B. Hãy ghi mã máy cho
đoạn chương trình này và giả sử chúng bắt đầu từ địa chỉ 2000H.
c) D A và HL 2080H ; (2080H) D.
d) D A7H và BC 2055H ; (BC) D.
e) Biết (2040H) = 98H và (2070H) = F7H. Viết các lệnh để hoán đổi nội dung của 2 ô nhớ này và
viết mã máy cho đoạn đó.
BG.
a) B 39H và D 92H; L B và (PORT1) D
LD B,39H
LD D,92H
LD L,B
(
hex)
LD A,(2040H)
LD B,A
LD A,(2070H)
LD (2040H),A
LD A,B
LD (2070H),A
3
A
1
0 20
47
3A 70 20
32 40 20
78
32 70 20
3. (2 đ) Cho trước đoạn chương trình sau:
LD SP, 1200H
LD HL,3456H
PUSH HL
Hãy vẽ stack với địa chỉ bộ nhớ và nội dung của stack Sau khi Z80 thực thi đoạn chương trình trên,.
BG.
SP = 11FEH
BộnhớĐịachì
56H 11FEH
34H 11FFH
1200H
MOV 27h, #48h
MOV R0, #29h
MOV @R0, 27h
b) Cho biết mã máy sau thực hiện tác vụ gì?
75H, 8AH, E7H
BG.
a)
(27H)= 48H = 0100 1000H Các địa chỉ bit (hex) có nội dung là 1: 3E và 3B
(29H)= 48H = 0100 1000H Các địa chỉ bit (hex) có nội dung là 1: 4E và 4B
b) Mã lệnh 75H tương ứng với lệnh 3 byte:
MOV direct, #data Như vậy 75H 8AH E7H tương ứng với lệnh: MOV 8AH, #0E7H
3. (2 đ) Cho biết các cách định địa chỉ của các toán hạng trong các lệnh sau:
ANL C, ACC.1
ADD A, #55
MOV @R1, A
MOV P1, 50H
BG.
Lệnh
C
ách định địa chỉ của
t
oán hạng
1
t
oán hạng
BG.
Cho trước PSW = 5FH = 0101 1111B và A = 19H = 0001 1001B trước khi thực thi lệnh
a) RLC A
A = 0011 0010B = 32H PSW = 0101 1111B = 5FH
b) RRC A
A = 0000 1100B = 0CH PSW = 1101 1110B = DEH
2) (3 đ) Viết đoạn chương trình 8051 thực hiện công việc sau:
Nếu A < B thì R2 R1 + R0
Nếu A = B thì R2 R1 – R0
Nếu A > B thì R2 A + B
BG.
CJNE A, B, ANEB
AEQB: ; Case: A = B
CLR C ; C 0
MOV A, R1
SUBB A, R0 ; A R1 – R0 – C = R1 – R0
SJMP Continue
ANEB: ; Case: A B
JNC AGTB
ALTB: ; Case: A < B
MOV A, R1
ADD A, R0 ; A R1 + R0
SJMP Continue
AGTB: ; Case: A > B
ADD A, B ; A A + B
Continue: MOV R2, A
. . .
Cách 1
C
ách 2
AND8b:
MOV C, ACC.0
ANL C, ACC.1
ANL C, ACC.2
ANL C, ACC.3
ANL C, ACC.4
ANL C, ACC.5
ANL C, ACC.6
ANL C, ACC.7
RET
AND8b:
MOV R0,#8
SETB C
L1:
ANL C, ACC.0
RR A
DJNZ R0, L1
RET
AND8b:
CJNE A,#0FFH,KQZ
SETB C
RET
KQZ:
CLR C
RET
SETB TR0
Loop: JNB TF0, $
CLR TF0
CPL P1.0
SJMP Loop
2. (2 đ) Một thiết kế dùng Timer0 của 8051 để đếm số khách hàng vào tham quan hội chợ,
nếu số khách hàng vào đạt đến 10000 thì ngõ ra P1.0 sẽ là 1. Ngõ vào T0 nhận được 1
xung vuông từ mạch cảm biến khi có 1 khách hàng đi vào. Viết mã cho đoạn CT này.
BG.
SETB P3.4 ; P3.4 (= T0) is input pin
CLR P1.0
MOV TMOD,#00000101B ; Timer 0, Mode 1 of Counter 0
MOV TL0,#LOW(–10000)
MOV TH0,#HIGH(–10000)
SETB TR0
JNB TF0, $
CLR TF0
CLR TR0
SETB P1.0
SJMP $
3. (2 đ) Tìm thời gian trễ của chương trình con Delay. Giả sử 8051 đang dùng XTAL = 8
MHz.
DELAY: MOV R7, #5 ; 1 MC
L1: MOV R6, #00H ; 1 MC
L2: MOV R5, #00H ; 1 MC
L3: NOP ; 1 MC
NOP ; 1 MC
DJNZ R5, L3 ; 2 MC
BG.
Giá trị nạp cho Timer 0 lúc P1.1 bằng 1 tương ứng với –T
ON
:
T
ON
= bù 2 của FD44H = 028CH = 700 T
ON
= 700 MC = 700 s
Giá trị nạp cho Timer 0 lúc P1.1 bằng 0 tương ứng với –T
OFF
:
T
OFF
= bù 2 của FE0CH = 01F4H = 500 T
OFF
= 500 MC = 500 s
Như vậy chu kỳ nhiệm vụ là
T
ON
/(T
ON
+ T
OFF
) = 700/(700+500)= 58.33%