Está en la página 1de 95

Chng 3: Lp trnh Assembly

I 3 II III 3 IV V VI VII Khung Chng trnh Assembly Bin son v dch chng trnh Assembly Thc hin cu trc iu khin chng trnh bng assembly Cc lnh logic, dch, quay, ngn xp v cc th tc Cc lnh nhn v chia Mng Cc lnh thao tc vi chui

Chng 3: Lp trnh Assembly


I 3 II III 3 IV IV IV IV Khung Chng trnh Assembly Bin son v dch chng trnh Assembly Thc hin cu trc iu khin chng trnh bng assembly Cc lnh logic, dch, quay, ngn xp v cc th tc Cc lnh nhn v chia Mng Cc lnh thao tc vi chui

I. Khung Chng trnh Assembly


1. B k t ca Assembly 2. T kha 3. Tn t t 4. Cu trc mt lnh Assembly 5. Cc dng hng dng trong Assembly 6. Khai bo bin v hng 7. Mt s lnh c bn 8. Cc lnh vo ra

I. Khung Chng trnh Assembly


1. B k t ca Assembly Cc ch ci latin: 26 ch hoa A-Z, 26 ch thng a-z. Cc ch s thp phn: 0 - 9 Cc k hiu php ton, cc du chm cu v cc k hiu c bit: + - * / @ ? $ , . : [ ] ( ) < > { } & % ! \ # v.v... Cc k t ngn cch: space v tab

I. Khung Chng trnh Assembly


2. T kha Tn cc thanh ghi, tn lnh dng gi nh ca b vi x l, tn ton t... Cc t kha ny i hi ngi lp trnh phi dng ng nh Assembly quy nh.

Mov ch, ngun Push ton hng pushf

I. Khung Chng trnh Assembly


3. Tn t t Tn l mt dy k t dng biu th tn hng, tn bin, tn nhn, tn chng trnh con, tn on nh... Quy tc t tn:
Tn ch gm ch ci, ch s v mt s k t c bit nh ? @ _ $ Ch u ca tn bt buc phi l ch ci. Trong tn khng c du cch. Tn c th di t 1 n 35 k t.

4. Cu trc mt lnh assembly

Lnh tht c dch ra m my Dng lnh

Lnh gi Khng c dch ra m my

I. Khung Chng trnh Assembly

4. Cu trc mt lnh assembly

Tn M lnh

Cc ton hng

Ch gii

Tn nhn, tn bin hoc tn th tc (chng trnh con). Cc tn v nhn ny s c trnh bin dch gn bng cc a ch c th ca nh. Mt nhn kt thc bng du hai chm (:).

I. Khung Chng trnh Assembly

4. Cu trc mt lnh assembly

Tn M lnh

Cc ton hng

Ch gii

Cha cc lnh tht hoc lnh gi Lnh tht: cha cc ton hng ca lnh, c th khng c, c 1 hoc 2 ton hng trong mt lnh. Lnh gi: cha cc thng tin khc lin quan n lnh gi.
I. Khung Chng trnh Assembly

4. Cu trc mt lnh assembly

Tn M lnh

Cc ton hng

Ch gii

bt u bng du chm phy. ghi cc li gii thch cho cc lnh ca chng chng trnh dch khng dch t sau du chm phy n ht dng.

I. Khung Chng trnh Assembly

4. Cu trc mt lnh assembly


VD1: LAP MOV AH,[BX] Copy ni dung ca nh c a ch DS:BX vo AH

VD2:

MAIN PROC v MAIN ENDP Hai dng lnh ny l hai lnh gi, Trng tn c tn th tc l MAIN, Trng m lnh c lnh gi PROC v ENDP. y l hai lnh gi bt u v kt thc mt th tc c tn l MAIN.
I. Khung Chng trnh Assembly

5.Cc dng hng dng trong assembly


