Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh (Phần 2) - Hồ Trung Mỹ
23-Mar-11
ꢀHBK Tp HCM-Khoa ꢀ-ꢀT
BMꢀT
GVPT: Hꢁ Trung Mꢂ
Môn hꢃc: Vi Xꢄ Lý
Z80
Tập lệnh
1
ꢅꢆꢇꢈꢉꢊꢋꢈꢌꢍꢈꢎꢏꢈꢐꢑy
• ꢒꢊꢓꢉꢈꢉꢊꢋꢈꢊꢆꢔꢈꢉꢕꢖꢈꢗꢎꢉꢘꢐꢙꢉꢔꢚꢈꢛꢜꢉꢊꢝꢜꢊꢘꢞꢈꢟꢈꢕꢆꢇꢈꢉꢊꢋꢈ
(assembly language)
• ꢒꢊꢓꢉꢈꢉꢊꢋꢈꢐꢑꢠꢈꢗꢎꢜꢚꢕꢔꢉꢘꢈꢛꢜꢉꢊꢝꢜꢊꢘꢞꢈꢟꢈꢐꢏꢈꢐꢑy
(machine code)
• TD:
org 1000h
LD A, 20
1000H
1001H
1002H
1003H
3EH
14H
ꢡꢇꢢꢚꢙꢣꢘꢈꢗꢐꢏꢈꢛꢤnh)
ꢡꢇꢘꢥꢜꢉꢣꢈꢗꢦꢙꢑꢉꢈꢕꢧng)
2
1
23-Mar-11
ꢨꢩꢝꢈꢦꢥꢪꢚꢈꢛꢤnh
ꢎꢃꢔꢈꢛꢤꢉꢕꢈꢊꢁꢐꢈꢚꢫꢈꢐꢏꢈꢛꢤꢉꢕꢈꢌꢍꢈꢉꢬꢝꢈꢚꢭꢉꢮꢈꢯꢈꢇꢕꢭꢉꢈꢰꢱꢜꢈꢚꢕꢲꢈꢚꢳꢜꢈꢗꢚꢑꢚꢞꢈꢦꢙꢑꢉꢈꢕꢧng.
OP-Code
Address(es)
Operand(s)
ꢡꢴ-ꢨꢙꢣꢘꢈꢚꢳꢜꢈꢵꢶꢷꢈꢦꢕꢸꢹꢉꢊꢈꢦꢕꢺꢈꢯꢈꢻꢠꢦꢘꢈꢗꢉꢊꢙꢧꢔꢈꢦꢥꢼꢈꢦꢥꢙꢉꢊꢈꢚꢑꢚꢈꢦꢑꢚꢈꢌꢽꢈ
ꢣꢾꢉꢊꢈꢚꢑꢚꢈꢦꢕꢜꢉꢕꢈꢊꢕꢔꢈꢚꢕꢲꢈꢿꣀꢈꢦꢕꢺꢈꢐꢏꢈꢛꢤꢉꢕꢈꢚꢕꢔꢬm 2 byte)
ꣁꣀꢈꢰꢱꢜꢈꢚꢕꢲ:
0
1
2
3
R1 op R2
(A) op R
(A1) op (A2)
(A1) op (A2)
→
→
→
→
R3
R
R
(A3)
Chú ý: (A): nd cꢳa A, op: tác vꢽ, →: chuyꣂn, A: ꢰꢱa chꢲ, R: thanh ghi
ꢀ
ꢀ
ꢀ
ꢀ
3
Các ký hiꢤu ꢰꢸꢆc dùng trong t꣄p lꢤnh
• d = ꢰꣅ dꢹi (sꣀ có dꢩu 8 bit = -128 ꢁ +127)
• n = hng sꣀ 8 bit
• nn = hng sꣀ 16 bit
• r,r’ = thanh ghi 8 bit
• dd, qq, ss, rr = thanh ghi 16 bit
4
2
23-Mar-11
Các nhóm lꢤnh
• Chuyꣂn dꢋ liꢤu (data transfer Group)
• Sꣀ hꢃc và Logic (Arithmetic and Logical Group)
• Xoay và dꢱch (Rotate and Shift Group)
• R nhánh (Branch Group)
• ꢀiu khiꣂn ngn xꢬp, I/O và máy
(Stack, I/O, and Machine Contol Group)
• Trao ꢰi, chuyꣂn khꣀi và tìm kiꢬm
(Exchange, Block Transfer, and Search Group)
• Xꢄ lý bit (Bit Manipulation Group)
Chú ý:
• Z80 có 158 lꢤnh và 10 cách ꢰꢱnh ꢰꢱa chꢲ
5
1. Nhóm chuyển dữ liệu
• Dꢧng tng quát:
LD op1, op2
– Sao chép nꣅi dung cꢳa toán hꢧng 2 (op2) vào toán hꢧng 1
(op1)
– 2 toán hꢧng phi cùng chiu dài (8 hay 16 bit)
– Có nhiu cách ꢰꢱnh ꢰꢱa chꢲ cho các toán hꢧng
– toán hꢧng op1 không thꣂ là hng sꣀ
• Chꢲ có 1 toán hꢧng: vꢖi stack
– PUSH rp
-> cꢩt nꣅi dung cꢳa thanh ghi 16 bit vào stack qua con tr SP
– POP rp
-> lꢩy nꣅi dung cꢳa phꢭn tꢄ ꢰꢲnh stack (qua con tr SP) cꢩt
vào thanh ghi 16 bit
6
3
23-Mar-11
Nhóm chuyển dữ liệu – Nạp hằng số cho thanh ghi
• Nꢧp hng sꣀ 8 bit cho thanh ghi 8 bit: LD r, n
• Nꢧp hng sꣀ 16 bit cho thanh ghi 16 bit: LD rr, n
LD r, n
LD rr, n
A
B
C
D
BC
DE
HL
, nn
LD
, n
LD
SP
{ }
{ }
E
IX
IY
H
L
7
TD: Nꢧp hng sꣀ 8 bit cho thanh ghi
• TD:
LD A,-24; decimal
LD A,15; decimal
LD A, ‘B’; ASCII
LD A, 11001010b;
binary
LD A,0F7H; hex
LD A, 123Q ; Octal
• TD: Hãy viꢬt mã máy cho lꢤnh LD A,-24
• ꢀS: Tra t꣄p lꢤnh ta thꢩy lꢤnh này có 2 byte và opcode
nhꢸ sau: ( r = A = 111, và n = -24 = bù 2 cꢳa 24 = ECh)
Nhꢸ v꣄y mã máy là: byte 1 = 00111110 = 3Eh
byte 2 = ECh
8
4
23-Mar-11
TD: Nꢧp hng sꣀ 16 bit cho thanh ghi 16 bit
(c꣎p thanh ghi 8 bit)
•
•
TD:
LD HL,-24
LD B, ‘A’
LD DE, 11001010b
LD SP,3FFFH
LD C, ‘8’ ; BC = ‘A8’
LD IX, 1234h
TD: Hãy viꢬt mã máy cho lꢤnh LD HL,-24
-24 biꣂu din sang sꣀ 16 bit bù 2 là FF E8h
Nhꢸ v꣄y mã máy là: byte 1 = 0010 0001 = 21h
byte 2 = E8h
9
byte 3 = FFh
Nhóm chuyển dữ liệu – Sao chép giữa các thanh ghi
• Sao chép nꣅi dung thanh ghi 8 bit (r r’) : LD r, r’
• Sao chép nꣅi dung thanh ghi 16 bit (SP rr): LD SP, rr
LD r, r’
LD SP, rr
A
B
C
D
A
B
C
D
E
H
L
HL
IX
{ }
IY
LD SP,
LD
{ },{
}
E
H
L
TD: LD SP, HL
LD SP, IX
TD: LD A, A
10
LD E, L
5
23-Mar-11
Nhóm chuyển dữ liệu – Đọc/ghi bộ nhớ dữ liệu 8 bit
•
ꢀꢃc bꣅ nhꢖ: dꢋ liꢤu 8 bit cꢩt
•
Ghi vào bꣅ nhꢖ: nꣅi dung thanh
ghi 8 bit (r) ho꣎c dꢋ liꢤu 8 bit
(n) vꢖi con tr là thanh ghi 16
bit rp có thꣂ là HL, IX,và IY:
vào thanh ghi 8 bit vꢖi con tr
là thanh ghi 16 bit rp có thꣂ là
HL, IX,và IY:
LD r, (HL)
LD r, (IX+d)
LD (HL), r
LD (HL), n
LD (IX+d), n
LD (IY+d), n
LD (IX+d), r
LD (IY+d), r
LD r, (IY+d)
•
Riêng vꢖi r = A có thêm:
LD A,(BC)
•
Riêng vꢖi r = A có thêm:
LD (BC),A
LD A,(DE)
LD (DE),A
LD A,(nn)
LD (nn), A
Chú ý:
• r là 1 trong các thanh ghi A, B, C, D, E, H và L
• (rp) : ꢰꢱnh ꢰꢱa chꢲ gián tiꢬp qua thanh ghi HL, BC, ho꣎c DE
• (IX+d) hay (IY+d) : ꢰꢱnh ꢰꢱa chꢲ chꢲ sꣀ vꢖi d là hng sꣀ có dꢩu 8 bit ꢁ tra bng
• (nn) : ꢰꢱnh ꢰꢱa chꢲ tr꣏c tiꢬp
11
꣕꣑꣖ꢈꢈꢀꢃꢚ꣗ꢊꢕꢔꢈ꣘ꣅꢈꢉꢕꢖꢈꢣꢋꢈꢛꢔꢤu 8 bit
• TD: ꣐꣑ꢈ꣒ꢮꢗ꣓ꢷꢷꢷꢅꢞ꣔ꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈꢈꢈꢈ3AH,00H,90H
3AH
00H
90H
8000H
8001H
8002H
8003H
9000H
33H
• TD: ꣐꣑ꢈ꣒ꢮꢗꢅ꣐ꢞ꣔ꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈ7Eh
8000H
8001H
7EH
56H
9000H
12
6
23-Mar-11
꣕꣑꣖ꢈꢈꢀꢃꢚ꣗ꢊꢕꢔꢈ꣘ꣅꢈꢉꢕꢖꢈꢣꢋꢈꢛꢔꢤꢝꢈꢶꢈ꣘ꢔꢦꢈ–ꢈ꣕ꢥꢜꢈ꣘ng
•ꢈ꣕꣑꣖ꢈꢈ꣐꣑ꢈ꣒ꢮꢗꢈꢈꢞꢈꢈꢈꢈꢚꢫꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈDDH,7EH,03H
DDH
7EH
03H
8000H
8001H
8002H
56HH
78H
9000H
9001H
9002H
9003H
9AH
ABH
•ꢈꢖꢔꢈꢚꢾꢉꢊꢈꢿꢈꢰꢁꢈꢦꢥ꣠ꢉꢮꢈꢕꢏꢠꢈꢚꢕꢙꢈ꣘ꢔꢬꢦꢈꢉꣅꢔꢈꢣꢝꢉꢊꢈꢚꢳꢜꢈꢦꢕꢜꢉꢕꢈ
ꢊꢕꢔꢈ꣒ꢈꢿꢜꢝꢈ꣡ꢕꢔꢈꢦꢕ꣏ꢚꢈꢦꢕꢔꢈꢚꢑꢚꢈꢛꢤnh sau:
LD IX,9003H
LD A,(IX-2)
13
Nhóm chuyển dữ liệu – Đọc/ghi bộ nhớ dữ liệu 16 bit
•
•
ꢀꢃc bꣅ nhꢖ: dꢋ liꢤu 16 bit cꢩt
vào thanh ghi 16 bit vꢖi ꢰꢱa chꢲ
16 bit:
•
Ghi vào bꣅ nhꢖ: dꢋ liꢤu 16 bit
(꣣ thanh ghi 16 bit rp) vꢖi ꢰꢱa
chꢲ 16 bit:
LD rp, (nn)
ngh꣢a là
LD (nn),rp
ngh꣢a là
rp_L (nn) và rp_H (nn+1)
(nn) rp_L và (nn+1) rp_H
ꢀꢱnh ꢰꢱa chꢲ hiꣂu ngꢭm qua SP:
PUSH rp
ꢀꢱnh ꢰꢱa chꢲ hiꣂu ngꢭm qua
SP:
•
POP rp
Ngh꣢a là
Ngh꣢a là
SP SP – 1, (SP) rp_H
SP SP – 1, (SP) rp_L
rp_L (SP), SP SP + 1
rp_H (SP), SP SP + 1
Chú ý:
15
8 7
0
• rp_L là byte thꢩp cꢳa rp và rp_H là byte cao cꢳa rp
• rp là 1 trong các thanh ghi 16 bit: BC, DE, HL, SP, IX, và IY
• (nn) : ꢰꢱnh ꢰꢱa chꢲ [tr꣏c tiꢬp] m꣣ rꣅng (vì dꢋ liꢤu 16 bit)
rp
rp_H rp_L
14
7
23-Mar-11
꣕꣑꣖ꢈꢈꢀꢃꢚ꣗ꢊꢕꢔꢈ꣘ꣅꢈꢉꢕꢖꢈꢣꢋꢈꢛꢔꢤu 16 bit
•ꢈꢈ꣐꣑ꢈꢻꢨꢮꢈꢗ꣓ꢷꢷꢷꢅꢞꢈꢈꢈꢈꢈꢚꢫꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈꢈEDH, 4BH, 00H, 90H
9000H
56H
9001H
34H
•ꢈꢈ꣐꣑ꢈꢗ꣓ꢷꢷꢷꢅꢞꢮꢈꢻꢨꢈꢈꢈꢈꢈꢚꢫꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈꢈEDH, 43H, 00H, 90H
9000H
78H
9001H
56H
•ꢈꢈꢴ꣤ꣁꢅꢈꢻꢨꢈꢈꢚꢫꢈꢐꢏꢈꢐꢑꢠꢈꢛꢍꢈꢈꢨ꣥ꢅꢈꢗꢊꢔꢈꢿꢄꢈꢦꢥꢸꢖꢚꢈ꣡ꢕꢔꢈꢦꢕ꣏c thi: SP = FEFDH)
FEFAH
FEFBH
FEFCH
FEFDH
78H
56H
15
16
8
23-Mar-11
17
2. Nhóm số học và logic
ꢀa sꣀ các lꢤnh thuꣅc nhóm này nh hꢸ꣣ng ꢰꢬn các
cꢹ (mã ꢰiu kiꢤn) trong thanh ghi F (Flag)
• S (Sign) : sau phép toán thì nó S=MSB cꢳa kꢬt
qu=1(âm)/0(dꢸng)
• Z (Zero) : nꢬu kꢬt qu là 0 thì Z=1, ngꢸꢆc lꢧi Z=0
• H (Half carry) : sꣀ nhꢖ tꢧi vꢱ trí bit th꣦ 3 trong phép toán +/-
• P/V (Parity/Overflow) (kiꣂm tra ch꣧n l꣨/tràn trên)
–P (với phép toán Logic): 1 (nꢬu sꣀ bit 1 trong A là ch꣧n = Even
parity), ngꢸꢆc lꢧi thì P/V= 0(Odd)
–V (với phép toán số học): = 1 khi có tràn vꢖi phép toán +/-
• N: 1(sub)/0(add)
• C (Carry): sꣀ nhꢖ tꢧi vꢱ trí bit th꣦ 7 trong phép toán +/-
18
9
23-Mar-11
2.1 Nhóm số học 8 bit
Phép toán
Cꣅng
Dạng lệnh
Ý nghĩa
ADD A,source A A + source
ADC A,source A A + source + C
Cꣅng có nh
Trꢼ
SUB source
A A – source (A hiꣂu ngꢭm)
Trꢼ có mꢸꢆn
So sánh
SBC A,source A A – source – C
CP source
INC source
DEC source
Th꣏c hiꢤn A – source ꢰê
source source + 1
source source – 1
̉ ꢰ꣎t các c̀
Tng thêm 1
Gim bꢖt 1
Chú ý:
• source có thꣂ là hng sꣀ, thanh ghi 8 bit (A,B,C,D,E,H,L) , (HL), (IX+d), (IY+d)
• Các lꢤnh INC và DEC: source không ꢰꢸꢆc là hng sꣀ và Cꢹ C không bꢱ nh
hꢸ꣣ng
19
• Cꢹ N = 1 sau các lꢤnh SUB, SBC, và DEC
TD: Cꣅng/trꢼ 8 bit
꣔ꢈꢀꢱnh ngh꣢a các hng sꣀ
NUM1 EQU 25 ; NUM1 = 19H
NUM2 EQU -17 ꣔ꢈNUM2 = EFH (bù 2 cꢳa 17)
꣔ꢈThꢄ lꢤnh ADD vꢖi toán hꢧng 8 bit
LD A,NUM1
LD B,NUM2
ADD A,B ; A A + B = 25 + (-17) = 8
꣔ꢈThꢄ lꢤnh SUB vꢖi toán hꢧng 8 bit
LD A,NUM1
LD B,NUM2
SUB B
; A A - B = 25 - (-17) = 42
20
10
23-Mar-11
• Thí dụ: ꢀin các sô 0 vào các ô nh có ꢰꢱa chꢲ tꢸ
ꢰꢬn 817FH.
̀ 8100H
ORG 8000H
LD HL, 8100H
LD A, 00H ;hng sô cꢭn nꢧp
LD C, 80H ;Sꣀ lꢭn l꣎p = 817Fh – 8100h +1 =80h
LOOP: LD (HL), A
INC HL
DECC
JP NZ, LOOP; nꢬu C ≠ 0 quay lꢧi LOOP
HALT
END
21
22
11
23-Mar-11
2.2 Nhóm số học 16 bit
Phép toán
Dạng lệnh
Ý nghĩa
ADD HL,ss
ADD IX,pp
ADD IY,rr
HL HL + ss
IX IX + pp
IY IY + rr
Cꣅng
Cꣅng có nh
Trꢼ có mꢸꢆn
Tng thêm 1
Gim bꢖt 1
Chú ý:
ADC HL,ss
SBC HL,ss
INC source
DEC source
HL HL+ ss + C
HL HL+ ss – C
source source + 1
source source – 1
• source có thꣂ là 1 trong các thanh ghi 16 bit (BC,DE,HL, SP, IX và IY)
• ss có thꣂ là 1 trong các thanh ghi 16 bit (BC,DE,H,L, SP)
• pp có thꣂ là 1 trong các thanh ghi 16 bit (BC,DE,IX, SP)
• rr có thꣂ là 1 trong các thanh ghi 16 bit (BC,DE,IY, SP)
23
• Cꢹ C không bꢱ nh hꢸ꣣ng b꣣i các lꢤnh INC và DEC
• Thí dụ: Viꢬt chꢸng trình con MULT10 ꢰꣂ nhân 10 lꢭn giá trꢱ
ꢰꢸꢆc cꢩt trong c꣎p thanh ghi HL và kꢬt qu cꢩt lꢧi vào HL (gi
sꢄ kꢬt qu tính không bꢱ tràn).
MULT10:
ADD HL, HL; HL 2 x HL
LD
LD
D, H
E, L
; (HL)=>(DE)
ADD HL, HL; 4 x HL
ADD HL, HL; 8 x HL
ADD HL, DE
; (8+2) x HL = 10 x HL
RET
24
12
23-Mar-11
TD: Cꣅng/trꢼ 16 bit vꢖi hng sꣀ
꣔ꢈꢀꢱnh ngh꣢a hng sꣀ
BIN16_1 EQU 2578 ; = 0A12H
BIN16_2 EQU 1289 ; = 0509H
; Thu lenh ADD voi toan hang 16 bit dung cap thanh ghi HL, DE
LD DE,BIN16_1
LD HL,BIN16_2
ADD HL,DE ; HL <- HL + DE = 1289 + 2578 = 3867 = 0F1BH
; Thu lenh SBC voi toan hang 16 bit dung cap thanh ghi HL, DE
SCF ;set cꢹ Carry
CCF ;lꢩy bù cꢹ Carry= Xoa co Carry (CF=0)
꣔
ho꣎c có thꣂ dùng 1 lꢤnh AND A
LD DE,BIN16_1
LD HL,BIN16_2
25
SBC HL,DE ; HL <- HL - DE = 1289 - 2578 = -1289 = FAF7H
TD: Cꣅng/trꢼ 16 bit vꢖi biꢬn sꣀ (1)
; Thu lenh ADD voi toan hang 16 bit dung
thanh ghi 8 bit
LD IX,BIN16_1 ; Lay byte thap truoc
LD A,(IX)
꣔ꢈꢰꢱnh ngh꣢a các biꢬn
LD IY,BIN16_2
BIN16_1: DEFW 1289 ; 0509h
BIN16_2: DEFW 2578 ; 0A12h
RESULT: DEFS 2
LD B,(IY)
ADD A,B
LD DE,RESULT
LD (DE),A
END
Chú ý: Các chỉ dẫn (directive)
của trình hợp ngữ (assembler)
INC IX
; Pointer chi den byte cao
INC IY
INC DE
LD A,(IX)
LD B,(IY)
ADC A,B
LD (DE),A
HALT
• DEFW hay DW: define word
• DEFS hay DS: define space
26
13
23-Mar-11
TD: Cꣅng/trꢼ 16 bit vꢖi biꢬn sꣀ (2)
; Thu lenh ADD voi toan hang 16 bit dung cap thanh ghi HL, DE
LD DE,(BIN16_2)
LD HL,(BIN16_1)
;
;
DE = 2578 = 0A12h
HL = 1289 = 0509h
ADD HL,DE ; HL <- HL + DE = 1289 + 2578 = 3867 = 0F1BH
LD (RESULT_1),HL
; Thu lenh SBC voi toan hang 16 bit dung cap thanh ghi HL, DE
SCF
CCF ꣔ꢈXoa co Carry (CF=0) ho꣎c có thꣂ dùng 1 lꢤnh AND A
LD DE,(BIN16_2)
LD HL,(BIN16_1)
SBC HL,DE ; HL <- HL - DE = 1289 - 2578 = -1289 = FAF7H
LD (RESULT_2),HL
HALT
꣔ꢈꢰꢱnh ngh꣢a các biꢬn
BIN16_1:
DEFW 1289 ; 0509h
DEFW 2578 ; 0A12h
BIN16_2:
RESULT_1:
RESULT_2:
DEFS 2
DEFS 2
27
END
28
14
23-Mar-11
29
2.3 Nhóm số học đa dụng
Phép toán
Dạng lệnh
Ý nghĩa
ꢀiu chꢲnh th꣄p
phân (BCD) sau
Chuyꣂn ꢰi nꣅi dung cꢳa A sang
BCD nén sau phép toán cꣅng/trꢸ
DAA
̀
phép cꣅng/trꢸ
̀
vꢖi các toán hꢧng BCD
Lꢩy bù 1
CPL
NEG
CCF
SCF
A NOT(A)
Lꢩy bù 2
A 0 – A = – A
C NOT(C)
C 1
Lꢩy bù cꢹ nhꢖ
ꢀ꣎t cꢹ nhꢖ lên 1
30
15
23-Mar-11
TD: Cꣅng 2 sꣀ BCD 4 digit
; Cong 2 so BCD 4 digits
LD IX,BIN16_1 ; Lay byte thap truoc
LD A,(IX)
LD IY,BIN16_2
LD B,(IY)
ADD A,B
DAA
LD DE,RESULT
LD (DE),A ; Cat 2 ky so BCD thap truoc cua ket qua
INC IX
; Pointer chi den byte cao
INC IY
INC DE
LD A,(IX)
LD B,(IY)
ADC A,B
DAA
LD (DE),A ; Cat 2 ky so BCD cao truoc cua ket qua
HALT
BIN16_1: DEFW 1289H; Bieu dien BCD cua 1289
BIN16_2: DEFW 2578H; Bieu dien BCD cua 2578
RESULT: DEFS 2
31
END
TD: Tính bù 2 cꢳa 1 sꣀ 16 bit trong bꣅ nhꢖ
org 100H
; Lay bu 2 cua 1 so 16 bit NUM1 trong bo nho o dia chi 200H
; va cat lai vao bien 16 bit NUM2 trong bo nho o dia chi 202H
LD HL,(NUM1) ; Neu (NUM1) = 56D3H
LD A,L
CPL
; tinh bu 1 cua byte thap
LD L,A
LD A,H
CPL
; tinh bu 1 cua byte cao
LD H,A
INC HL
LD (NUM2),HL ; thi bu 2 cua no o (NUM2) = A92DH
HALT
org 200H
NUM1: defw 56D3H
NUM2: defs 2꣔ꢈbù 2 cꢳa 56D3H là A92DH
NUM3: defs 2
END
32
16
23-Mar-11
2.4 Nhóm Logic 8 bit
Phép toán
AND
Dạng lệnh
AND source
OR source
XOR source
Ý nghĩa
A A AND source
A A OR source
A A XOR source
OR
XOR
Chú ý:
• Thanh ghi A là toán hꢧng hiꣂu ngꢭm
• source có thꣂ là hng sꣀ, thanh ghi 8 bit (A,B,C,D,E,H,L) , (HL), (IX+d), (IY+d)
• Th꣏c hiꢤn phép toán logic cho tꢼng c꣎p bit tꢸng ꣦ng cꢳa 2 toán hꢧng
• Cꢹ PV cho biꢬt trꢱ parity ch꣧n (=1 nꢬu sꣀ bit 1 trong kꢬt qu là sꣀ ch꣧n)
• Cꢹ C luôn luôn = 0 sau lꢤnh logic! => dùng ꢰꣂ xóa cꢹ C
33
TD: Các lꢤnh Logic
; Hieu ung cap nhat co Parity sau lenh LOGIC
LD A,1
AND 0FFH ꣔P/V=0 (do sꣀ bit 1 cꢳa kꢬt qu AND là l꣨ = 00000001b)
LD A,3
AND 0FFH ꣔P/V=1 (do sꣀ bit 1 cꢳa kꢬt qu AND là ch꣧n=00000011b)
꣔ꢈTính bù 1 cꢳa 1 sꣀ nhꢱ phân trong thanh ghi A
LD A,24
; A = 18h
XOR 0FFh ; A = 18h XOR FFh = E7h
꣔ꢈꢀ꣎t 1 bit lên 1 bng cách OR vꢖi 1 tꢧi vꢱ trí ꢰó
LD A,25h
; A = 00100101b
OR 01001000b
; A = A OR 48h = 01101101b = 6Dh
34
17
23-Mar-11
3. Nhóm xoay và dịch bit
3.1 Nhóm xoay bit
Phép toán
Dạng lệnh
RLCA
Ý nghĩa
Xoay tròn
qua trái
RLC X
RRCA
Xoay tròn
qua phi
RRC X
RLA
Xoay trái
RL
X
X
RRA
RR
Xoay phi
Chú ý:
• X có thꣂ là A, B, C, D, E, H, L, (HL), (IX+d), (IY+d)
• Vꢖi xoay trái cꢹ C = MSB c꣩ cꢳa toán hꢧng
• Vꢖi xoay phi cꢹ C = LSB c꣩ cꢳa toán hꢧng
35
TD: ꢀi sô BCD 2 ky sô (nén) sang biꣂu din ASCII tꢸng ꣦ng
; TD: A = 25H (BCD cꢳa 25) thi
; trong D va E ( D = 32H va E = 35H)
BCD_ASCII:
LD C,A
̀ chuyꣂn sang ASCII là 32H (‘2’) và 35H (‘5’)
̀
̀
; C = A = xyH vꢖi x,y = 0 ꢁ 9
AND 0F0H
RRA
; A = x0H
RRA
RRA
RRA
; lay nua byte cao: A = 0xH
OR 30H
LD D,A
LD A,C
AND 0FH
OR 30H
LD E,A
RET
; Doi sang ASCII tuong duong: A = 3xH
; D = 3xH
; A = xyH
; lay nua byte thap: A = 0yH
; Doi sang ASCII tuong duong: A = 3yH
; E = 3yH
Chú ý:
• Nꣅi dung cꢳa thanh ghi A bꢱ thay ꢰi trong chꢸng trình con này!
• Lꢤnh OR 30H có thê ꢰꢸꢆc thay bng lꢤnh ADD A,30H có cùng kꢬt qu!
36
̉
18
23-Mar-11
TD: ꢀi sang biꣂu din ASCII cꢳa 2 ky sô BCD sang
sô BCD 2 ky sô (nén)
; TD: Biꣂu din ASCII cꢳa 25 trong D và E ( D = 32H và E = 35H) ꢰꢸꢆc
; chuyꣂn thành BCD nén 2 ky sô ꣣ A = 25H (BCD cꢳa 25)
ASCII_HEX:
LD A,D
AND 0FH
RLA
; A = D = 3xH
; A = 0xH
RLA
RLA
RLA
LD C,A
LD A,E
AND 0FH
ADD A,C
RET
; C = A = x0H
; A = 3yH
; A =0yH
; A = x0H + 0yH = xyH
Chú ý:
•
Chꢸng trình này làm thay ꢰi nꣅi dung các thanh ghi A và C.
37
3.2 Nhóm xoay digit
Dạng
lệnh
Phép toán
Ý nghĩa
Xoay trái digit
RLD
(HL)
(HL)
Xoay phi
digit
RRD
Chú ý:
• Tác ꢰꣅng thanh ghi A và nꣅi dung bꣅ nhꢖ có ꢰꢱa chꢲ trong HL
• Có ý ngh꣢a khi xoay trái/phi sꣀ BCD nén có 3 ký sꣀ (digit)
38
19
23-Mar-11
3.3 Nhóm dịch bit
Phép toán
Dạng lệnh
Ý nghĩa
Dꢱch trái sô hꢃc SLA X
Dꢱch phi sꣀ hꢃc SRA X
Dꢱch phi logic
SRL
X
Chú ý:
• X có thꣂ là A, B, C, D, E, H, L, (HL), (IX+d), (IY+d)
• Không có lꢤnh dꢱch trái logic SLL vì hiꢤu ꣦ng giꣀng nhꢸ SLA
39
TD: Hiꢤu ꣦ng cꢳa các lꢤnh dꢱch bit
LD
A, 11
A
A
A
A
; A = 0000 1011b = 11
SLA
SLA
SRA
SRA
SRA
LD
; A = 0001 0110b = 22 = 11 x 2
; A = 0010 1100b = 44 = 22 x 2
; A = 0001 0110b = 22 = 44 /2
; A = 0000 1011b = 11 = 22 /2
; A = 0000 0101b = 05 = 11 /2
A
A, -22 ; A = 1110 1010b = -22
SRA
SRA
SLA
SRL
SRL
A
A
A
A
A
; A = 1111 0101b = -11 = -22/2
; A = 1111 1010b = -6 = -11/2
; A = 1111 0100b = -12 = -6x2
; A = 0111 1010b = 123
; A = 0011 1101b = 61 =123/2
NX:
– Có thê
phi ꢰê
– Vꢖi có dꢩu thi
̉
chia nguyên cho 2: dùng dꢱch trái ꢰê
chia ꢰôi.
phi dùng SLA va
v꣄n dꢽng phép toán dꢱch va
nhân/chia!
̉
nhân ꢰôi ho꣎c dꢱch
̉
̀
̀
SRA
cꣅng ꢰê
– Có thê
̉
̀
̉ th꣏c hiꢤn phép toán
40
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi xử lý - Chương 2: Kiến trúc CPU và tập lệnh (Phần 2) - 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:
bai_giang_vi_xu_ly_chuong_2_kien_truc_cpu_va_tap_lenh_phan_2.pdf

