Cấu trúc máy tính tập lệnh CPU INTEL 8086/8088 - Cấu trúc máy tính và vi xử lí | Đại học Bách Khoa, Đại học Đà Nẵng

Cấu trúc máy tính tập lệnh CPU INTEL 8086/8088 - Cấu trúc máy tính và vi xử lí | Đại học Bách Khoa, Đại học Đà Nẵng giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học

TP LNH CPU INTEL 8086/8088
1. Dng lnh :
- Mt lnh ca vi x lý 86 có dng tng quát như sau :
<Mã gi nh> <Toán hng đích>,<Toán hng ngun>
- gi nh giúp cho người s d độ ng biết ho t ng c a l nh. g i nh thường các
ch tiếng anh viết tt như : MOV là l nh chuy n, ADD là lnh c ng, AND là l n nh và lu
lý, JMP là lnh nhy . . .
- Toán hng đích gi kế ế t qu (n u yêu c u) sau khi thi hành l nh. Toán h ng đích
th là thanh ghi hay b nh.
- Toán hng ngun có th là thanh ghi, b nh hay mt s tc thi.
- Toán hng thanh ghi các thanh ghi c a vi x 86 gm các thanh ghi tng quát (8 bit
ln 16 bit) và các thanh ghi đon đã biết.
- Toán hng s tc thi có th là s trong các h đếm khác nhau và được viết theo qui định
như sau :
. S h 2 : ××××××××B (× là 1 bit nh phân).
Ví d : 01101101B, 11111111B
. S h 10 : ××××× , hay ×××××D (× là mt s thuc h 10).
Ví d : 65535, 1000
. S h u b 16 : ××××H và bt đầ ng s ( là mt s thuc h 16).
Ví d : 1A59H, 0E05BH
- Toán hng b nh dùng trong t p l nh vi x lý 86 s d ng phương pháp đị đị nh a ch t ng
hp . được gi là địa ch hiu dng
- Địa ch hiu dng là t hp ca 3 nhóm sau được đặt trong du ngoc vuông [ ]:
. Nhóm thanh ghi ch s : SI, DI
. Nhóm thanh ghi nn : BX, BP
. Địa ch trc tiếp : s 16 bit
- Các thanh ghi trong cùng mt nhóm không được xut hin trong cùng mt địa ch hiu
dng.
- Ví d :
. hi ng h p lĐịa ch u d :
[1000h], [SI], [DI], [BX], [BP]
[SI+BX], [SI+BP], [DI+BX], [DI+BP], [SI+1000h], [DI+100h], [BX+1], [BP+1]
[SI][BX][1000h], [SI+ BP+1000h], [DI+BX][1000h], [DI+1000h][BP]
. hi ng Địa ch u d không hp l :
[70000], [AX], [SI+DI+1000h], [BX][BP]
- Địa ch hiu dng chính là thành phn offset ca địa ch lun lý b nh.
- Segment ca địa ch hi u d ng được mc định như sau :
. N u không s d hi u dế ng BP trong địa ch ng thì mc định theo thanh ghi DS.
. N hi u dếu có BP trong địa ch ng thì mc định theo thanh ghi SS.
- Các hot động th n trên bc hi nh thông qua địa ch hi u d ng chia ra làm 2 trường
hp : hot t động 8 bit và ho động 16 bit.
- Hot i độ ng b nh 8 bit làm vic trên 1 byte b nh ngay v trí ch ra b địa ch hiu
dng.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Hot độ ng b nh 16 bit s làm vic trên 2 byte b nh địa ch kế tiếp nhau n i
dung ca chúng được ghép li thành d liu 16 bit theo qui tc "byte cao địa ch cao, byte
th địp a ch thp" như trong hình sau :
- Để thun tin trong vn giđề i thích lnh, ta qui ước thêm cách din t sau :
. D liu 8 bit ca b nh : [địa ch ]
. D liu 16 bit ca b nh : [địa ch a ch +1,đị ]
- Để xác định rõ hot động ca b nh, ta phi dùng thêm toán t PTR như sau :
. Hot động 8 bit : BYTE PTR [1000h] là tham kho 1 byte b nh địa ch
1000h
. Hot động 16 bit : WORD PTR [1000h] tham kho đến 2 byte b nh liên
tiếp 1000h và 1001h
- Các ch viết tt dùng trong các nhóm lnh :
reg : thanh ghi tng quát.
reg16 : thanh ghi 16 bit.
segreg : thanh ghi đon.
accum : thanh ghi b tích lũy AX hoc AL.
mem : b đị nh ( a ch hi u d ng).
mem16 : b nh 2 byte liên tiếp (địa ch hiu dng).
mem32 : b nh 4 byte liên tiếp (địa ch hiu dng).
immed : s t c thi.
immed8 : s t c thi 8 bit.
shortlabel : nhãn ngn (-128 byte +127 byte).
nearlabel : nhãn trong đon (2 byte offset).
farlabel : nhãn ngoài đon (4 byte : 2 byte segment và 2 byte offset).
2. Nhóm lnh chuyn d liu :
2.1 Lnh MOV :
- Dng lnh : MOV reg,reg MOV reg,immed
MOV mem,reg MOV mem,immed
MOV reg,mem MOV mem16,segreg
MOV reg16,segreg MOV segreg,mem16
MOV segreg,reg16
- Gii thích : thđ
thn
- Tác độ ng c :
- Chép toán hng ngun vào toán hng đích.
- Ví d : MOV AX,CX ; AX
CX
MOV DL,BH ; DL
BH
MOV [SI+1000h],BP ; [SI+1001h, SI+1000h]
BP
MOV DX,[1000h] ; DX [1001h,1000h]
OF DF IF SF ZF AF PF CF
1000h 1001h
1234
1234h
D liu
B nh
(
đ
a ch
)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
MOV DX,DS ; DX
DS
MOV ES,BX ; ES
BX
MOV DI,12h ; DI
12h
MOV AL,12h ; AL
12h
MOV BYTE PTR [1000h],12h ; [1000h]
12h
MOV WORD PTR [2000h],1200h ; [2001h,2000h]
1200h
MOV [BX],DS ; [BX+1,BX]
DS
MOV SS,[2000h] ; SS
[2001h,2000h]
2.2 Lnh PUSH :
- Dng lnh : PUSH reg16 PUSH segreg
PUSH mem16
- Gii thích : SP
SP-2
[SS:SP+1,SS:SP]
thn
- Tác độ ng c :
- Đẩy toán hng ngu ng (n 16 bit vào ch địa ch đỉnh chng là SS:SP).
- Ví d : PUSH DI ; [SS:SP+1,SS:SP]
DI
PUSH CS ; [SS:SP+1,SS:SP]
CS
PUSH [SI] ; [SS:SP+1,SS:SP]
[SI+1,SI]
2.3 Lnh POP :
- Dng lnh : POP reg16 POP segreg
POP mem16
- Gii thích : thđ
[SS:SP+1,SS:SP]
SP
SP+2
- Tác độ ng c :
- Ly d liu t ng vào toán hđỉnh ch ng đích.
- Ví d : POP AX ; AX
[SS:SP+1,SS:SP]
POP ES ; ES
[SS:SP+1,SS:SP]
POP [BX+1] ; [BX+2,BX+1]
[SS:SP+1,SS:SP]
2.4 Lnh XCHG :
- Dng lnh : XCHG reg,reg XCHG mem,reg
XCHG XCHG accum,reg16 reg,mem
- Gii thích : thđ
thn
- Tác độ ng c :
- Trao đổ i n i dung hai toán hng cho nhau.
- Ví d : XCHG AX,CX ; AX
CX
XCHG AH,AL ; AH
AL
XCHG [1000h],DX ; [1001h,1000h]
DX
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2.5 Lnh IN :
- Dng lnh : IN accum,immed8
IN accum,DX
- Gii thích : btl
[cng IO]
- Tác độ ng c :
- Nhp d u t li c ũng xu t nh p vào thanh ghi b tích l y AL hay AX. Trường hp
AX s nhp byte thp trước, byte cao sau.
- Dng lnh có immed8 dùng trong trường hp cđịa ch ng xut nhp 8 bit.
- Ví d : IN AL,61h
IN AX,40h
- Dng lnh có thanh ghi DX dùng cho trường hp địa ch c ng 16 bit. Tuy nhiên d ng
này v p có n có th dùng cho cng xut nh địa ch 8 bit và có li khi s d địng a ch
cng nh p nhi u lđể n.
- Ví d : MOV DX,378h
IN AL,DX
2.6 Lnh OUT :
- Dng lnh : OUT immed8,accum
OUT DX,accum
- Gii thích : [cng IO]
btl
- Tác độ ng c :
- Xut d li u t ng xu thanh ghi b tích lũy AL hoc AX ra c t nhp địa ch 8 bit
là s t c thi immed8 hay có địa ch 16 bit trong thanh ghi DX.
- Ví d : OUT 20h,AL
MOV DX,2F8h
OUT DX,AL
2.7 Lnh XLAT :
- Dng lnh : XLAT
- Gii thích : AL
[DS:BX+AL]
- Tác độ ng c :
- Tra bng. Thanh ghi BX gi địa ch đầu bng. Thanh ghi AL gi ch s ca phn t
cn ly ra.
- d : bài toán tính bình phương mt s nguyên có th thc hin bng cách tra bng
như sau
MOV CX,1000h
MOV DS,CX
MOV BX,2000h ; đị đầa ch u bng
MOV AL,5 ; ch s
XLAT ; tra bng
-----------------------
Sau khi làm xong lnh XLAT :
AL = 25 = 5
2
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
0
1
4
9
16
25
36
49
64
81
0
1
2
3
4
5
6
7
8
9
Đ
a ch
đầu bng
1000:2000
( DS:BX )
Ch s
phn t
( AL )
D u li
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Lnh XLAT có ng d ng trong mã hóa d liu.
2.8 Lnh LEA :
- Dng lnh : LEA reg16,mem
- Gii thích : thđ
địa ch
- Tác độ ng c :
- Np địa ch hiu dng vào thanh ghi 16 bit.
- Ví d : LEA BX,[1000h] ; BX
1000h
LEA SI,[DI][BX][2000h] ; SI
DI+BX+2000h
2.9 Lnh LDS :
- Dng lnh : LDS reg16,mem32
- Gii thích : DS
[địa ch +3,địa ch +2]
thđ
[địa ch +1,địa ch ]
- Tác độ ng c :
- Np 4 byte b nh (con tr) vào thanh ghi DS và mt thanh ghi tng quát.
- Ví d : LDS BX,[1000h] ; DS
[1003h, 1002h]
; BX
[1001h, 1000h]
2.10 Lnh LES :
- Dng lnh : LES reg16,mem32
- Gii thích : ES
[địa ch +3,địa ch +2]
thđ
[địa ch +1,địa ch ]
- Tác độ ng c :
- Np 4 byte b nh (con tr) vào thanh ghi ES và mt thanh ghi tng quát.
- Ví d : LES DI,[1000h] ; ES
[1003h, 1002h]
; SI
[1001h, 1000h]
2.11 Lnh LAHF :
- Dng lnh : LAHF
- Gii thích : AH
Flags
L
- Tác độ ng c :
- Np 8 bit thp ca thanh ghi c vào thanh ghi AH.
2.12 Lnh SAHF :
- Dng lnh : SAHF
- Gii thích : Flags
L
AH
- Tác độ ng c :
- Ct thanh ghi AH vào 8 bit thp ca thanh ghi c.
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2.13 Lnh PUSHF :
- Dng lnh : PUSHF
- Gii thích : SP
SP - 2
[SS:SP+1,SS:SP]
Flags
- Tác độ ng c :
- Đẩy thanh ghi c vào chng.
2.14 Lnh POPF :
- Dng lnh : POPF
- Gii thích : Flags
[SS:SP+1,SS:SP]
SP
SP + 2
- Tác độ ng c :
- Ly thanh ghi c t chng ra.
3. Nhóm lnh s h c :
3.1 Lnh ADD :
- Dng lnh : ADD reg,reg ADD reg,immed
ADD mem,reg ADD mem,immed
ADD reg,mem ADD accum,immed
- Gii thích : thđ
thđ + thn
- Tác độ ng c :
- Cng toán hng ngun vào toán hng đích. Kết qu ct vào toán hng đích.
- Ví d : ADD CX,SI ; CX
CX + SI
ADD DH,BL ; DH
DH + BL
ADD [1000h],BX ; [1001h,1000h]
[1001h,1000h] + BX
ADD [2000h],CL ; [2000h]
[2000h] + CL
ADD AL,[0000h] ; AL
AL + [0000h]
ADD BYTE PTR [SI+8],5 ; [SI+8]
[SI+8] + 05h
3.2 Lnh ADC :
- Dng lnh : ADC reg,reg ADC reg,immed
ADC mem,reg ADC mem,immed
ADC reg,mem ADC accum,immed
- Gii thích : thđ
thđ + thn + CF
- Tác độ ng c :
- Cng toán hng đích vi toán hng ngu n v i c nh. Kết qu ct vào toán hng đích.
ADC dùng cho phép c ng 2 s có chiu dài nhiu byte.
- Ví d : ADC BX,AX ; BX
BX + AX + CF
ADC BYTE PTR [1000h],7Ah ; [1000h]
[1000h]+7Ah+CF
3.3 L nh INC :
- Dng lnh : INC reg INC mem
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Gii thích : thđ
thđ + 1
- Tác độ ng c :
- Tăng t ng 1 vào toán hc là c ng ng không đích như nh h ng cưở nh.
- Ví d : INC CH
INC WORD PTR [1000h]
3.4 Lnh AAA :
- Dng lnh : AAA
- Gii thích : N b b bếu (b
3 2 1 0
c c AF=1 thìa AL) > 9 ho
AL
(AL+6) and 0Fh, AH
AH+1, CF
1, AF
1
- Tác độ ng c :
- Chnh ASCII sau phép c nh kng. Ch ết qu trong AL thành 2 s BCD không nén
trong AH và AL.
- Ví d : kế t qu : AH=00, AL= 0Dh, AF=0, CF=0
sau khi chnh: AH=01h, AL=03h, AF=1, CF=1
3.4 Lnh DAA :
- Dng lnh : DAA
- Gii thích : N b b bếu (b
3 2 1 0
ca AL) > 9 hoc AF=1 thì
AL
(AL+6), AF
1
Nếu AL > 9Fh hoc CF=1 thì
AL
AL+60h, CF
1
- Tác độ ng c :
- Chnh thp phân sau phép cng. Chnh kết qu trong AL thành s BCD nén trong AL.
- Ví d : kế t qu : AL= 0Dh, AF=0, CF=0
sau khi chnh: AL=13h, AF=1, CF=0
kết qu : AL= 9Dh, AF=0, CF=0
sau khi chnh: AL=03h, AF=1, CF=1
3.5 Lnh SUB :
- Dng lnh : SUB reg,reg SUB reg,immed
SUB mem,reg SUB mem,immed
SUB reg,mem SUB accum,immed
- Gii thích : thđ
thđ - thn
- Tác độ ng c :
- Tr toán h đng ích cho toán hng ngun. Kết qu c ng t vào toán h đích.
- Ví d : SUB DL,AL ; DL
DL - AL
SUB CX,[DI] ; CX
CX - [DI+1,DI]
SUB BP,4 ; BP
BP - 4
3.6 Lnh SBB :
- Dng lnh : SBB reg,reg SBB reg,immed
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
? ? ?
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
? ? ?
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
SBB mem,reg SBB mem,immed
SBB reg,mem SBB accum,immed
- Gii thích : thđ
thđ - thn - CF
- Tác độ ng c :
- Tr toán h đng ích cho toán hng ngun và c nh. K c ng ết qu t vào toán h đích.
- Ví d : SBB SI,BX ; SI
SI - BX -CF
SBB BYTE PTR [BX],2 ; [BX+1,BX]
[BX+1,BX] - 2 - CF
3.7 Lnh DEC :
- Dng lnh : DEC reg DEC mem
- Gii thích : thđ
thđ - 1
- Tác độ ng c :
- Gim tc là tr đ 1 vào toán hng ích nhưng không nh hưởng c nh.
-Ví d : DEC AX
DEC BYTE PTR [SI][2000h]
3.8 Lnh NEG :
- Dng lnh : NEG reg NEG mem
- Gii thích : thđ
bù 2(thđ)
- Tác độ ng c :
- Ly bù 2 toán hng đích.
3.9 Lnh CMP :
- Dng lnh : CMP reg,reg CMP reg,immed
CMP mem,reg CMP mem,immed
CMP reg,mem CMP accum,immed
- Gii thích : thđ - thn
- Tác độ ng c :
- So sánh. Thc hin tr toán hng đích cho toán hng ngu n, không l u l ư i kết qu
ch gi l ng c . i tác độ a phép tr lên các c
- Ví d : CMP AL,8 ; AL - 8
CMP WORD PTR [1000h], 3 ; [1001h,1000h] - 3
3.10 Lnh AAS :
- Dng lnh : AAS
- Gii thích : N D D Dếu (D
3 2 1 0
ca AL) > 9 hoc AF=1 thì
AL
(AL - 6) and 0Fh, AH
AH - 1, CF
1, AF
1
- Tác độ ng c :
- Chnh ASCII sau phép c nh kng. Ch ết qu trong AL thành 2 s BCD không nén
trong AH và AL.
- Ví d : kế t qu : AH=00h, AL= 0Dh, AF=0, CF=0
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
? ? ?
×
×
×
××
?
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
sau khi chnh: AH=01h, AL=03h, AF=1, CF=1
3.11 Lnh DAS :
- Dng lnh : DAS
- Gii thích : N D D Dếu (D
3 2 1 0
ca AL) > 9 hoc AF=1 thì
AL
(AL - 6), AF
1
Nếu AL > 9Fh hoc CF=1 thì
AL
AL - 60h, CF
1
- Tác độ ng c :
- Chnh thp phân sau phép tr. Chnh kết qu trong AL thành s BCD nén trong AL.
- Ví d : kế t qu ca (4 - 8) : AL= 0FCh, AF=1, CF=1
sau khi chnh : AL=96h, AF=1, CF=1
3.12 Lnh MUL :
- Dng lnh : MUL reg MUL mem
- Gii thích : Toán hng ngun 8 bit thì : AX
AL * thn8
Toán hng ngun 16 bit thì : DX AX
AX * thn16
- Tác độ ng c :
- Nhân hai s đị không du 8 bit hay 16 bit. S bit th c hin được xác nh b ng chiu dài
ca toán hng ngun.
Phép nhân 8 bit : thc hin nhân AL vi toán hng ngun, kết qu 16 bit ct trong
thanh ghi AX.
Phép nhân 16 bit : thc hin nhân AX vi toán h t qu ng ngu n, kế 32 bit ct trong
2 thanh ghi DX và AX. DX gi 16 bit cao, AX gi 16 bit thp.
- Ví d : Nế u AL=5, CH=4, sau khi thc hi n l nh
MUL CH
ta có AX = AL*CH = 0014h.
Nếu AX=500h, [1001h,1000h]=401h, sau khi thc hin l nh
MUL WORD PTR [1000h]
ta có DXAX = AX * [1001h,1000h] = 500h * 401h = 00140500h
Nghĩa là DX=0014h và AX=0500h.
3.13 Lnh IMUL :
- Dng lnh : IMUL reg IMUL mem
- Tác độ ng c :
- Nhân hai s d c hiu. Th n gi ng h t như l ế nh MUL, ch k t qu được xem
s có du.
3.14 Lnh AAM :
- Dng lnh : AAM
- Gii thích : AH
(AL / 0Ah)
AL
s d c ư a (AL / 0Ah)
- Tác độ ng c :
OF DF IF SF ZF AF PF CF
?
×
×
×
××
×
×
×
××
×
×
×
××
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
×× ? ? ? ?
×
×
×
××
OF DF IF SF ZF AF PF CF
?
×
×
×
××
×
×
×
××
?
?
OF DF IF SF ZF AF PF CF
×
×
×
×× ? ? ? ?
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Chnh ASCII sau phép nhân. Có th dùng để đổi s hex ra s BCD không nén.
- Ví d : kết qu : AH = 00, AL = 41h.
sau khi chnh : AH = 06, AL = 05.
3.15 L nh DIV :
- Dng lnh : DIV reg DIV mem
- Gii thích : Toán hng ngun 8 bit thì : AL
(AX / thn8)
AH
s d c ư a (AX / thn8)
Toán hng ngun 16 bit thì : AX
(DXAX / thn16)
DX
s d c ư a (DXAX / thn16)
- Tác độ ng c :
- Chia hai s không du.
- Nếu toán h ng ngu n thanh ghi hay b nh 8 bit, th c hin chia s 16 bit trong
thanh ghi AX cho toán hng ngun 8 bit. Kết qu 8 bit c t trong thanh ghi AL. S dư
8 bit ct trong thanh ghi AH.
- Nếu toán hng ngu nhn là thanh ghi hay b 16 bit, thc hin chia s 32 bit trong 2
thanh ghi DXAX cho toán hng ngun 16 bit. K t trong thanh ghi AX. ết qu 16 bit c
S d t trong thanh ghi DX. ư 16 bit c
- Ví d : Nế u AX=0024h, [2000h]=05 thì sau khi th c hi n l nh
DIV BYTE PTR [2000h]
ta có AL=07 và AH=01.
Nếu DX=0001h, AX=0024h, BX=0 n l nh 200h thì sau khi thc hi
DIV BX
ta có AX=0008 và DX=0024h.
3.16 Lnh IDIV :
- Dng lnh : IDIV reg IDIV mem
- Tác độ ng c :
- Chia hai s có du. Thc hin gi l ng k u. ng như nh DIV như ết qu coi là s có d
3.17 Lnh AAD :
- Dng lnh : AAD
- Gii thích : AL
((AH * 0Ah) + AL)
AH
0
- Tác độ ng c :
- Chnh ASCII trước phép chia IDIV. Có th dùng lnh này để đổi s BCD không nén
trong AX ra thành giá tr nh phân trong AL.
- Ví d : nếu có : AL=03h, AH=05h
sau khi chnh : AL=35h, AH=00h
3.18 Lnh CBW :
- Dng lnh : CBW
OF DF IF SF ZF AF PF CF
? ? ? ? ? ?
OF DF IF SF ZF AF PF CF
?
×
×
×
××
×
×
×
××
?
?
OF DF IF SF ZF AF PF CF
? ? ? ? ? ?
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Gii thích : Nếu AL < 80h thì AH
00h
Nếu AL >= 80h thì AH
0FFh
- Tác độ ng c :
- M rng du trước khi dùng lnh chia. Đổi s 1 byte có du trong AL thành s 2 byte
có du trong AX.
3.19 Lnh CWD :
- Dng lnh : CWD
- Gii thích : Nếu AX < 8000h thì DX
0000h
Nếu AX >= 8000h thì DX
0FFFFh
- Tác độ ng c :
- M rng du trước khi dùng lnh chia. Đổi s 2 byte có du trong AX thành s 4 byte
có du trong DXAX.
4. Nhóm lnh lun lý :
4.1 Lnh NOT :
- Dng lnh : NOT reg NOT mem
- Gii thích : thđ
bÓ 1 ca thđ
- Tác độ ng c :
- Đảo hay ly bù 1.
- Ví d : NOT AL
NOT WORD PTR [BX+1000h]
4.2 L nh SHL/SAL :
- Dng lnh : SHL reg,1 SHL mem,1
SHL reg,CL SHL mem,CL
- Gii thích : thđ
(thđ) dch trái 1 hay nhiu bit.
- Tác độ ng c :
- Dch trái. Dng SHL reg,1 dùng để dch trái 1 bit. Dng SHL reg,CL dùng để dch
trái nhiu bit. Lúc đ ó thanh ghi CL ch a s bit cn dch.
- Ví d : SHL DH,1
SAL CX,1
MOV CL,3
SHL WORD PTR [1000h],CL ; dch trái 3 bit.
4.3 Lnh SHR :
- Dng lnh : SHR reg,1 SHR mem,1
SHR reg,CL SHR mem,CL
- Gii thích : thđ
(thđ) d ch ph i lun lý 1 hay nhiu bit.
- Tác độ ng c :
- Dch phi lun lý. Dng có thanh ghi CL dùng dđể ch nhiu bit.
- Ví d : SHR AX,1
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
MOV CL,2
SHR BYTE PTR [1000h],CL ; dch phi lun lý 2 bit.
4.4 Lnh SAR :
- Dng lnh : SAR reg,1 SAR mem,1
SAR reg,CL SAR mem,CL
- Gii thích : thđ
(thđ) d ch ph i s h c 1 hay nhiu bit.
- Tác độ ng c :
- Dch phi s h c. Dng có thanh ghi CL dùng để dch nhiu bit.
- Ví d : SAR DX,1
MOV CL,7
SAR WORD PTR [2000h],CL ; dch phi s hc 7 bit.
4.5 Lnh ROL :
- Dng lnh : ROL reg,1 ROL mem,1
ROL ROL reg,CL mem,CL
- Gii thích : thđ
(thđ ) quay trái không qua c nh 1 hay nhiu bit.
- Tác độ ng c :
- Quay trái không qua c nh. Dng có thanh ghi CL dùng để quay nhiu bit.
- Ví d : ROL DL,1
MOV CL,6
ROL WORD PTR [1000h],CL ; quay trái không qua c nh 6 bit.
4.6 Lnh ROR :
- Dng lnh : ROR reg,1 ROR mem,1
ROR ROR reg,CL mem,CL
- Gii thích : thđ
(thđ) quay phi không qua c nh 1 hay nhiu bit.
- Tác độ ng c :
- Quay phi không qua c để nh. Dng có thanh ghi CL dùng quay nhiu bit.
- Ví d : ROR SI,1
MOV CL,3
ROR WORD PTR [3000h],CL ; quay phi không qua c nh 3 bit
4.7 Lnh RCL :
- Dng lnh : RCL reg,1 RCL mem,1
RCL RCL reg,CL mem,CL
- Gii thích : thđ
(thđ) quay trái qua c nh 1 hay nhiu bit.
- Tác độ ng c :
- Quay trái qua c nh . D ng có thanh ghi CL dùng để quay nhiu bit.
- Ví d : RCL BX,1
MOV CL,4
RCL BYTE PTR [1000h],CL ; quay trái qua c nh 4 bit.
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
CuuDuongThanCong.com https://fb.com/tailieudientucntt
4.8 Lnh RCR :
- Dng lnh : RCR reg,1 RCR mem,1
RCR RCR reg,CL mem,CL
- Gii thích : thđ
(thđ) quay phi qua c nh 1 hay nhiu bit.
- Tác độ ng c :
- Quay phi qua c nh ng có thanh ghi CL dùng . D để quay nhiu bit.
- Ví d : RCR CH,1
MOV CL,2
RCR BYTE PTR [1800h],CL ; quay phi qua c nh 2 bit.
4.9 Lnh AND :
- Dng lnh : AND reg,reg AND reg,immed
AND mem,reg AND mem,immed
AND reg,mem AND accum,immed
- Gii thích : thđ
thđ AND thn.
- Tác độ ng c :
- Và lun lý. Xóa c nh 0. v
- Ví d : AND CH,AH
AND [SI],DX
AND BYTE PTR [1000h],10000000b
AND AX,0FFF0h
4.10 Lnh TEST :
- Dng lnh : TEST reg,reg TEST reg,immed
TEST mem,reg TEST mem,immed
TEST reg,mem TEST accum,immed
- Gii thích : thđ AND thn.
- Tác độ ng c :
- Và lun hai toán hng nhưng không gi l ế i k t qu ch l p các c . Xóa c nh
c ó toán h tràn v 0. Thường dùng kiđể m tra bit. Lúc đ ng ngu n là mt mt n
bit cn thiết.
- Ví d : TEST DX,1 ; kim tra bit 0
TEST BYTE PTR [2000h],10000000b ; kim tra bit 7
4.11 Lnh OR :
- Dng lnh : OR reg,reg OR reg,immed
OR mem,reg OR mem,immed
OR reg,mem OR accum,immed
- Gii thích : thđ
thđ OR thn.
- Tác độ ng c :
- Hay lun lý. Xóa c nh v 0.
- Ví d : OR DL,CH
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
×
×
×
××
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
0
OF DF IF SF ZF AF PF CF
0
×
×
×
××
×
×
×
××
?
0
OF DF IF SF ZF AF PF CF
×
×
×
××
×
×
×
××
×
×
×
××
?
0
CuuDuongThanCong.com https://fb.com/tailieudientucntt
| 1/25