Hng s nh phn: gm mt dy cc ch s 0 v 1, kt thc bng ch B. V d: 10011101B Hng s hex: 0 n 9 v A n F (a n f), kt thc bng ch H. i vi cc s bt u bng ch th phi thm 0 ng trc bo cho chng trnh dch bit l s khng phi l tn. V d: 7AC5H, 0ABH Hng s thp phn: 0 n 9, c hoc khng c ch D theo sau. V d: 34 hoc 34D. Hng k t: l mt k t bt k t gia hai du phy trn. V d: A Hng xu k t: l mt dy k t bt k t gia hai du phy trn. V d: Nhap
I. Khung Chng trnh Assembly

6. Khai bo bin v hng


a) Khai bo bin
Khai bo bin kiu byte Khai bo bin kiu t Khai bo bin kiu t kp Khai bo bin mng

Khai bo bin kiu xu k t

6. Khai bo bin v hng


1. Khai bo bin kiu byte Tn bin DB Gi tr khi u Tn bin DB ? V d 1: B1 DB 4 Bin kiu byte c tn l B1 My tnh dnh 1 byte b nh cho n v trong byte c cha gi tr 4. V d 2: B2 DB ?
nh ngha bin byte c tn l B2 v dnh 1 byte b nh cho n.

I. Khung Chng trnh Assembly

6. Khai bo bin v hng


1. Khai bo bin kiu t word Tn bin DW Gi tr khi u Tn bin DW ? V d 1: B1 DW 42H Bin kiu word c tn l B1 My tnh dnh 2 byte b nh cho n v trong byte c cha gi tr 42H. V d 2: B2 DW ?
nh ngha bin byte c tn l B2 v dnh 1 byte b nh cho n.

I. Khung Chng trnh Assembly

6. Khai bo bin v hng


1. Khai bo bin kiu t kp Double word Tn bin DD Gi tr khi u Tn bin DD ? V d 1: B1 DD 1000H Bin kiu Double word c tn l B1 My tnh dnh 4 byte b nh cho n v trong byte c cha gi tr 1000H V d 2: B2 DD ?
nh ngha bin byte c tn l B2 v dnh 4 byte b nh cho n.

I. Khung Chng trnh Assembly

6. Khai bo bin v hng


1. Khai bo bin kiu MNG

Tn bin mng V d: M1 DB

DB/DW/DD 4,5,6,7,8,9

Cc gi tr khi u

Gm mt dy cc phn t v nh kiu byte/ ord/double word


Bin mng c tn l M1 My tnh dnh 6 byte lin tip cho n cha cc gi tr khi u tng ng l 4, 5 ,6 ,7 ,8 , 9. Phn t u ca mng l 4 v c a ch trng vi a ch ca tn bin (M1), phn t th hai l 5 v c a ch l M1+1...

V d: M2 M3

DB DB

20 DUP(0) 20 DUP(?)

Bin mng c tn l M2 gm 20 byte cha 20 gi tr khi u bng 0 Bin mng c tn l M3 gm 20 byte nhng khng cha gi tr khi u.
I. Khung Chng trnh Assembly

6. Khai bo bin v hng


1. Khai bo bin kiu MNG (tip) Ch : Ton t DUP c th dng lng nhau nh ngha 1 mng V d: M4 DB M4 DB 4,3,2,2 DUP(1,2 DUP(5),6) 4,3,2,1,5,5,6,1,5,5,6

Khi lu tr mt t trong b nh th byte thp ca n s c nh c a ch thp, byte cao nh c a ch cao. V d: W1 DW 0FFACH

=> Byte thp ACH s c ti a ch W1, byte cao FFH s


c ti a ch tip theo W1+1.

I. Khung Chng trnh Assembly

6. Khai bo bin v hng


1. Khai bo bin kiu xu k t L trng hp c bit ca bin mng kiu byte, trong cc phn t ca mng l cc k t. Mt xu k t c th nh ngha bng cc k t hoc bng m ASCII ca cc k t . V d: Xaukt DB ABCDE Xaukt Xaukt DB DB 41h,42h,43h,44h,45h 41h,42h,C,D,45h

