Professional Documents
Culture Documents
Chuong 2 - 8088
Chuong 2 - 8088
3
Nhiu im ging vi h vi x l 80x86=> nm bt c h vi x l ca hng khc
Khi n v giao tip bus (Bus Interface Unit, BIU): Thanh ghi on v thanh ghi con tr lnh IP Khi logic iu khin bus, b cng Bus d liu 8 bit v bus a ch 20 bit Khi thc hin lnh (Execution Unit, EU). Thanh ghi a nng, cc thanh ghi con tr v ch s Khi tnh ton s hc v logic ALU Khi iu khin EU Bus d liu 16 bit ca ALU, bus tn hiu iu khin. Vic chia CPU thnh hai phn lm vic ng thi c lin h vi nhau qua hng i lnh lm tng tc ng k ca CPU.
2. Nguyn l hot ng
n v giao tip BIU Pht cc tn hiu a ch n b nh v cc cng vo ra I/O thng qua A Bus a ra a ch, c m lnh, c d liu t b nh thng qua D Bus Ghi d liu vo b nh thng qua D Bus c d liu t cc cng vo I thng qua D-Bus Ghi d liu ra cc cng O thng qua D-Bus Bn trong BIU cn c b nh m lnh (cn gi l hng i lnh) vi dung lng 4 byte dng cha cc lnh c c nm sn ch EU x l.
Cc lnh nm ch EU x l
2. Nguyn l hot ng
n v thc hin EU EU c nhim v cung cp a ch cho BIU khi ny c lnh v d liu Bn thn n th gii m lnh to ra cc tn hiu iu khin nhm thc hin lnh c gii m. Khi tnh ton s hc v logic ALU dng thc hin cc thao tc khc nhau vi cc ton hng ca lnh.
2. Nguyn l hot ng
X l lnh ca b vi x l 8088 Ly Gii m Thc hin lnh
2. Nguyn l hot ng
Chu k lnh Chu k lnh: Tng thi gian tm lnh, gii m lnh v thc hin lnh. Chu k lnh ca cc lnh khc nhau l khc nhau Chu k lnh bng mt s nguyn ln chu k my Chu k my: bng nghch o tn s hot ng (tc ng h) ca b vi x l
1. Cc thanh ghi
8088 c 14 thanh ghi 16 bit
Lu tr tm thi d liu truy cp nhanh hn trnh khi phi truy cp b nh AX (Accumulator): thanh ghi cha, dng cha kt qu ca cc thao tc: lnh nhn, chia v mt s lnh hiu chnh d liu.
BX (Base): thanh ghi c s, thng cha a ch lch ca nh trong on DS. CX (Count): thanh ghi m, CX thng cha s ln lp trong cc lnh lp, CL thng cha s ln dch hoc quay trong lnh dch v quay thanh ghi. DX (Data): thanh ghi d liu, DX cng vi AX tham gia vo php nhn hoc chia cc s 16 bit. DX cn dng cha a ch ca cc cng vo/ra trong cc lnh vo ra d liu trc tip.
Chng II: B vi x l Intel 8088
Cc thanh ghi on
4 thanh ghi on: CS,DS,SS,ES
DS (Data Segment): thanh ghi on d liu, xc nh a ch bt u ca on nh cha hu ht d liu ca chng trnh. ES (Extra Segment): thanh ghi on d liu ph, xc nh a ch bt u ca on nh cha d liu ph. on nh ny c cc lnh v chui s dng cha d liu ch. SS (Stack Segment): thanh ghi on ngn xp, xc nh a ch bt u ca on nh ngn xp.
Chng II: B vi x l Intel 8088
on b nh
on b nh (Memory segment): l mt khi gm 64KB nh lin tip. Mi on c xc nh bng mt a ch on (segment number), bt u bng a ch 0. a ch on l mt s 16 bit nn a ch on ln nht FFFFh. Bn trong mi on, cc nh c xc nh bng mt a ch tng i (offset), l s byte tnh t u on. Trong Mt on 64KB, offset l mt s 16 bit. Byte u tin trong mt on c offset 0 v byte cui cng trong on c offset FFFFh
a ch Segment:Offset
Ni dung ca cc thanh ghi on l xc nh a ch bt u ca mi nh nm u on a ch ca nh nm u on l 20 bit, cc thanh ghi on ch c 16 bit => thm 0H vo bn phi T/G on
nhn c a ch vt l 20 bit ca mt nh no trong mt on nh bt k, CPU 8088 phi dng n hai thanh ghi 16 bit: mt thanh ghi on v mt thanh ghi lch. a ch vt l = Ni dung thanh ghi on x 10h + Ni dung thanh ghi lch = a ch on + a ch lch a ch logic = Thanh ghi on:Thanh ghi lch (a ch lch)
VD
Vd:1 Cho mt nh c a ch vt l l 1256Ah hy cho bit a ch dng segment:offset vi cc on 1256h v 1240h? Gii: Gi X l offset trong segment 1256h v Y l offset trong segment 1240h chng ta c: 1256Ah=12560h+X 1256Ah=Y+12400h
Do : X=1256Ah-12560h=Ah
Y= 1256Ah-12400h=16Ah Nh vy: 1256Ah =1256:000A=1240:016A
VD
Vd2: Mt nh c a ch vt l 80FD2h, trong on no th n c Offset bng BFD2h Gii: a ch vt l=segment * 10h + offset
IP (Instruction Pointer): thanh ghi con tr lnh IP lun tr vo lnh tip theo s c thc hin nm trong on m CS. a ch ca lnh ny l CS:IP. Thanh ghi IP dng truy nhp n cc lnh v khng b tc ng trc tip bi cc lnh, do trong mt lnh thng khng c mt IP nh mt ton hng. BP (Base Pointer): con tr c s BP ch yu c s dng truy nhp d liu nm trong on ngn xp. BP cng c th c s dng truy nhp d liu trong cc on khc. a ch logic ca nh ngn xp do BP tr ti l SS:BP
Chng II: B vi x l Intel 8088
Cc c iu khin
Cc trng thi
3. Cc ch a ch d liu
Ch a ch (Addressing mode) l cch CPU tm thy ton hng cho cc lnh ca n. minh ha cho cc ch a ch ta s dng lnh chuyn d liu MOV, n c dng nh sau:
Lnh MOV sao chp d liu ngun vo ch, d liu ngun khng thay i cn d liu ch b thay i.
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
a.
Ch a ch thanh ghi
CPU s dng cc thanh ghi bn trong lm cc ton hng cha d liu cn thao tc. Cc thanh ghi s dng trong lnh phi cng kch c, tr mt s lnh nh lnh SHL DX, CL.
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
f.
g. Ch a ch tng i ch s c s
Ch a ch tc th
Ton hng ch l mt thanh ghi hay nh Ton hng ngun l mt hng s
Quy nh vit hng s: - S hex: thm ch H vo cui, ring cc s bt u bng ch th phi thm c s 0 ng trc. V d: 1234H, 0A231H - S thp phn: vit bnh thng. V d: 123, 22 - K t v chui k t: phi t trong hai du phy trn. V d: A, AB
b
VD:
Ch a ch tc th
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
Ch a ch trc tip
Mt ton hng l a ch lch ca nh trong on d liu Ton hng cn li ch c th l thanh ghi khng c l nh. a ch lch ca nh c th cho di dng tn hoc mt s hex (s hex 16 bit t trong ngoc vung).
Ch a ch trc tip
VD: MOV AX,0 ; Ton hng ch AX ch a ch thanh ghi ; Ton hng ngun 0 ch a ch tc thi MOV SO,AX ;Ton hng ch SO ch a ch trc tip ; Ton hng AX ch a ch thanh ghi
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
Mt ton hng l mt trong cc thanh ghi BP, BX, DI, SI cha a ch lch ca nh Cc thanh ghi ng vai tr nh l con tr tr n nh Ton hng kia ch c th l thanh ghi khng c l nh. Cc thanh ghi t trong ngoc vung.
BX, SI, DI cha a ch lch ca nh trong on d liu DS BP cha a ch lch ca nh trong on ngn xp SS.
VD:SI cha a ch Offset 0100h v ni dung ti a ch l 1234h. MOV AX,[SI]; SI c a ch nh l DS:0100h ; Chuyn ni dung 1234h vo AX MOV AX,SI ; Chuyn 0100h vo AX
VD: Gi s BX cha 1000h, offset 1000h cha 1BACH Gi s SI cha 2000h, offset 2000h cha 20FEH Gi s DI cha 3000h, offset 3000h cha 031DH a ch offset nm trong on d liu DS Hy cho bit lnh no sau y l hp l, nu hp l hy a ra a ch offset ca ton hng ngun v kt qu ca ton hng ch? A. MOV BX,[BX] B. MOV CX,[SI] C. MOV BX,[AX] D. ADD [SI],[DI] E. INC [DI]
d
Li gii:
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
Ch a ch tng i c s
Mt ton hng l mt nh c ch ra bi mt thanh ghi c s (BX, BP) cng vi mt gi tr dch chuyn (gi tr hng) Gi tr dch chuyn c th bng s hoc bng tn. Nu bng s th gi tr dch chuyn cng vi thanh ghi c s t trong ngoc vung. Nu l s c du th thuc khong [-32768,32767] Nu bng tn th tn ny t trc ngoc vung => C hai dng gi tr dch chuyn c th xut hin ng thi Cc dng biu thc ca ton hng
[Thanh ghi + dch] [ dch + thanh ghi] [thanh ghi] + dch dch [thanh ghi]
Chng II: B vi x l Intel 8088
Ch a ch tng i c s
Ton hng kia ch c th l thanh ghi khng c l nh. BX xc nh a ch trong on d liu DS BP xc nh a ch trong on ngn xp SS.
Ch a ch tng i c s
VD: w l mt mng word, BX cha 4 MOV AX,W[BX]; dch l a ch offset ca bin w. Chuyn phn t c a ch w+4 vo AX Lnh trn tng ng: MOV AX,[W+BX] MOV AX, [BX + W] MOV AX, W+[BX] MOV AX, [BX] + W
Chng II: B vi x l Intel 8088
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
Ch a ch tng i ch s
Tng t nh ch a ch tng i c s, ch khc l trong ch a ch ny s dng cc thanh ghi ch s SI hoc DI. nh ch ra thanh ghi ch s cng vi gi tr dch chuyn nm trong on d liu.
3. Cc ch a ch d liu
a. Ch a ch thanh ghi
b
c
Ch a ch tc th Ch a ch trc tip
f.
g. Ch a ch tng i ch s c s
Ch a ch tng i ch s C s
Kt hp hai ch a ch tng i ch s v tng i c s ta c ch a ch tng i ch s c s. Ch a ch ny dng c thanh ghi ch s v thanh ghi c s xc nh a ch.
VD
VD: A c khai bo nh sau A dw 0123h,0456h,0789h,0ABCh Trong on c nh a ch DS. BX cha 2, offset 0002h cha 4 SI cha 4, offset 0004h cha 2BACh DI cha 1 Lnh no hp l, Ch ra offset ca ton t ngun, con s dch a. Mov AX,[A+BX] e. MOV BX,[A+3+DI] b. MOV BX,[BX+2] F. MOV AX,[BX]2 c. MOV CX,A[SI] G. ADD BX,[A+AX] d. MOV AX,-2[SI]
Chng II: B vi x l Intel 8088
LI GiI
7 Nhm lnh lp 8 Lnh gi chng trnh con 9 Nhm lnh tnh ton s hc
4 Nhm lnh chuyn d liu qua cng 10 Nhm lnh tnh ton logic 5 Nhm lnh iu khin chng trnh 11 Nhm lnh dch v quay bit
6 Lnh so snh
MOV ch, Ngun: Sao chp d liu Ngun vo ch V d: Mov AH,10D ;Chuyn gi tr 10 vo AH Mov AX,BX ; Chuyn gi tr thanh ghi BX vo thanh ghi AX Mov [DI],CX ; Chuyn gi tr thanh ghi CX vo nh DS:DI
XCHG ch, Ngun: Hon i ni dung ca 2 ton hng ch v ngun V d: XCHG AH,BL ; Hon i ni dung ca hai thanh ghi AH v BL
PUSH Ngun: Ct ni dung ca mt thanh ghi hoc mt nh 16 bit vo ngn xp V d: PUSH AX Lnh PUSH thc hin cc cng vic sau: + Gim SP (con tr ngn xp) i 2 + Ni dung ca ton hng ngun c lu vo v tr nh c tr bi (SS:SP). Ton hng ngun khng b thay i.
POP ch: Lnh POP c dng ly ra phn t nh ngn xp, trong phn t ch l mt thanh ghi 16 bit (tr IP) hoc l 1 t nh. V d: POP BX Lnh POP thc hin cc cng vic sau: + Ni dung ca nh SS:SP (nh ngn xp) c chuyn ti ton t ch + SP tng ln 2 POPF: Lnh POPF a vo thanh ghi c ni dung ca nh ngn xp
Chng II: B vi x l Intel 8088
LEA ch, Ngun (Load Effective Address) Trong : + ch thng l mt trong cc thanh ghi: BX, CX, DX, BP, SI, DI + Ngun l tn bin trong on DS c ch r trong lnh hoc nh c th => Chuyn a ch lch ca nh Ngun vo thanh ghi ch 16 bit V d Tb1 db Nhap so can kiem tra: $ LEA DX, Tb1
OUT port,AL hoc OUT DX,AL => a 8 bit t thanh ghi AL ra cng
JA
JAE , JNB JE , JZ JBE , JNA JB JNE , JNZ
JG
JGE , JNL JE , JZ JLE , JNG JL JNE , JNZ
>
>= = <= < <>
Lnh chuyn iu khin Lnh lm thay i c hiu theo c hiu trc tip
Lnh JC JNC JZ JNZ JO JNO JP JNP iu kin CF = 1 CF = 0 ZF = 1 ZF = 0 OF = 1 OF = 0 PF = 1 PF = 0 Lnh STC CLC STD CLD STI CLI iu kin CF = 1 CF = 0 DF = 1 DF = 0 IF = 1 IF = 0
JS
JNS JNS JCXZ
SF = 0
SF = 0 SF = 0 CX = 0
JB/JC/JNAE Jump if Below:Nhy nu thp hn Jump if Carry: Nhy nu c nh Jump if Not Above or Equal:Nhy nu khng cao hn hoc bng) VD: JB NHAN / JC NHAN / JNAE NHAN JBE/JNA Jump if Below or Equal: Nhy nu thp hn hoc bng Jump if Not Above: Nhy nu khng cao hn JBE NHAN JNA NHAN
JCXZ : Jump if CX Register if Zero : Nhy nu ni dung thanh ghi m rng. Vd: JCXZ NHAN JE/JZ: Jump if Equal/ Jump if Zero :Nhy nu bng nhau /Nhy nu kt qu bng khng JE NHAN JZ NHAN JG/JNLE Jump if Greater than/ Jump if Not Less than or Equal (Nhy nu ln hn/ Nhy nu khng b hn hoc bng) JG NHAN JNLE NHAN
JBE/JNA : Jump if Below or Equal/ Jump if Not Above (Nhy nu thp hn hoc bng/ Nhy nu khng cao hn)
JCXZ : Jump if CX Register if Zero (Nhy nu ni dung thanh m rng). Vd: JCXZ NHAN JE/JZ : Jump if Equal/ Jump if Zero (Nhy nu bng nhau/ Nhy nu kt qu bng khng)
JE NHAN / JZ NHAN
JG/JNLE: Jump if Greater than/ Jump if Not Less than or Equal (Nhy nu ln hn/ Nhy nu khng b hn hoc bng)
JG NHAN / JNLE NHAN / JNG NHAN
CMP Left, Right Left c th l thanh ghi hoc nh (Khng c php l hng s) Right c th l thanh ghi hoc nh hoc hng s. => Lnh ny so snh Left v Right bng cch ly ton t Left tr i ton t Right, kt qu khng c lu li nhng cc c b nh hng. Cc ton hng ca lnh Cmp khng th cng l cc nh.
Nhm lnh lp
LOOP NHAN Lnh ny dng lp li on chng trnh (gm cc lnh nm trong khong t NHAN n ht lnh Loop NHAN) cho n khi s ln lp CX=0 (sau mi ln thc hin lnh Loop NHAN th ng thi CX t ng gim 1) Lnh ny khng tc ng n c V d: Xor AL,AL Mov Cx,12 Lap: Inc AL Loop Lap
Nhm lnh lp
LOOPE Hay LOOPZ NHAN: - Lp cho n khi CX=0 v ZF=1 - Gim CX i 1 nu v nhy n NHAN nu CX khc 0 v c ZF= 1 LOOPNE NHAN - Gim CX i 1 n v v nhy n NHAN nu ZF=0 v CX 0 LOOPNZ NHAN Tng t LOOPNE
Trong :
Name l tn ca th tc nh ngha bi ngi s dng Type ton hng tu chn c th l NEAR hay FAR NEAR c ngm nh nu b qua type. NEAR c ngha l dng lnh gi th tc cng on vi th tc FAR c ngha l dng lnh gi trong mt on khc
Chng II: B vi x l Intel 8088
INC ch
DEC ch SUB ch, Ngun
Tnh ton s hc
SBB ch, Ngun NEG ch MUL Ngun_8bit MUL Ngun_16bit DIV Ngun_8bit
Lnh cng c nh: ADC ch, Ngun (Add With Carry) ch ch + Ngun + CF Nu CF=1 th ch=ch + ngun + 1 Nu CF=0 th ch=ch + ngun
Lnh tr khng mn: SUB ch, Ngun ch ch - Ngun Lnh tr c mn: SBB ch, Ngun ch ch - Ngun CF
- Lnh nhn khng du: MUL Ngun MUL Ngun_8bit AX AL x Ngun_8bit Khi nhn cc byte vi nhau, 1s c cha trong ton hng ngun v s cn li c gi thit cha trong AL. Ton hng ngun c th l 1 thanh ghi hay 1 byte nh nhng khng th l hng s MUL Ngun_16bit DX:AX AX x Ngun_16bit
S b nhn phi l s 16 bit trong AX
- Lnh nhn c du: IMUL Ngun Tng t MUL, s b nhn phi l s c du t trong AL hoc AX
Chng II: B vi x l Intel 8088
9
Lnh
IMUL BX
000000001
Ly AX chia cho Ngun_8bit Thng trong AL, s d trong AH Ngun_8bit khng th l hng s.
DIV Ngun_16bit
S trn s trong php chia: Thng s > ton hng ch (AL hoc AX). L do: S chia nh hn rt nhiu so vi s b chia. Khi xy ra iu ny chng trnh dng li v thng bo: Divide Overflow. VD: AX cha 0005h, DX cha 0000h, BX cha 0002h
Lnh DIV BX
IDIV BX
Chng II: B vi x l Intel 8088
VD1: DX cha 0000h, AX cha 0005h, BX cha FFFEh AX=5, BX=65534 (DIV) AX=5, BX=-2 (IDIV)
VD2: DX cha FFFFh, AX cha FFFBh, BX cha 0002h Lnh 1: BX=2, DX:AX=-5 (IDIV) Lnh 2: BX=2, DX:AX= 2147483646 = 7FFFFFFEh qu ln cha trong AX (DIV) thng s dng thp phn (AX) -2 S d dng thp phn (DX) -1
Lnh DIV BX
IDIV BX
Divide flow
10
Ton t logic
AND
ch ch AND Ngun i m ASCII ca mt s thnh s thp phn tng ng Khi c 1 k t t bn phm, AL cha m ASCII ca k t . V d khi n phm 5, AL cha 35h thay cho 5. nhn c 5 trong thanh ghi AL ta c th lm nh sau: SUB AL,30h Dng AND xo na byte cao ca AL AND AL,0Fh
AND
M ASCII
0110 0001 0110 0010 0110 0011 .. 0111 1010
K t
A B C .. Z
M ASCII
0100 0001 0100 0010 0100 0010 .. 0101 1010
11
Gi tr nh phn Ln 1 Ln 2 Ln 3
Gi tr nh phn Ln 1 Ln 2 Ln 3
- Lnh chuyn chui: MOVS, MOVSB,MOVSW - Lnh so snh chui: CMPS, CMPSB, CMPSW - Lnh qut chui: SCAS, SCASB, SCASW - Lnh np chui Lnh np chui: LODS, LODSB, LODSW - Lnh lu chui: STOS, STOSB, STOSW