Preview text:

TẬP LỆNH CPU INTEL 8086/8088 1. Dạng lệnh :
- Một lệnh của vi xử lý 86 có dạng tổng quát như sau : ,
- Mã gợi nhớ giúp cho người sử dụng biết hoạt động của lệnh. Mã gợi nhớ thường là các
chữ tiếng anh viết tắt như : MOV là lệnh chuyển, ADD là lệnh c ng, AND là l ộ ệnh và luận
lý, JMP là lệnh nhảy . . .
- Toán hạng đích giữ kết quả (nếu có yêu cầu) sau khi thi hành lệnh. Toán hạng đích có
thể là thanh ghi hay bộ nhớ.
- Toán hạng nguồn có thể là thanh ghi, bộ nhớ hay một số tức thời.
- Toán hạng thanh ghi là các thanh ghi của vi xử lý 86 gồm các thanh ghi tổng quát (8 bit
lẫn 16 bit) và các thanh ghi đoạn đã biết.
- Toán hạng số tức thời có thể là số trong các hệ đếm khác nhau và được viết theo qui định như sau : . Số hệ 2
: ××××××××B (× là 1 bit nhị phân). Ví dụ : 01101101B, 11111111B
. Số hệ 10 : ××××× , hay ×××××D (× là một số thuộc hệ 10). Ví dụ : 65535, 1000
. Số hệ 16 : ××××H và bắt đầu bằng số ( là một số thuộc hệ 16). Ví dụ : 1A59H, 0E05BH
- Toán hạng bộ nhớ dùng trong tập lệnh vi xử lý 86 sử dụng phương pháp định địa chỉ tổng
hợp được gọi là địa chỉ hiệu dụ . ng
- Địa chỉ hiệu dụng là tổ hợp của 3 nhóm sau được đặt trong dấu ngoặc vuông [ ]:
. Nhóm thanh ghi chỉ số : SI, DI . Nhóm thanh ghi nền : BX, BP . Địa chỉ trực tiếp : số 16 bit
- Các thanh ghi trong cùng một nhóm không được xuất hiện trong cùng một địa chỉ hiệu dụng. - Ví dụ : . Địa chỉ hiệu d ng h ụ ợp lệ :
[1000h], [SI], [DI], [BX], [BP]
[SI+BX], [SI+BP], [DI+BX], [DI+BP], [SI+1000h], [DI+100h], [BX+1], [BP+1]
[SI][BX][1000h], [SI+ BP+1000h], [DI+BX][1000h], [DI+1000h][BP] . Địa chỉ hiệu d ng ụ không hợp lệ :
[70000], [AX], [SI+DI+1000h], [BX][BP]
- Địa chỉ hiệu dụng chính là thành phần offset của địa chỉ luận lý bộ nhớ.
- Segment của địa chỉ hiệu d ng ụ
được mặc định như sau : . Nếu không s d
ử ụng BP trong địa chỉ hiệu dụng thì mặc định theo thanh ghi DS.
. Nếu có BP trong địa chỉ hiệu dụng thì mặc định theo thanh ghi SS.
- Các hoạt động thực hiện trên bộ nhớ thông qua địa chỉ hiệu dụng chia ra làm 2 trường
hợp : hoạt động 8 bit và hoạt động 16 bit.
- Hoạt động bộ nhớ 8 bit làm việc trên 1 byte bộ nhớ ngay vị trí chỉ ra bởi địa chỉ hiệu dụng. CuuDuongThanCong.com
https://fb.com/tailieudientucntt
- Hoạt động bộ nhớ 16 bit sẽ làm việc trên 2 byte bộ nhớ có địa chỉ kế tiếp nhau và nội
dung của chúng được ghép lại thành dữ liệu 16 bit theo qui tắc "byte cao địa chỉ cao, byte thấ đị
p a chỉ thấp" như trong hình sau : 1000h 1001h (địa chỉ) Bộ nhớ 34 12 1234h Dữ liệu
- Để thuận tiện trong vấn đề giải thích lệnh, ta qui ước thêm cách diễn tả sau :
. Dữ liệu 8 bit của bộ nhớ : [địa chỉ ]
. Dữ liệu 16 bit của bộ nhớ : [địa chỉ +1,đ a ị chỉ]
- Để xác định rõ hoạt động của bộ nhớ, ta phải dùng thêm toán tử PTR như sau : . Hoạt động 8 bit :
BYTE PTR [1000h] là tham khảo 1 byte bộ nhớ có địa chỉ 1000h . Hoạt động 16 bit :
WORD PTR [1000h] là tham khảo đến 2 byte bộ nhớ liên tiếp 1000h và 1001h
- Các chữ viết tắt dùng trong các nhóm lệnh : reg : thanh ghi tổng quát. reg16 : thanh ghi 16 bit. segreg : thanh ghi đoạn. accum
: thanh ghi bộ tích lũy AX hoặc AL. mem
: bộ nhớ (địa chỉ hiệu dụng). mem16
: bộ nhớ 2 byte liên tiếp (địa chỉ hiệu dụng). mem32
: bộ nhớ 4 byte liên tiếp (địa chỉ hiệu dụng). immed : số tức thời. immed8 : số tức thời 8 bit. shortlabel
: nhãn ngắn (-128 byte +127 byte). nearlabel
: nhãn trong đoạn (2 byte offset). farlabel
: nhãn ngoài đoạn (4 byte : 2 byte segment và 2 byte offset).
2. Nhóm lệnh chuyển dữ liệu :
2.1 Lệnh MOV :
- Dạng lệnh : MOV reg,reg MOV reg,immed MOV mem,reg MOV mem,immed MOV reg,mem MOV mem16,segreg MOV reg16,segreg MOV segreg,mem16 MOV segreg,reg16
- Giải thích : thđ thn - Tác động cờ : OF DF IF SF ZF AF PF CF
- Chép toán hạng nguồn vào toán hạng đích. - Ví dụ : MOV AX,CX ; AX CX MOV DL,BH ; DL BH MOV [SI+1000h],BP
; [SI+1001h, SI+1000h] BP MOV DX,[1000h]
; DX[1001h,1000h] CuuDuongThanCong.com
https://fb.com/tailieudientucntt MOV DX,DS ; DX DS MOV ES,BX ; ES BX MOV DI,12h ; DI 12h MOV AL,12h ; AL 12h MOV BYTE PTR [1000h],12h
; [1000h] 12h
MOV WORD PTR [2000h],1200h ; [2001h,2000h] 1200h MOV [BX],DS
; [BX+1,BX] DS MOV SS,[2000h]
; SS [2001h,2000h] 2.2 Lệnh PUSH :
- Dạng lệnh : PUSH reg16 PUSH segreg PUSH mem16
- Giải thích : SP SP-2
[SS:SP+1,SS:SP] thn - Tác động cờ : OF DF IF SF ZF AF PF CF
- Đẩy toán hạng nguồn 16 bit vào ch ng ( ồ
địa chỉ đỉnh chồng là SS:SP). - Ví dụ : PUSH DI
; [SS:SP+1,SS:SP] DI PUSH CS
; [SS:SP+1,SS:SP] CS PUSH [SI]
; [SS:SP+1,SS:SP] [SI+1,SI] 2.3 Lệnh POP : - Dạng lệnh : POP reg16 POP segreg POP mem16
- Giải thích : thđ [SS:SP+1,SS:SP]
SP SP+2 - Tác động cờ : OF DF IF SF ZF AF PF CF
- Lấy dữ liệu từ đỉnh ch ng vào toán h ồ ạng đích. - Ví dụ : POP AX
; AX [SS:SP+1,SS:SP] POP ES
; ES [SS:SP+1,SS:SP] POP [BX+1]
; [BX+2,BX+1] [SS:SP+1,SS:SP] 2.4 Lệnh XCHG :
- Dạng lệnh : XCHG reg,reg XCHG mem,reg XCHG accum,reg16 XCHG reg,mem
- Giải thích : thđ thn - Tác động cờ : OF DF IF SF ZF AF PF CF
- Trao đổi nội dung hai toán hạng cho nhau. - Ví dụ : XCHG AX,CX ; AX CX XCHG AH,AL ; AH AL XCHG [1000h],DX
; [1001h,1000h] DX CuuDuongThanCong.com
https://fb.com/tailieudientucntt 2.5 Lệnh IN :
- Dạng lệnh : IN accum,immed8 IN accum,DX
- Giải thích : btl [cổng IO] - Tác động cờ : OF DF IF SF ZF AF PF CF
- Nhập dữ liệu từ cổng xuất nhập vào thanh ghi bộ tích lũy AL hay AX. Trường hợp
AX sẽ nhập byte thấp trước, byte cao sau.
- Dạng lệnh có immed8 dùng trong trường hợp địa chỉ cổng xuất nhập 8 bit. - Ví dụ : IN AL,61h IN AX,40h
- Dạng lệnh có thanh ghi DX dùng cho trường hợp địa chỉ cổng 16 bit. Tuy nhiên dạng
này vẫn có thể dùng cho cổng xuất nhập có địa chỉ 8 bit và có lợi khi sử dụng địa chỉ
cổng để nhập nhiều lần. - Ví dụ : MOV DX,378h IN AL,DX 2.6 Lệnh OUT :
- Dạng lệnh : OUT immed8,accum OUT DX,accum
- Giải thích : [cổng IO] btl - Tác động cờ : OF DF IF SF ZF AF PF CF - Xuất d
ữ liệu từ thanh ghi bộ tích lũy AL hoặc AX ra c ng ổ
xuất nhập có địa chỉ 8 bit
là số tức thời immed8 hay có địa chỉ 16 bit trong thanh ghi DX. - Ví dụ : OUT 20h,AL MOV DX,2F8h OUT DX,AL 2.7 Lệnh XLAT : - Dạng lệnh : XLAT
- Giải thích : AL [DS:BX+AL] - Tác động cờ : OF DF IF SF ZF AF PF CF
- Tra bảng. Thanh ghi BX giữ địa chỉ đầu bảng. Thanh ghi AL giữ chỉ số của phần tử cần lấy ra.
- Ví dụ : bài toán tính bình phương một số nguyên có thể thực hiện bằng cách tra bảng như sau MOV CX,1000h Địa chỉ MOV DS,CX đầu bảng 0 1000:2000 0 MOV
BX,2000h ; địa chỉ đầu bảng 1 ( DS:BX ) 1 Chỉ số MOV AL,5 ; chỉ s ố 4 2 phần tử 9 ( AL ) XLAT ; tra bảng 3 16 4 ----------------------- 25 5
Sau khi làm xong lệnh XLAT : 36 6 Dữ liệu AL = 25 = 52 49 7 64 8 81 9 CuuDuongThanCong.com
https://fb.com/tailieudientucntt - Lệnh XLAT có ng d ứ
ụng trong mã hóa dữ liệu. 2.8 Lệnh LEA :
- Dạng lệnh : LEA reg16,mem
- Giải thích : thđ địa chỉ - Tác động cờ : OF DF IF SF ZF AF PF CF
- Nạp địa chỉ hiệu dụng vào thanh ghi 16 bit. - Ví dụ : LEA BX,[1000h] ; BX 1000h LEA SI,[DI][BX][2000h]
; SI DI+BX+2000h 2.9 Lệnh LDS :
- Dạng lệnh : LDS reg16,mem32
- Giải thích : DS [địa chỉ+3,địa chỉ+2]
thđ [địa chỉ+1,địa chỉ] - Tác động cờ : OF DF IF SF ZF AF PF CF
- Nạp 4 byte bộ nhớ (con trỏ) vào thanh ghi DS và một thanh ghi tổng quát. - Ví dụ : LDS BX,[1000h]
; DS [1003h, 1002h]
; BX [1001h, 1000h] 2.10 Lệnh LES :
- Dạng lệnh : LES reg16,mem32
- Giải thích : ES [địa chỉ+3,địa chỉ+2]
thđ [địa chỉ+1,địa chỉ] - Tác động cờ : OF DF IF SF ZF AF PF CF
- Nạp 4 byte bộ nhớ (con trỏ) vào thanh ghi ES và một thanh ghi tổng quát. - Ví dụ : LES DI,[1000h]
; ES [1003h, 1002h]
; SI [1001h, 1000h] 2.11 Lệnh LAHF : - Dạng lệnh : LAHF
- Giải thích : AH FlagsL - Tác động cờ : OF DF IF SF ZF AF PF CF
- Nạp 8 bit thấp của thanh ghi cờ vào thanh ghi AH. 2.12 Lệnh SAHF : - Dạng lệnh : SAHF
- Giải thích : FlagsL AH - Tác động cờ : OF DF IF SF ZF AF PF CF
- Cất thanh ghi AH vào 8 bit thấp của thanh ghi cờ. CuuDuongThanCong.com
https://fb.com/tailieudientucntt 2.13 Lệnh PUSHF : - Dạng lệnh : PUSHF
- Giải thích : SP SP - 2
[SS:SP+1,SS:SP] Flags - Tác động cờ : OF DF IF SF ZF AF PF CF
- Đẩy thanh ghi cờ vào chồng. 2.14 Lệnh POPF : - Dạng lệnh : POPF
- Giải thích : Flags [SS:SP+1,SS:SP] SP SP + 2 - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × × × ×
- Lấy thanh ghi cờ từ chồng ra.
3. Nhóm lệnh số học :
3.1 Lệnh ADD :
- Dạng lệnh : ADD reg,reg ADD reg,immed ADD mem,reg ADD mem,immed ADD reg,mem ADD accum,immed
- Giải thích : thđ thđ + thn - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × ×
- Cộng toán hạng nguồn vào toán hạng đích. Kết quả cất vào toán hạng đích. - Ví dụ : ADD CX,SI
; CX CX + SI ADD DH,BL
; DH DH + BL ADD [1000h],BX
; [1001h,1000h] [1001h,1000h] + BX ADD [2000h],CL
; [2000h] [2000h] + CL ADD AL,[0000h]
; AL AL + [0000h]
ADD BYTE PTR [SI+8],5 ; [SI+8] [SI+8] + 05h 3.2 Lệnh ADC :
- Dạng lệnh : ADC reg,reg ADC reg,immed ADC mem,reg ADC mem,immed ADC reg,mem ADC accum,immed
- Giải thích : thđ thđ + thn + CF - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × ×
- Cộng toán hạng đích với toán hạng nguồn với cờ nhớ. Kết quả cất vào toán hạng đích.
ADC dùng cho phép cộng 2 số có chiều dài nhiều byte. - Ví dụ : ADC BX,AX
; BX BX + AX + CF
ADC BYTE PTR [1000h],7Ah ; [1000h] [1000h]+7Ah+CF 3.3 Lệnh INC :
- Dạng lệnh : INC reg INC mem CuuDuongThanCong.com
https://fb.com/tailieudientucntt
- Giải thích : thđ thđ + 1 - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × ×
- Tăng tức là c ng 1 vào toán h ộ ạng đích nh ng không ư ảnh hư ng c ở ờ nhớ. - Ví dụ : INC CH INC WORD PTR [1000h] 3.4 Lệnh AAA : - Dạng lệnh : AAA
- Giải thích : Nếu (b3b2b1b0 của AL) > 9 ho c AF=1 thì
AL (AL+6) and 0Fh, AH AH+1, CF 1, AF 1 - Tác động cờ : OF DF IF SF ZF AF PF CF ? ? ? × ? ×
- Chỉnh ASCII sau phép cộng. Chỉnh kết quả trong AL thành 2 số BCD không nén trong AH và AL. - Ví dụ : kết quả : AH=00, AL= 0Dh, AF=0, CF=0 sau khi chỉnh: AH=01h, AL=03h, AF=1, CF=1 3.4 Lệnh DAA : - Dạng lệnh : DAA
- Giải thích : Nếu (b3b2b1b0 của AL) > 9 hoặc AF=1 thì
AL (AL+6), AF 1
Nếu AL > 9Fh hoặc CF=1 thì
AL AL+60h, CF 1 - Tác động cờ : OF DF IF SF ZF AF PF CF ? ? ? × ? ×
- Chỉnh thập phân sau phép cộng. Chỉnh kết quả trong AL thành số BCD nén trong AL. - Ví dụ : kết quả : AL= 0Dh, AF=0, CF=0 sau khi chỉnh: AL=13h, AF=1, CF=0 kết quả : AL= 9Dh, AF=0, CF=0 sau khi chỉnh: AL=03h, AF=1, CF=1 3.5 Lệnh SUB :
- Dạng lệnh : SUB reg,reg SUB reg,immed SUB mem,reg SUB mem,immed SUB reg,mem SUB accum,immed
- Giải thích : thđ thđ - thn - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × × - Trừ toán hạ đ
ng ích cho toán hạng nguồn. Kết quả cất vào toán hạng đích. - Ví dụ : SUB DL,AL
; DL DL - AL SUB CX,[DI]
; CX CX - [DI+1,DI] SUB BP,4 ; BP BP - 4 3.6 Lệnh SBB :
- Dạng lệnh : SBB reg,reg SBB reg,immed CuuDuongThanCong.com
https://fb.com/tailieudientucntt SBB mem,reg SBB mem,immed SBB reg,mem SBB accum,immed
- Giải thích : thđ thđ - thn - CF - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × × - Trừ toán hạ đ
ng ích cho toán hạng nguồn và cờ nhớ. Kết quả cất vào toán hạng đích. - Ví dụ : SBB SI,BX
; SI SI - BX -CF
SBB BYTE PTR [BX],2 ; [BX+1,BX] [BX+1,BX] - 2 - CF 3.7 Lệnh DEC :
- Dạng lệnh : DEC reg DEC mem
- Giải thích : thđ thđ - 1 - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × ×
- Giảm tức là trừ 1 vào toán hạng đích nhưng không ảnh hưởng cờ nhớ. -Ví dụ : DEC AX DEC BYTE PTR [SI][2000h] 3.8 Lệnh NEG :
- Dạng lệnh : NEG reg NEG mem
- Giải thích : thđ bù 2(thđ) - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × ×
- Lấy bù 2 toán hạng đích. 3.9 Lệnh CMP :
- Dạng lệnh : CMP reg,reg CMP reg,immed CMP mem,reg CMP mem,immed CMP reg,mem CMP accum,immed
- Giải thích : thđ - thn - Tác động cờ : OF DF IF SF ZF AF PF CF × × × × × ×
- So sánh. Thực hiện trừ toán hạng đích cho toán hạng ngu n, ồ không l u ư lại kết quả mà chỉ gi l ữ ại tác ng c độ
ủa phép trừ lên các cờ. - Ví dụ : CMP AL,8 ; AL - 8
CMP WORD PTR [1000h], 3 ; [1001h,1000h] - 3 3.10 Lệnh AAS : - Dạng lệnh : AAS
- Giải thích : Nếu (D3D2D1D0 của AL) > 9 hoặc AF=1 thì
AL (AL - 6) and 0Fh, AH AH - 1, CF 1, AF 1 - Tác động cờ : OF DF IF SF ZF AF PF CF ? ? ? × ? ×
- Chỉnh ASCII sau phép cộng. Chỉnh kết quả trong AL thành 2 số BCD không nén trong AH và AL. - Ví dụ : kết quả : AH=00h, AL= 0Dh, AF=0, CF=0 CuuDuongThanCong.com
https://fb.com/tailieudientucntt
sau khi chỉnh: AH=01h, AL=03h, AF=1, CF=1 3.11 Lệnh DAS : - Dạng lệnh : DAS
- Giải thích : Nếu (D3D2D1D0 của AL) > 9 hoặc AF=1 thì
AL (AL - 6), AF 1
Nếu AL > 9Fh hoặc CF=1 thì
AL AL - 60h, CF 1 - Tác động cờ : OF DF IF SF ZF AF PF CF ? × × × × ×
- Chỉnh thập phân sau phép trừ. Chỉnh kết quả trong AL thành số BCD nén trong AL. - Ví dụ :
kết quả của (4 - 8) : AL= 0FCh, AF=1, CF=1 sau khi chỉnh : AL=96h, AF=1, CF=1 3.12 Lệnh MUL :
- Dạng lệnh : MUL reg MUL mem
- Giải thích : Toán hạng nguồn 8 bit thì : AX AL * thn8
Toán hạng nguồn 16 bit thì : DX AX AX * thn16 - Tác động cờ : OF DF IF SF ZF AF PF CF × ? ? ? ? ×
- Nhân hai số không dấu 8 bit hay 16 bit. Số bit thực hiện được xác định bằng chiều dài của toán hạng nguồn.
♣ Phép nhân 8 bit : thực hiện nhân AL với toán hạng nguồn, kết quả 16 bit cất trong thanh ghi AX.
♣ Phép nhân 16 bit : thực hiện nhân AX với toán hạng nguồn, kết quả 32 bit cất trong
2 thanh ghi DX và AX. DX giữ 16 bit cao, AX giữ 16 bit thấp. - Ví dụ :
Nếu AL=5, CH=4, sau khi thực hiện lệnh MUL CH ta có AX = AL*CH = 0014h.
Nếu AX=500h, [1001h,1000h]=401h, sau khi thực hiện lệnh MUL WORD PTR [1000h]
ta có DXAX = AX * [1001h,1000h] = 500h * 401h = 00140500h
Nghĩa là DX=0014h và AX=0500h. 3.13 Lệnh IMUL :
- Dạng lệnh : IMUL reg IMUL mem - Tác động cờ : OF DF IF SF ZF AF PF CF × ? ? ? ? ×
- Nhân hai số có dấu. Th c ự hiện gi ng ố
hệt như lệnh MUL, chỉ có kết quả được xem là số có dấu. 3.14 Lệnh AAM : - Dạng lệnh : AAM
- Giải thích : AH (AL / 0Ah)
AL s d
ố ư của (AL / 0Ah) - Tác động cờ : OF DF IF SF ZF AF PF CF ? × × ? × ? CuuDuongThanCong.com
https://fb.com/tailieudientucntt
- Chỉnh ASCII sau phép nhân. Có thể dùng để đổi số hex ra số BCD không nén. - Ví dụ : kết quả : AH = 00, AL = 41h.
sau khi chỉnh : AH = 06, AL = 05. 3.15 Lệnh DIV :
- Dạng lệnh : DIV reg DIV mem
- Giải thích : Toán hạng nguồn 8 bit thì : AL (AX / thn8)
AH s d
ố ư của (AX / thn8)
Toán hạng nguồn 16 bit thì : AX (DXAX / thn16)
DX s d
ố ư của (DXAX / thn16) - Tác động cờ : OF DF IF SF ZF AF PF CF ? ? ? ? ? ? - Chia hai số không dấu.
- Nếu toán hạng nguồn là thanh ghi hay bộ nhớ 8 bit, thực hiện chia ố s 16 bit trong
thanh ghi AX cho toán hạng nguồn 8 bit. Kết quả 8 bit cất trong thanh ghi AL. Số dư
8 bit cất trong thanh ghi AH.
- Nếu toán hạng nguồn là thanh ghi hay b
ộ nhớ 16 bit, thực hiện chia số 32 bit trong 2
thanh ghi DXAX cho toán hạng nguồn 16 bit. Kết quả 16 bit cất trong thanh ghi AX.
Số dư 16 bit cất trong thanh ghi DX. - Ví dụ :
Nếu AX=0024h, [2000h]=05 thì sau khi thực hiện lệnh DIV BYTE PTR [2000h]
ta có AL=07 và AH=01.
Nếu DX=0001h, AX=0024h, BX=0200h thì sau khi thực hiện lệnh DIV BX
ta có AX=0008 và DX=0024h. 3.16 Lệnh IDIV :
- Dạng lệnh : IDIV reg IDIV mem - Tác động cờ : OF DF IF SF ZF AF PF CF ? ? ? ? ? ?
- Chia hai số có dấu. Thực hiện giống nh l ư ệnh DIV nh ng k ư
ết quả coi là số có dấu. 3.17 Lệnh AAD : - Dạng lệnh : AAD
- Giải thích : AL ((AH * 0Ah) + AL)
AH 0 - Tác động cờ : OF DF IF SF ZF AF PF CF ? × × ? × ?
- Chỉnh ASCII trước phép chia IDIV. Có thể dùng lệnh này để đổi số BCD không nén
trong AX ra thành giá trị nhị phân trong AL. - Ví dụ : nếu có : AL=03h, AH=05h
sau khi chỉnh : AL=35h, AH=00h 3.18 Lệnh CBW : - Dạng lệnh : CBW CuuDuongThanCong.com
https://fb.com/tailieudientucntt
- Giải thích : Nếu AL < 80h thì AH 00h
Nếu AL >= 80h thì AH 0FFh - Tác động cờ : OF DF IF SF ZF AF PF CF
- Mở rộng dấu trước khi dùng lệnh chia. Đổi số 1 byte có dấu trong AL thành số 2 byte có dấu trong AX. 3.19 Lệnh CWD : - Dạng lệnh : CWD
- Giải thích : Nếu AX < 8000h thì DX 0000h
Nếu AX >= 8000h thì DX 0FFFFh - Tác động cờ : OF DF IF SF ZF AF PF CF
- Mở rộng dấu trước khi dùng lệnh chia. Đổi số 2 byte có dấu trong AX thành số 4 byte có dấu trong DXAX.
4. Nhóm lệnh luận lý : 4.1 Lệnh NOT :
- Dạng lệnh : NOT reg NOT mem
- Giải thích : thđ bÓ 1 của thđ - Tác động cờ : OF DF IF SF ZF AF PF CF - Đảo hay lấy bù 1. - Ví dụ : NOT AL NOT WORD PTR [BX+1000h] 4.2 Lệnh SHL/SAL :
- Dạng lệnh : SHL reg,1 SHL mem,1 SHL reg,CL SHL mem,CL
- Giải thích : thđ (thđ) dịch trái 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Dịch trái. Dạng SHL reg,1 dùng để dịch trái 1 bit. Dạng SHL reg,CL dùng để dịch
trái nhiều bit. Lúc đó thanh ghi CL chứa số bit cần dịch. - Ví dụ : SHL DH,1 SAL CX,1 MOV CL,3 SHL WORD PTR [1000h],CL ; dịch trái 3 bit. 4.3 Lệnh SHR :
- Dạng lệnh : SHR reg,1 SHR mem,1 SHR reg,CL SHR mem,CL
- Giải thích : thđ (thđ) dịch phải luận lý 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Dịch phải luận lý. Dạng có thanh ghi CL dùng để dịch nhiều bit. - Ví dụ : SHR AX,1 CuuDuongThanCong.com
https://fb.com/tailieudientucntt MOV CL,2 SHR BYTE PTR [1000h],CL
; dịch phải luận lý 2 bit. 4.4 Lệnh SAR :
- Dạng lệnh : SAR reg,1 SAR mem,1 SAR reg,CL SAR mem,CL
- Giải thích : thđ (thđ) dịch phải số học 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × × - Dịch phải số ọ
h c. Dạng có thanh ghi CL dùng để dịch nhiều bit. - Ví dụ : SAR DX,1 MOV CL,7 SAR WORD PTR [2000h],CL
; dịch phải số học 7 bit. 4.5 Lệnh ROL :
- Dạng lệnh : ROL reg,1 ROL mem,1 ROL reg,CL ROL mem,CL
- Giải thích : thđ (thđ) quay trái không qua cờ nhớ 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Quay trái không qua cờ nhớ. Dạng có thanh ghi CL dùng để quay nhiều bit. - Ví dụ : ROL DL,1 MOV CL,6
ROL WORD PTR [1000h],CL ; quay trái không qua cờ nhớ 6 bit. 4.6 Lệnh ROR :
- Dạng lệnh : ROR reg,1 ROR mem,1 ROR reg,CL ROR mem,CL
- Giải thích : thđ (thđ) quay phải không qua cờ nhớ 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Quay phải không qua cờ nhớ. Dạng có thanh ghi CL dùng để quay nhiều bit. - Ví dụ : ROR SI,1 MOV CL,3
ROR WORD PTR [3000h],CL ; quay phải không qua cờ nhớ 3 bit 4.7 Lệnh RCL :
- Dạng lệnh : RCL reg,1 RCL mem,1 RCL reg,CL RCL mem,CL
- Giải thích : thđ (thđ) quay trái qua cờ nhớ 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Quay trái qua cờ nhớ. Dạng có thanh ghi CL dùng để quay nhiều bit. - Ví dụ : RCL BX,1 MOV CL,4 RCL BYTE PTR [1000h],CL
; quay trái qua cờ nhớ 4 bit. CuuDuongThanCong.com
https://fb.com/tailieudientucntt 4.8 Lệnh RCR :
- Dạng lệnh : RCR reg,1 RCR mem,1 RCR reg,CL RCR mem,CL
- Giải thích : thđ (thđ) quay phải qua cờ nhớ 1 hay nhiều bit. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × ×
- Quay phải qua cờ nhớ. Dạng có thanh ghi CL dùng để quay nhiều bit. - Ví dụ : RCR CH,1 MOV CL,2 RCR BYTE PTR [1800h],CL
; quay phải qua cờ nhớ 2 bit. 4.9 Lệnh AND :
- Dạng lệnh : AND reg,reg AND reg,immed AND mem,reg AND mem,immed AND reg,mem AND accum,immed
- Giải thích : thđ thđ AND thn. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × 0
- Và luận lý. Xóa cờ nhớ về 0. - Ví dụ : AND CH,AH AND [SI],DX
AND BYTE PTR [1000h],10000000b AND AX,0FFF0h 4.10 Lệnh TEST :
- Dạng lệnh : TEST reg,reg TEST reg,immed TEST mem,reg TEST mem,immed TEST reg,mem TEST accum,immed
- Giải thích : thđ AND thn. - Tác động cờ : OF DF IF SF ZF AF PF CF 0 × × ? × 0
- Và luận lý hai toán hạng nhưng không giữ lại kết quả mà chỉ lập các cờ. Xóa cờ nhớ
và cờ tràn về 0. Thường dùng để kiểm tra bit. Lúc đó toán hạng nguồn là một mặt nạ bit cần thiết. - Ví dụ : TEST DX,1 ; kiểm tra bit 0
TEST BYTE PTR [2000h],10000000b ; kiểm tra bit 7 4.11 Lệnh OR : - Dạng lệnh : OR reg,reg OR reg,immed OR mem,reg OR mem,immed OR reg,mem OR accum,immed
- Giải thích : thđ thđ OR thn. - Tác động cờ : OF DF IF SF ZF AF PF CF × × × ? × 0
- Hay luận lý. Xóa cờ nhớ về 0. - Ví dụ : OR DL,CH CuuDuongThanCong.com
https://fb.com/tailieudientucntt