I. Khung Chng trnh Assembly

6. Khai bo bin v hng


b) Khai bo bin hng Hng c th l kiu s hoc kiu k t. Tn hng EQU Gi tr ca hng V d: CR EQU 0Dh LF EQU 0Ah CHAO EQU Hello V lnh gi EQU khng dnh ch ca b nh cho tn hng nn ta c th khai bo hng bt k u trong chng trnh. Tuy nhin ngi ta thng t cc khai bo hng trong on d liu.

7. Mt s lnh c bn
MOV ch, Ngun
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 B

Lnh cng khng nh: ADD ch, Ngun p dng cho= s nh phn, gn nh php ton xor ch = ch + Ngun Lnh cng c nh: ADC ch, Ngun (Add With Carry) ch ch + Ngun + CF

7. Mt s lnh c bn
- Lnh tng: INC ch ch ch + 1 - Lnh gim: DEC ch ch ch - 1 - Lnh tr khng mn: SUB ch, Ngun ch ch - Ngun - Lnh tr c mn: SBB ch, Ngun ch ch - Ngun - CF - NEG ch ch -ch - LEA ch, Ngun (Load Effective Address): Np a ch thc + 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 VD: Tb1 db Nhap so can kiem tra: $ LEA DX, Tb1

8. Cc lnh vo ra
Lnh INT: Gi cc chng trnh ngt ca DOS v BIOS. Dng lnh: INT s_hiu_ngt Ngt INT 21h => Ngt int 21h dng gi rt nhiu hm ca DOS. Mi hm c gi bng cch t s hm vo trong thanh ghi AH v gi ngt INT 21h

8. Cc lnh vo ra
Hm 1: Vo mt k t Input AH=1 Ra AL = Lu m ASCII ca k t nhp vo = 0 Nu 1 phm iu khin hay chc nng c n => gi phc v ny ta thc hin lnh: MOV AH,1 INT 21h

8. Cc lnh vo ra
Vd: Nhp vo 2 s: Al, BL sau o gi tr cho nhau

MOV AH,1 INT 21H MOV BL,AL MOV AH,1 INT 21H

Nhp x

Nhp y

XCHG AL,BL

o gi tr

8. Cc lnh vo ra
Hm 2: Hin th mt k t hay thi hnh mt chc nng iu khin Input: AH=2 DL=M ASCII ca k t hin th hay k t iu khin Output: Gi tr ca DL V d: sau s hin th du ? ln mn hnh MOV AH,2 MOV DL,? INT 21h

8. Cc lnh vo ra
Hm 9: Hin th mt chui k t Input: AH=9 DX=a ch tng i ca chui Output: Hin th mt chui ra mn hnh K t $ nh du kt thc chui v khng c hin th. Nu chui cha m ASCII ca k t iu khin th cc chc nng iu khin s c thi hnh VD: msg DB Xin chao $ sao chp a ch tng i t ngun sang ch LEA ch, ngun VD: Lea DX, msg

8. Cc lnh vo ra
Chu trnh hin th chui k t B1: Khi to on d liu cha trong thanh ghi DS MOV AX,@DATA MOV DS,AX @ DATA : Tn on d liu c nh ngha bi .Data a ch d liu khng chuyn trc tip. B2: a a ch vo thanh ghi DX LEA DX,MSG MOV AH,9 INT 21H
Vd: Vit chng trnh hin th mt chui k t bt k

9.Khung chng trnh assembly


1

Khai bo quy m s dng b nh

Khai bo on ngn xp
Khai bo on d liu

Khai bo on m

a. Khai bo quy m s dng b nh


.MODEL Kiu_kch_thc_b_nh

2. Khai bo on ngn xp .
My tnh dnh ra mt vng nh ln dng lm ngn xp phc v cho hot ng ca chng trnh. C php: .STACK Kch_thc Kch_thc quyt nh s byte dnh cho ngn xp. Thng thng vi 100 - 256 byte l lm ngn xp v ta c th khai bo kch thc cho ngn xp nh sau: .STACK 100 hoc .STACK 100H

3. Khai bo on d liu .
Bao gm ton b cc khai bo bin v hng ca chng trnh. Cc khai bo trong on d liu t sau lnh gi .DATA V d: .DATA MSG B1 CR LF

DB DB EQU EQU

Hello!$ 100 0DH ; Quay v u dng 0AH ; Xung dng

5. Khung chng trnh Assembly dch ra chng trnh .EXE


on m cha m lnh ca chng trnh bt u on m ta dng lnh gi .CODE Chng trnh chnh v chng trnh con. .CODE Tn_CTChnh PROC ;Cc lnh ca chng trnh chnh . CALL Tn_CTCon ;Gi chng trnh con Tn_CTChnh ENDP ;Khai bo cc chng trnh con y Tn_CTCon PROC ;Cc lnh ca chng trnh con RET ;Tr v Tn_CTCon ENDP

VD

5. Khung chng trnh Assembly dch ra chng trnh .com . . on m, on d liu v on ngn xp c gp li trong mt on duy nht l on m
.MODEL TINY .CODE ORG 100H ; gn a ch bt u ca chng trnh ti 100h ; nhy qua ton b phn b nh dnh cho vic khai bo d liu START: JMP CONTINUE. ;Cc khai bo bin v hng ti y CONTINUE: MAIN PROC VD ;Cc lnh ca chng trnh chnh ti y ;Tr v DOS INT 20H MAIN ENDP ;Cc chng trnh con (nu c) khai bo y END START

Chng 3: Lp trnh Assembly


I 3 II III 3 IV IV IV IV Khung Chng trnh Assembly Bin son v dch chng trnh Assembly Thc hin cu trc iu khin chng trnh bng assembly Cc lnh logic, dch, quay, ngn xp v cc th tc Cc lnh nhn v chia Mng Cc lnh thao tc vi chui

II. Bin son v dch chng trnh Assembly


.

II. Bin son v dch chng trnh Assembly


.

Tr v th mc gc C:\

II. Bin son v dch chng trnh Assembly


.

Truy nhp vo th mc MASM

II. Bin son v dch chng trnh Assembly


.

Dch chng trnh sang m my

II. Bin son v dch chng trnh Assembly


.

Lin kt cc tp ui .OBJ to thnh mt tp chng trnh chy c ui .EXE

II. Bin son v dch chng trnh Assembly


.

Chy chng trnh

Chng 3: Lp trnh Assembly


I 3 II III 3 IV IV IV IV Khung Chng trnh Assembly Bin son v dch chng trnh Assembly Thc hin cu trc iu khin chng trnh bng assembly Cc lnh logic, dch, quay, ngn xp v cc th tc Cc lnh nhn v chia Mng Cc lnh thao tc vi chui

III. Thc hin cc cu trc iu khin chng trnh bng assembly A. Lnh JMP: Lnh nhy khng iu kin. C php JMP Nhn => Chuyn CS:IP ti v tr c xc nh bi Nhn B. Cc lnh nhy c iu kin C ba loi nhy c iu kin: <1> Cc lnh nhy khng du dng vi cc s khng du <2> Cc lnh nhy c du c dng khi kt qu tr v l cc s c du <3> Cc lnh nhy iu kin n: iu kin ph thuc vo mt c ring bit.

III. Thc hin cc cu trc iu khin chng trnh bng assembly 1.Cc lnh nhy khng du JA/ JNBE Jump if Above: Nhy nu ln hn Jump if Not Below or Equal: Nhy nu khng thp hn hoc bng). vd: JA NHAN / JNBE NHAN JAE/JNB/JNC Jump if Above or Equal: Nhy nu cao hn hoc bng Jump if Not Below: Nhy nu khng thp hn vd: JAE NHAN JNB NHAN JNC NHAN

III. Thc hin cc cu trc iu khin chng trnh bng assembly

1.Cc lnh nhy khng du


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

III. Thc hin cc cu trc iu khin chng trnh bng assembly

2. Cc lnh nhy c du
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 JGE/JNL: Jump if Greater than or Equal/ Jump if Not Less than (Nhy nu ln hn hoc bng/ Nhy nu khng nh hn) JGE NHAN JNL NHAN

III. Thc hin cc cu trc iu khin chng trnh bng assembly 2. Cc lnh nhy c du JL/ JNGE: Jump if Less than/ Jump if Not Greater than or Equal (Nhy nu nh hn/ Nhy nu khng ln hn hoc bng)
JL NHAN JNGE NHAN

JLE/JNG: Jump if Less than or Equal/ Jump if Not Greater than (Nhy nu nh hn hoc bng/ Nhy nu khng ln hn)
JLE NHAN JNG NHAN

III. Thc hin cc cu trc iu khin chng trnh bng assembly

3. Cc lnh nhy iu kin n


JCXZ : Jump if CX Register if Zero (Nhy nu ni dung thanh m rng) JCXZ NHAN JE/JZ: Jump if Equal/ Jump if Zero (Nhy nu bng nhau/ Nhy nu kt qu bng khng) JE NHAN JZ NHAN JC: Jump if Carry ( Nhy nu c nh)

III. Thc hin cc cu trc iu khin chng trnh bng assembly

3. Cc lnh nhy iu kin n JNC : Jump if Not Carry (Nhy nu khng nh) JO: Jump if Overflow (Nhy nu trn) JNO: Jump if Not Overflow (Nhy nu khng trn) JS: Jump if Sign (Nhy nu du m) JNS: Jump if Not Sign (Nhy nu du dng) Tt c cc lnh nhy hoc nhy c iu kin u khng tc ng n c

VD: so snh lnh nhy c du v khng du

Mi lnh nhy c du u tng ng vi mt lnh nhy khng du: VD: JG (c du),JA(khng du)
V d: AX cha 7FFFh, BX cha 8000h
Cmp Ja AX,BX TEST ; Khng nhy n nhn TEST

Nu coi AX, BX l cc s c du th AX>BX nhng s dng


Cmp AX,BX Ja TEST ; Khng nhy n nhn TEST v Ja l lnh nhy khng du

III. Thc hin cc cu trc iu khin chng trnh bng assembly C: 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. Cc ton hng ca lnh Cmp khng th cng l cc nh. => 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.

III. Thc hin cc cu trc iu khin chng trnh bng assembly

D: Cc cu trc ngn ng bc cao

Cu trc r nhnh IF-THEN Cu trc la chn CASE Cu trc lp vi s ln xc nh FOR-DO Cu trc lp vi s ln khng xc nh REPEAT-UNTIL v WHILE-DO => s dng cc lnh nhy v lnh lp ca b vi x l. C th nh sau:

Cu trc r nhnh IF-THEN


Cu trc r nhnh IF-THEN
(1) IF <iu kin> THEN <Cng vic> (2) IF <iu kin> THEN <Cng vic 1> ELSE <Cng vic 2>

Cu trc r nhnh IF-THEN


VD: Vit

on chng trnh gn BX |AX|

IF_:
CMP AX,0 JAE ENDIF_ NEG AX

ENDIF_:
MOV BX,AX

VD2: Gi s AL v BL cha m ASCII ca k t. Kim

tra nu AL<=BL th hin ra mn hnh k t trong AL, cn khng th hin k t trong BL.

Cu trc la chon CASE


Cu trc la chon CASE
CASE <Biu thc> OF Gi_tr_1: Cng_vic_1 Gi_tr_2: Cng_vic_2 Gi_tr_N: Cng_vic_N END_CASE

III. Thc hin cc cu trc iu khin chng trnh bng assembly B1: Nu AX cha s m th a -1 vo BX, nu AX cha 0 th a 0 vo BX, nu AX cha s dng th a 1 vo BX.

Cu trc lp vi s ln xc nh FOR-DO FOR <S ln lp> DO


<Cng vic>
a s ln lp vo b m
Cng vic

ENDFOR

Gim b m i 1
Sai

B m = 0?
ng

Cu trc lp vi s ln xc nh FOR-DO
VD: Hin th mt dng 80 k t $ FOR_: MOV CX,80 MOV AH,2 MOV DL,$ INT 21H LOOP FOR_ ENDFOR_:

Cx=80

Cng vic

Cx=cx-1

Sai

cx = 0?
ng

Cu trc lp vi s ln xc nh FOR-DO
Ch : S dng lnh nhy JCXZ trnh vng lp khng kt thc c MOV CX,80 MOV AH,2 JCNZ ENDFOR_ FOR_: MOV DL,$ INT 21H LOOP FOR_ ENDFOR_:

Cu trc lp vi s ln khng xc nh
Kim tra iu kin trc
Pascal WHILE <iu kin> DO <Cng vic> Assembly WHILE <iu kin> <Cng vic> ENDWHILE

BT: m s k t c c vo t bn phm khi no gp CR th thi

Cu trc lp vi s ln khng xc nh
Kim tra iu kin sau REPEAT <Cng vic> UNTIL <iu kin>

BT: m s k t c c vo t bn phm khi no gp CR th thi

Chng 3: Lp trnh Assembly


I 3 II III 3 IV IV IV IV Khung Chng trnh Assembly Bin son v dch chng trnh Assembly Thc hin cu trc iu khin chng trnh bng assembly Cc lnh logic, dch, quay, ngn xp v cc th tc Cc lnh nhn v chia Mng Cc lnh thao tc vi chui

IV. CC LNH LOGIC, DCH V QUAY. NGN XP V CC TH TC

A. Cc lnh logic

Cc lnh logic

AND

AND ch, Ngun

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

AND ch, Ngun

i ch thng thnh ch hoa


a n z :61h n 7Ah, A dn Z : 41h n 5Ah. Nu DL cha m ASCII ca 1 ch thng ta c th i ra ch hoa bng cch thc hin lnh: SUB DL,20h AND DL,0DFh
K t
a b c .. z

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
Chng II: B vi x l Intel 8088

OR, XOR, NOT, TEST


OR ch, Ngun: ch ch OR Ngun XOR ch, Ngun: - ch ch XOR Ngun - Xa thanh ghi NOT ch: - ch NOT ch - Ly s b 1 ca ton hng ch TEST ch, Ngun: ch AND Ngun Ton hng ch khng b thay i. Mc ch ca lnh TEST l thit lp cc c Cc c b tc ng: SF, ZF, PF phn nh kt qu AF khng xc nh CF,OF=0

Chng II: B vi x l Intel 8088

B. Nhm lnh dch v quay bit


Lnh dch bit
SHL ch,CL SAL ch,CL SHR ch,CL SAR ch,CL

Lnh quay bit


ROL ch,CL RCL ch,CL ROR ch,CL RCR ch,CL

Lnh dch tri


SHL ch,CL SAL tng t SHL Trong CL cha N. N php dch tri n c thc hin. Gi tr CL vn gi nguyn khng thay i khi thc hin xong lnh Sau mi ln dch tri th gi tr 0 c thm vo v tr bn phi nht ca ton hng ch. Bit MSB c a vo CF

Lnh dch tri


Cc c b tc ng: + SF, PF, ZF phn nh kt qu, PF ch c ngha khi kt qu l 8 bit + CF cha bit cui cng c dch ra khi ton hng + OF = 1 nu kt qu b thay i du trong ln dch chuyn cui cng

Lnh dch tri


VD1: DH cha 8Ah, CL cha 3. Cho bit gi tr DH, CF
sau khi lnh SHL DH,CL c thc hin

Gi tr nh phn Ln 1 Ln 2 Ln 3

Lnh dch tri


V d 2: AL cha 5d =0000 0101b.
Dch tri 1 bit: 00001010=10d ngha l bng 2 gi tr ca n. Tip tc dch tri ta nhn c 00010100b=20d

Lnh dch phi


- SHR ch,CL SAR tng t SHL Trong CL cha N. N php dch phi n c thc hin. Gi tr CL vn gi nguyn khng thay i khi thc hin xong lnh Sau mi ln dch phi th gi tr 0 c thm vo v tr bn phi nht ca ton hng ch. Bit MSB c a vo CF

Lnh dch tri phi


Cc c b tc ng: + SF, PF, ZF phn nh kt qu, PF ch c ngha khi kt qu l 8 bit + CF cha bit cui cng c dch ra khi ton hng + OF = 1 nu kt qu b thay i du trong ln dch chuyn cui cng

Lnh dch phi


VD1: DH cha 8Ah, CL cha 3. Cho bit gi tr DH, CF
sau khi lnh SHR DH,CL c thc hin

Gi tr nh phn Ln 1 Ln 2 Ln 3

Lnh quay tri ROL


- ROL ch,1 hoc ROL ch,CL: Lnh ROL (Rotate left) dch cc bit sang bn tri. Bit msb c dch vo bit bn phi nht, ng thi c a vo c CF, bit lsm theo sau bit msb.

Lnh quay tri c nh RCL


- RCL ch,1 hoc RCL ch,CL: Lnh quay tri qua c nh - Rotate Carry Lef Dch cc bit ca ton hng ch sang tri. Bit msb c t vo c CF, gi tr c ca CF c a vo bit phi nht ca ton hng ch

Lnh quay tri ROL


- ROR ch,1 hoc ROR ch,CL: Lnh ROR (Rotate right) dch cc bit sang bn phi. Bit bn phi nht c dch vo v bit msb ng thi cng c a vo c C.

Lnh quay tri c nh RCL


- RCR ch,1 hoc RCR ch,CL: Lnh quay phi qua c nh - Rotate Carry Lef Dch cc bit ca ton hng ch sang phi. Bit lsb c t vo c CF, gi tr c ca CF c a vo bit tri nht ca ton hng ch

C. Vo ra vi s nh phn v s hex
Nhp cc s nh phn Nhp cc s nh phn t bn phm kt thc bng cch nhn phm Enter. Cc s nhn c dng chui cc ch s 0 v 1. Mi k t c nhp phi i ra gi tr ca tng bit ri kt hp cc bit vo trong thanh ghi, kt qa lu trong BX

Thut ton nhp s nh phn


Xo BX ;BX lu kt qu Nhp mt k t ;0 hoc 1 While k t <> CR Do
i k t ra gi tr s nh phn Dch tri BX Chn gi tr nhn c vo bit lsb ca BX Nhp k t

End_while

V d: Biu din vi vic nhp 101


Xo BX BX=0000 0000 0000 0000 Nhp vo k t 1 i n thnh 1 Dch tri BX BX=0000 0000 0000 0000 Chn gi tr nh phn nhn c vo bit lsb ca BX BX=0000 0000 0000 0001 Nhp k t 0 i n thnh 0 Dch tri BX BX=0000 0000 0000 0010 Chn gi tr nh phn nhn c vo bit lsb ca BX BX=0000 0000 0000 0010 Nhp k t 1 i n thanh 1 Dch tri BX BX=0000 0000 0000 0100 Chn gi tr nh phn nhn c vo bit lsb ca BX BX=0000 0000 0000 0101 BX cha 101B

Thut ton hin s nh phn


For 16 ln Do
Quay tri BX ; BX cha gi tr cn a ra, bit msb a vo CF If CF=1 Then a ra 1 Else a ra 0 End_if

End_for

V d: Biu din vi vic nhp 101

Hc sinh t lm

D. Nhp v hin s hex


Nhp s HEX Nhp s hex bao gm cc ch s 0 n 9 v cc ch ci t A n Z kt thc bng k t CR. Gi thit Ch s dng cc ch hoa Ch nhp vo ti a 4 ch s hex

Thut ton nhp s hex


Xo BX ;BX cha gi tr nhp vo Nhp k t hex While k t <> CR Do
i k t ra s nh phn Dch tri BX 4 ln Chn gi tr mi vo 4 bit ca BX Nhp k t

End_While

Thut ton hin s hex


BX cha s 16 bit bng gi tr ca s hex 4 ch s. a ra ni dung ca BX, bt u t bn tri, ly ra tng nhm bit ca mi ch s i n thnh ch s hex tng ng sau a ra For 4 ln Do Chuyn BH vo DL Dch DL v bn phi 4 ln If DL<10 then i thnh mt trong cc k t 0.. 9 Else i thnh mt trong cc ch ci A F a k t ra Quay BX 4 ln v bn tri End_For

D. Ngn xp
on ngn xp ca chng trnh dng lu tr tm thi cc d liu v a ch. Ngn xp (LIFO) l cu trc d liu mt chiu, cc phn t c ct vo sau, ly ra trc (Last In First Out) Mi chng trnh phi dnh ra mt khi b nh lm ngn xp. Chng ta thc hin iu ny khi khai bo on ngn xp .STACK 100h

D. Ngn xp
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 i 2 + Mt bn sao ca ni dung ca ton hng ngun c chuyn vo a ch xc nh bi SS:SP. Ton hng ngun khng b thay i. Ban u, SP cha a ch offset ca nh theo sau on ngn xp. Lnh PUSH u tin gim SP i 2 lm cho con tr ch n t cui cng ca trong on ngn xp. Bi v ln PUSH lm gim SP

D. Ngn xp
Ban u, SP cha a ch offset ca nh theo sau on ngn xp. SP c khi to bng 100h Lnh PUSH u tin gim SP i 2 lm cho con tr ch n t cui cng trong on ngn xp.

D. Ngn xp
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

D. Ngn xp

D. Ngn xp
Ch : - Cc lnh PUSH, PUSHF, POP, POPF khng nh hng n c - Cc lnh PUSH v POP ch thao tc vi cc WORD, vy nn nu dng vi cc byte, cc s liu trc tip l khng hp l. - Ct mt s liu trc tip l c php i vi cc b vi x l 80186, 80486
PUSH DL ; Khng hp l PUSH 2 ; Khng hp l

E. Th tc
Khai bo th tc
Name PROC type ; thn th tc ... RET Name ENDP

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 , ngc li FAR c ngha l dng lnh gi trong mt on khc

E. Th tc
Gi CTC: CALL Nhn Lnh Call thc hin cc cng vic sau y: 1. a ch tr v ca chng trnh gi c ct vo ngn xp. a ch ny l offset ca lnh ngay sau dng Call, dng segment:offset ca n ti thi im thi hnh lnh Call cha trong CS:IP 2. IP c gn bng a ch offset lnh u tin ca th tc. Thao tc ny chuyn iu khin cho th tc

E. Th tc
Tr v t CTC: RET tr v t mt th tc ta dng lnh: RET pop_value Tham s nguyn pop_value l tu chn. Trong mt th tc NEAR, lnh RET a gi tr nh ngn xp vo IP. Nu pop_value xc nh bng N th N s c cng vo SP. iu ny tng ng vi vic ly N byte khi ngn xp CS:IP lc ny cha a ch dng segment:offset v iu khin c tr li cho chng trnh gi.

También podría gustarte