You are on page 1of 42

Thc tp Vi x l - 1

PHN L THUYT

: CHNG TRNH G RI DEBUG

I. S dng chng trnh Debug lm g ? Chng trnh Debug l cng c c lc dng tr gip cho ngi hc v hp ng. Ta c th xem ni dung b nh tht d dng v nhanh chng, hoc tham kho ni dung cc thanh ghi khi chng thay i. Debug cng c dng chy tng bc mt chng trnh hp ng kim tra hoc tm ra cc li ca gii thut. i vi ngi mi hc qua hp ng, Debug gip h c c s t tin ln u vit v dch chng trnh trc khi mnh dng chy chng trnh t h iu hnh. Cc tnh nng ca chng trnh Debug l : . Dch c mt chng trnh ngn. . Xem ni dung mt chng trnh dng m my hoc hp ng. . Xem cc thanh ghi v c ca CPU. . Chy tng bc, chy mt on chng trnh hoc chy ton b chng trnh. . Xem c s thay i ni dung ca cc bin. . a tr mi vo mt nh c a ch bt k. . D tm tr dng nh phn hoc dng ASCII trong b nh . Chuyn mt khi d liu t ch ny sang ch khc trong b nh. . Lp y tr vo mt vng b nh. . Np v ct tp tin trn a. . Xut nhp trc tip vi cng. II. Dng lnh ca Debug : Debug l mt tp tin chng trnh ca h iu hnh MS-DOS v vy bn c th chy n t h iu hnh mt cch n gin l nh nh sau : A>debug [[< a>:][<ngdn>]<tn tp tin> [<thng s tp tin>]] Du nhc ca Debug l du gch ni (-). Lnh c th nh theo dng ch in hay ch thng. Mt lnh c th theo sau bi mt hay nhiu thng s. Du phy hoc khong trng c dng ngn cch cc thng s. Cc thng s thng dng nh sau : Dng lnh : <m lnh> <thng s> trong <m lnh> l mt ch (A,C,D,...) cn <thng s> thay i ty theo lnh. Cc thng s gm c : a ch L mt b a ch y gm segment:offset hay ch cn offset l . Segment c th dng tn thanh ghi segment. V d : F000:100
DS:200

0AF5

Thc tp Vi x l - 2

Tp tin

L mt tham kho tp tin y , t nht phi c tn tp tin. V d : C:\masm\progs\test file1 b:test.com L mt hay nhiu tr byte hay chui, cch nhau bng du phy. V d : 10,20,21,52 'a','B',87 L tham kho n mt vng b nh, c nh ngha bi a ch theo mt trong hai cch sau : Cch 1 : a ch [,a ch ] V d : 100,500 CS:200,300 200 Cch 2 : a ch L [tr] V d : 100 L 20 (tham kho 20h byte bt u t v tr 100h) L s h 16 c ti a 4 ch s V d : 3A 5d0e

Danh sch

Khong

Tr

Cc lnh ca Debug : A < Assemble > Dch mt chng trnh ra m my. Cch gi nh sau : A [<a ch> ] V d : -a 100 Dch a ch CS:100h -a Dch a ch hin ti theo CS -A DS:2000 Dch a ch DS:2000h Bn phi nhp lnh vo theo tng dng mt v kt thc bng ENTER. Debug s nhc bn u mi dng mi bng a ch segment:offset ca nh hin ti. kt thc nhp, bn nh ENTER dng trng. -a 100 V d : 5514:0100 mov ah,2 5514:0102 mov dl,41 5514:0104 int 21 5514:0100 (Ch nghing m l do bn nh vo.)

Thc tp Vi x l - 3

C <Compare> So snh 2 vng b nh v lit k cc nh c ni dung khc nhau. Cch gi nh sau : C <khong> , <a ch> -C 100,200,3000:1000 V d : l so snh nh DS:100h vi nh 3000h:1000h, nh DS:101h vi nh 3000h:1001h, ..., cho n nh DS:200h vi nh 3000h:1100h. So snh 101h byte. -C CS:100 L 10 2000:1000 l so snh nh CS:100h vi nh 2000h:1000h, nh CS:101h vi nh 2000h:1001h, ..., cho n nh CS:10Fh vi nh 3000h:100Fh. So snh 10h byte. D < Dump > Hin ni dung b nh theo dng s h 16 v ASCII nu c th. Cch gi nh sau : D [<khong>] V d : -D F000:0 -D ES:100 -D 100 Segment hiu ngm l DS. Dng trnh by trn mn hnh nh sau : -d100
0B4E:0100 0B4E:0110 0B4E:0120 0B4E:0130 0B4E:0140 0B4E:0150 0B4E:0160 0B4E:0170 0F 04 61 6F 70 75 8E 0B 00 8B 6D 6D 72 6D FC F8 B9 C6 70 6D 6F 6D 12 83 8A 54 6C 61 67 13 A8 FF FF 68 65 6E 72 A8 33 FF F3 69 20 64 61 01 D2 74 AE 73 66 20 6D 50 29 11 47-61 20-69 6F-72 6F-66 2E-F3 14-74 E3-13 26-01 03 73 20 20 AA B1 8B 1D 1F 20 44 44 A0 BE C2 E2 8B 61 55 65 0A 32 03 F3 C3 6E 4D 62 EB 01 C3 81 48 20 50 75 06 8D 69 00 12 65 20 67 3C 8B 02 94 B1 78 63 20 B2 1E 00 FA .......Ga....H.. ...This is an ex ample for DUMP c ommand of Debug program.......<. umm...P.t..2.... ....3.)......i.. .....t.&........

E < Enter > Dng a d liu byte vo b nh ngay ti a ch mong mun. Cch gi nh sau : E <a ch > [<danh sch>] Tr nhp vo theo dng s h 16, tng byte mt. Du tr (-) dng lui li mt a ch. SPACE BAR dng ti mt a ch. ENTER kt thc. Nu c dng danhsch th Debug s a c danhsch vo b nh bt u t a ch ch nh. V d : -E 106 -E CS:200 "y l chui." -E 300 10,af,3d F < Fill > Lp y tr vo mt vng b nh. Cch gi nh sau : F <khong> <danh sch> Cc tr c lit k trong danh sch s c a vo vng b nh xc nh bi khong. Nu tr trong danh sch t hn vng b nh ch nh th Debug s ly tr lp li t u danh sch. Nu tr trong danh sch nhiu hn vng b nh ch nh th Debug s b bt phn d. V d : -F ES:200 L 300 'Anh' -F 100 400 10,2B,5C,45

Thc tp Vi x l - 4

G < Go > Chy chng trnh. Cch gi nh sau : G [=<a ch 1> ] [<a ch 2 >[<a ch 3> ...]] Chng trnh c chy t a ch 1 hoc t a ch hin ti (nu khng c a ch 1) cho n a ch 2 hoc a ch 3. a ch 2 v a ch 3 c gi l cc im dng chng trnh. V d : -G =100 108 123 chy t CS:100 cho n CS:108 hoc CS:123 -G 500 chy t CS:IP cho n CS:500. H < Hex arithmetic > Thc hin php cng v tr trong h 16. Cch gi nh sau : H <tr1> <tr2> Hin ra tng v hiu ca tr1 v tr2. V d : -H 1A 10 002A 000A I < Input > Nhp mt byte t cng xut nhp v hin ra mn hnh. Cch gi nh sau : I <a ch cng> a ch cng l s h 16 ti a 4 ch s. V d : -I 37E EC L < Load > Np tp tin hoc np sector lun l t a vo b nh. Cch gi nh sau : L <a ch> [<a> <sector> <s>] Dng 1 : Nu ch c duy nht a ch, dng np tp tin. Tn tp tin phi c gn trc bng lnh Name ca debug. Tp tin c thuc tnh .COM lun lun c np vo a ch offset 100h. Dng 2 : Nu c y cc thng s, dng c sector lun l trn a vo b nh a : = 0 : A; =1 : B; = 2 : C; ... sector : l s sector lun l bt u (t 0 tr i) s : s lng sector cn c vo -L 1000 c tp tin V d : -L 1000 0 0 1 c 1 sector th t 0 t a A.

Thc tp Vi x l - 5

M < Move > Chp ni dung mt vng b nh n a ch khc. Cch gi nh sau : M <khong> <a ch> -M 100 105 200 chp 5 byte t DS:100 n DS:200. V d : -M CS:100 L 50 ES:300 chp 50 byte t CS:100 n ES:300. N < Name > Khai bo tn tp tin trn a c vo hoc ghi ln. Cch gi nh sau : N <tn tp tin> [<thng s tp tin>] tn tp tin c th c tn a, tn th mc. V d : -N C:\DOS\DEBUG.EXE -N THU -s8 O < Output > Xut mt byte ra cng xut nhp. Cch gi nh sau : O <a ch cng> <tr> -O 378 5e V d : P < Ptrace > Chy tng bc chng trnh. Cch gi nh sau : P [=<a ch>] [<s ln>] Khi chy tng bc bng lnh P, cc lnh gi chng trnh con hoc lp vng c xem nh mt lnh duy nht. Sau mi ln chy, Debug s hin ra ni dung cc thanh ghi. Q < Quit > Thot khi chng trnh Debug v tr v H iu hnh. Cch gi nh sau : Q R < Register > Xem hoc sa ni dung thanh ghi. Cch gi nh sau : R [<tn thanh ghi>] Nu khng c tn thanh ghi th Debug hin ni dung tt c cc thanh ghi. Dng trnh by nh sau :
-r AX=0000 BX=0000 DS=0FA5 ES=0FA5 0FA5:0100 0F CX=0000 DX=0000 SS=0FA5 CS=0FA5 DB 0F SP=FFEE IP=0100 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

Nu ch nh tn thanh ghi l sa ni dung thanh ghi. V d : -R CX CX 0000 : 1234 S < Search > Tm kim tr trong mt vng b nh. Cch gi nh sau : S <khong> <danhsch> Tm kim cc tr c trong danh sch xem c hin din trong vng b nh ch nh hay khng. Nu c th Debug hin cc a ch u ca nhng ni c cha danh sch. -S 100 L 1000 'DOS' V d : 18AF:0154

Thc tp Vi x l - 6

18AF:0823 -S 2000 2200 13,15,8A,8 T < Trace > Chy tng bc chng trnh nh lnh P. Cch gi nh sau : T [=<a ch>] [<tr>] Lnh T chy tng bc c cc lnh ca chng trnh con. Debug cng hin ni dung cc thanh ghi sau mi bc chy. U < unassembler > Dch ngc t m my ra m gi nh. Cch gi nh sau : U [<khong>] V d : -U 100 -U 1000 L 200 W < Write > Ghi mt vng b nh ln a. Cch gi nh sau : W <a ch> [<a> <sector> <s>] Dng 1 : Nu ch c duy nht a ch, dng ghi mt vng b nh ln tp tin. Tn tp tin phi c khai bo trc bng lnh Name ca Debug, cn s byte ghi (tr 32 bit) cha trong thanh ghi BX-CX. Trong , BX cha 16 bit cao cn CX cha 16 bit thp. V d : -R BX BX 0012 : 0000 -R CX CX 5A08 : 200 -n thu.cod -W 100 Dng 2 : Nu c y cc thng s, dng ghi mt vng b nh trc tip ln a. a : = 0 : A; =1 : B; = 2 : C; ... sector : l s sector lun l bt u (t 0 tr i) s : s lng sector cn ghi ln a. V d : -W 1000 0 f 10 ghi d liu vng a ch DS:1000 ln a A, bt u t sector lun l 15, lin tip 16 sectors.

Thc tp Vi x l - 7

PHN THC HNH

VDeb1

Debug 1 - Thanh ghi v b nh

VDeb2

Debug 2 - Lnh v chng trnh

VDeb3

Debug 3 - Ct v np tp tin

VChDl

Lnh 8086 - Chuyn d liu

VSoHo

Lnh 8086 - S hc

VLuLy

Lnh 8086 - Lun l

VCh}k

Lnh 8086 - Chuyn iu khin

VChuo

Lnh 8086 - X l chui

VHNg1

Hp ng 86 - Dch v lin kt

VHNg2

Hp ng 86 - Cc v d lp trnh

Thc tp Vi x l - 8

Thc tp Vi x l - 9

VDeb1
Mc ch

Debug 1 - Thanh ghi v b nh

: - S dng lnh R xem v sa ni dung cc thanh ghi ca 8086. - S dng lnh D xem ni dung b nh. - S dng lnh E v lnh F sa ni dung b nh. - S dng lnh M chp ni dung b nh. - S dng lnh Q kt thc. Chun b : - c trc phn l thuyt v cc lnh ca Debug. Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Khi ng chng trnh Debug :


T windows chuyn ra DOS PROMPT chy. Cch 1 : Chn Start - Programs - MS-DOS Prompt Cch 2 : Chn Start - Run - nh vo COMMAND Sau khi ra DOS, nh vo : C>debug Lc trn mn hnh s xut hin du nhc ca chng trnh Debug nh sau : C>debug Du nhc ca debug

k t lc ny bn c th nh vo cc lnh ca Debug chy.

2. Xem ni dung thanh ghi :


Mc ch : S dng thnh tho lnh R ca debug xem ni dung cc thanh ghi ca CPU 8086. Bc 1 : Chy chng trnh Debug. Bc 2 : t du nhc ca debug nh lnh R -r quan st cch trnh by mn hnh ca debug : v tr, tn v ni dung cc thanh ghi.
Tn thanh ghi Ni dung thanh ghi

-r AX=0000 BX=0000 DS=1070 ES=1070 1070:0100 03F1


Segment Offset

CX=0000 DX=0000 SP=FFEE SS=1070 CS=1070 IP=0100 ADD SI,CX


Lnh ti a ch CS:IP

BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

Cc c

Thc tp Vi x l - 10

ch cch th hin cc c bng ch : OF (c trn) : NV (OF=0) hoc DF (c hng) : UP (DF=0) hoc IF (c ngt) : DI (IF=0) hoc SF (c du) : PL (SF=0) hoc ZF (c zero) : NZ (ZF=0) hoc AF (c nh na) : NA (AF=0) hoc PF (c parity) : PO (PF=0) hoc CF (c nh) : NC (CF=0) hoc

OV DN EI NG ZR AC PE CY

(OF=1) (DF=1) (IF=1) (SF=1) (ZF=1) (AF=1) (PF=1) (CF=1)

3. Sa ni dung thanh ghi :


Mc ch : S dng thnh tho lnh R ca debug sa ni dung cc thanh ghi ca CPU 8086. Bc 1 : nh lnh R theo sau l tn thanh ghi cn sa ni dung l AX -r ax trn mn hnh s hin ra tn thanh ghi AX cng vi ni dung ang c -r ax AX 0000 Ni dung c ca thanh ghi :
Tn thanh ghi Ni dung mi s nh vo

Bc 2 : Bc 3 : Bc 4 : Bc 5 :

lc ny cursor nm sau du hai chm v bn c th nh tr mi vo theo dng s h 16 :1234 dng lnh R xem li ton b ni dung cc thanh ghi, ch quan st ni dung thanh ghi va sa. bn thc hin li bc 1 v 2 thc hin gn cc tr theo yu cu sau : ax=abab bx=cdcd cx=e5e5 dx=7833 si=1234 di=9865 bp=1a5f xem li ni dung cc thanh ghi. nh lnh R sa ni dung thanh ghi c nh sau : -r f NV UP EI PL NZ NA PO NC Gi tr c Tr mi nh vo y

lc ny im nhy mn hnh nm sau du tr v bn c th nh tr mi ca cc c bng cc ch nh trn NV UP EI PL NZ NA PO NC -ZR CY


C Z = 1 C C = 1

Thc tp Vi x l - 11

4. Xem ni dung b nh :
Mc ch : S dng thnh tho lnh D ca debug xem ni dung ca mt vng b nh di dng s hex Bc 1 : nh vo lnh D theo mt trong hai dng sau xem ni dung ca 30h byte b nh t a ch lun l 0000:0040 n a ch 0000:006F (a ch cui khng cn segment): -d 0000:0040 006f
a ch bt u a ch cui

-d 0000:0040 L 30
a ch bt u S byte

lc trn mn hnh s hin ra nh sau :


Ni dung nh dng Hexa Ni dung nh dng ASCII -d 0000:0040 006f 0000:0040 07 00 70 C8 4D F8 00 F0-41 F8 00 F0 15 25 A4 FD 0000:0050 39 E7 00 F0 40 02 84 02-2D 04 70 00 28 0A 87 03 0000:0060 61 7D 00 F0 2F 00 65 06-6E FE 00 F0 04 06 87 03 a ch segment a ch offset Offset Offset Offset

..p.M...A....%.. 9...@...-.p.(... a}../.e.n.......

Offset

Offset Offset

Bc 2 : Bc 3 : Bc 4 :

Bc 5 :

Quan st xem trn mn hnh hin ra ni dung b nh nh th no. Vng u l a ch lun l ca cc nh , vng gia l ni dung ca cc nh theo dng s hex v vng cui l ni dung ca cc nh theo dng m ASCII. Tip tc nh lnh D m khng cn a ch theo sau xem tip : -d quan st a ch ca vng b nh , v s byte m debug hin ra. Bn thc hin li cc bc trn xem ni dung b nh cc a ch khc nhau m bn mun xem. Th s dng c hai dng lnh D. Mt vi a ch b nh m bn khng nn b qua nh : bng vector ngt qung (0000:0000), ROM BIOS (F000:0000), RAM mn hnh (B800:0000), . . . By gi bn nh vo lnh D vi a ch ch c offset m khng c segment v tm hiu xem debug ly segment mc nhin theo thanh ghi on no trong cc thanh ghi on DS, ES, SS v CS.

5. Sa ni dung b nh :
Mc ch : S dng thnh tho lnh E ca debug sa ni dung ca mt byte hay mt vng b nh di dng s hex hay m ASCII. Bc 1 : Trc khi thc hin bi ny, bn nh vo lnh R xem gi tr cc thanh ghi trc. iu ny cn thit cho cc bi thc hnh sa ni dung b nh v bn cn xc nh khong a ch b nh dnh cho ngi s dng. chnh l cc a ch segment ln hn hoc bng ni dung cc thanh ghi on DS, ES, SS v CS m bn thy trn mn hnh.

Thc tp Vi x l - 12
-r AX=0000 BX=0000 DS=1070 ES=1070 1070:0100 03F1 CX=0000 DX=0000 SP=FFEE SS=1070 CS=1070 IP=0100 ADD SI,CX BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

a ch segment dnh cho ngi s dng

Bc 2 :

Nh vy, bn ch nn sa ni dung b nh trong vng b nh dnh cho ngi s dng v nh vy s khng xm phm vo vng b nh ca h thng m iu c th gy ra ng my hoc thot tr v windows. nh vo lnh E theo sau l a ch bt u ca vng nh cn sa ni dung. -e 2000:1000 2000:1000 06._
Tr mi nh vo y Ni dung c ca nh

nh tr vo ngay v tr con tr theo h 16. Trong khi nhp tr, bn c th s dng cc phm sau : . Phm KHONG TRNG cho php bn chuyn sang nh k tip m khng phi thot tr ra du nhc ca debug. . Tng t, phm DU TR dng chuyn sang nh trc . . Phm ENTER dng kt thc nhp v tr v du nhc ca debug. Trong v d ny bn c th chn mt chui m ASCII ca tn bn nh vo. Chng hn nh 4d 69 6e 68 ( Bn ln lt nh vo chui phm : 4, d, khong trng, 6, 9, khong trng, 6, e, khong trng, 6, 8, Enter ). Trn mn hnh s nh sau : -e 2000:1000 2000:1000 06.4d 3a.69 17.6e 55.68 Bc 3 : Dng lnh D xem li ni dung 4 nh m bn va sa tr. -d 2000:1000 l 4 Bc 4 : Thc hin li bc 1 v 2 nhng khng nhp tr m ch dng phm khong trng ln lt chuyn sang a ch k v xem ni dung tng nh. Dng Enter kt thc. Bc 5 : Thc hin li bc 1 v 2 nhng khng nhp tr m ch dng phm du tr ln lt chuyn sang a ch trc v xem ni dung tng nh. Dng Enter kt thc. Bc 6 : Th thc hin sa ni dung b nh ROM a ch F000:0000 xem c c hay khng. Bc 7 : nh vo dng lnh E theo sau l a ch v d liu nh sau : -e 2000:1200 12 34 56 78 sau xem li ni dung b nh v rt ra kt lun. Bc 8 : nh vo dng lnh E theo sau l a ch v d liu l chui ASCII nh sau : -e 2000:1200 'I love you !' sau xem li ni dung b nh v rt ra kt lun. Bc 9 : Sinh vin t th lnh F (xem phn l thuyt) v so snh vi lnh E. Bc 10 : Sinh vin t th lnh M chp ni dung b nh (xem phn l thuyt).

Bc 3 :

Thc tp Vi x l - 13

VDeb2
Mc ch

Debug 2 - Lnh v chng trnh

: - S dng lnh A nh lnh ca 8086 vo b nh. - S dng lnh U xem cc lnh c trong b nh. - S dng lnh T v lnh P chy tng lnh trong b nh. - S dng lnh G chy chng trnh c trong b nh. Chun b : - c trc phn l thuyt v cc lnh ca Debug. Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Xem ni dung b nh di dng chng trnh :


Mc ch : S dng thnh tho lnh U ca debug xem ni dung b nh di dng cc lnh hp ng. U [<khong a ch>] Bc 1 : nh vo lnh U theo sau l vng a ch xem ni dung vng nh di dng cc lnh hp ng. -u f000:300 30e
F000:0300 F000:0301 F000:0303 F000:0305 F000:0307 F000:0309 F000:030C
a ch lnh Offset 30C Offset 30D Offset 30E

FA B080 E680 8CC8 8ED0 BC0F03 E93101

CLI MOV OUT MOV MOV MOV JMP


Dng m my

AL,80 80,AL AX,CS SS,AX SP,030F 0440


Dng lnh hp ng

Bc 2 :

Bc 3 : Bc 4 :

Ch cch trnh by, cc vng t tri sang phi : . a ch b nh gm c segment v offset. . Ni dung b nh dng m my s hex ca lnh, 2 s tng ng 1 byte (1 a ch). Nh vy, nu vng ny c 6 s c ngha l lnh tng ng di 3 byte. . Ni dung b nh dng lnh hp ng. nh vo lnh U nh sau xem tip cc lnh k : -u By gi bn nh vo lnh U vi a ch ch c offset m khng c segment v tm hiu xem debug ly segment mc nhin theo thanh ghi on no trong cc thanh ghi on DS, ES, SS v CS.

Thc tp Vi x l - 14

2. Nhp lnh vo b nh :
Mc ch : S dng thnh tho lnh A ca debug nhp lnh vo a ch b nh ch nh.
A [<a ch>]

Bc 1 : Bc 2 :

Trc khi thc hin bi ny, bn nh vo lnh R xem gi tr cc thanh ghi trc xc nh b nh dnh cho ngi s dng (ni dung ca cc thanh ghi on DS, ES, SS v CS). Bn ch nn nhp lnh t sau a ch segment tr i. nh lnh A theo sau l a ch b nh ni bt u chng trnh . -a 2000:100 bn s thy trn mn hnh hin ra nh sau : -a 2000:100 2000:0100 _
a ch bt u Bt u nh lnh hp ng vo y

lc ny bn nh on chng trnh sau vo b nh 2000:0100 mov al,32 2000:0102 mov ah,4f 2000:0104 mov cx,[200] 2000:0108 mov word ptr [1800],1 2000:010E mov byte ptr [1800],1 2000:0113
nh ENTER u dng kt thc nhp

khi bn nhp lnh vo sai c php, debug s bo li ngay v bn phi nhp li. -a 2000:100 Nhp lnh sai c php 2000:0100 move al,1 ^ Error Debug bo li 2000:0100 mov al,1 2000:0102
Lnh nhp li cng a ch

Bc 3 :

Xem li on chng trnh va nh vo bng lnh U. Ch quan st phn m my. Tm xem cc ton hng tc thi v cc a ch xut hin u trong phn m my ca lnh. Phn m my ca 2 lnh cui c g khc nhau khi dng cc ton t WORD PTR v BYTE PTR.

Thc tp Vi x l - 15

3. Chy tng bc chng trnh :


Mc ch : S dng thnh tho lnh T v P ca debug chy mt hoc nhiu lnh trong b T [=<a ch>] [<s ln >] nh.
P [=<a ch>] [<s ln>]

Bc 1 :

Dng lnh A nhp cc lnh cn chy sau y vo vng b nh ch nh l 3000:100.


mov mov add mov mov mov mov mov mov al,12 ah,f ah,al cx,facd word ptr [200],7 byte ptr [201],37 bx,100 si,100 ax,[si][bx]

Bc 2 : Bc 3 :

Bc 4 : Bc 5 :

dng lnh U kim tra li xem bn nhp chng trnh c chnh xc khng. Ch quan st a ch bt u ca mi lnh. dng lnh T chy tng bc chng trnh trn theo dng sau : -t = 3000:100 sau khi thi hnh xong mt lnh, debug t ng hin ra ni dung cc thanh ghi bn xem s thay i ni dung ca cc thanh ghi hoc ca cc c trng thi. Nu lnh va thi hnh c lin quan n b nh, bn phi dng lnh D xem ni dung nh lin quan. thi hnh lnh k, bn ch cn nh lnh T m khng cn a ch lnh -t lc debug s thi hnh lnh ti a ch mc nhin l CS:IP. bn nh vo a ch 2000:200 cc lnh sau :
mov mov ret mov add call mov bx,2233 cx,4455 ax,0 al,11 200 dx,6677

nh tip vo a ch 2000:100 cc lnh sau :

dng lnh R xa ni dung cc thanh ghi AX, BX, CX, DX v 0. dng lnh T chy t a ch 2000:100 v quan st s thi hnh cc lnh (ghi li a ch cc lnh m CPU chy qua) cng nh cc tc ng trn ni dung cc thanh ghi AX, BX, CX, DX. Bc 8 : dng lnh R xa ni dung cc thanh ghi AX, BX, CX, DX v 0. Bc 9 : by gi lm li bc 7 nhng khng dng lnh T m thay vo l s dng lnh P. Quan st v cho nhn xt xem dng lnh T phi chy bao nhiu ln ? Cn lnh P th cn bao nhiu ln ? Ti sao ? Bc 10 : dng lnh R xa ni dung cc thanh ghi AX, BX, CX, DX v 0. Bc 11 : dng lnh T hay P c km theo s ln xc nh trong bc 9. -t=2000:100 <s ln ca lnh T> hoc -p=2000:100 <s ln ca lnh P>

Bc 6 : Bc 7 :

Thc tp Vi x l - 16

4. Chy chng trnh :


Mc ch : S dng thnh tho lnh G ca debug chy mt on chng trnh trong b G [=<a ch 1> ] [<a ch 2 >[<a ch 3> ...]] nh. Bc 1 : lm li bc 5 v bc 6 ca mc 2. Bc 2 : dng lnh G thi hnh cc lnh nh sau : -g=2000:100 2000:10b bn thy kt qu th no ? chuyn g s xy ra nu bn dng lnh G nh sau : -g=2000:100 Bc 3 : Nu b ng my hay tr v windows th bn khi ng li v lm li cc thao tc cho n ht bc 1. Bc 4 : dng lnh A thm vo a ch 2000:10B lnh int 3 . Bc 5 : nh vo lnh G nh sau : -g=2000:100 cho nhn xt v tc dng ca vic thm vo lnh int 3 cui. Bc 6 : by gi bn c th thc hin cc yu cu sau c khng ? - Np vo a ch 2000:100 on chng trnh sau : mov ah,9 mov dx,200 int 21 - a chui ASCII 'Chao ban !$' vo a ch 2000:200. - Sa ni dung thanh ghi on DS thnh 2000. - Chy chng trnh bt u t a ch 2000:100. Bn phi nh ng b ng my hoc tr v windows nh. Bn thy g trn mn hnh ? Bc 7 : Bn c chng trnh ngn ngn no m bn mun th hay khng ? Hy th i !

Thc tp Vi x l - 17

VDeb3
Mc ch

Debug 3 - Ct v np tp tin

: - S dng lnh N t tn tp tin mun lm vic. - S dng lnh W ct ni dung b nh ln tp tin trn a. - S dng lnh L np tp tin trn a vo b nh. Chun b : - c trc phn l thuyt v cc lnh ca Debug. Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. : 2 tit. Thi gian

1. Lu d liu trong b nh ln a :
Mc ch : S dng thnh tho lnh N v lnh W ca debug lu d liu trong b nh ln a. N <tn tp tin> [<thng s tp tin>]
W [<a ch>]

Bc 1 : Bc 2 : Bc 3 : Bc 4 : Bc 5 :

Dng lnh R xc nh vng a ch dnh cho ngi s dng. Dng lnh E a cu thng bo 'I love you more than I can say' vo b nh a ch 2000:1000 ( 1EH byte ). -e 2000:1000 'I love you more than I can say' Dng lnh D kim tra li a ch 2000:1000. Dng lnh N t tn tp tin trn a nh sau : -n love.txt Dng lnh R nh s byte cn ghi ln a trong hai thanh ghi BX v CX (y l gi tr 32 bit m trong BX cha 16 bit cao, cn CX cha 16 bit thp). C th trong trng hp ny s byte cn ghi l 1EH nn ni dung cc thanh ghi BX v CX nh sau: 0000001E
Chiu di tp tin 32 bit Vo BX Vo CX

Bc 6 : Bc 7 :

Bc 8 :

-r bx BX 0000 :0 -r cx CX 0000 :1e Dng lnh R kim tra li ni dung cc thanh ghi BX, CX. By gi bn c th dng lnh W ghi cu thng bo nhp vo a ch b nh 2000:1000 ln tp tin love.txt nh sau : -w 2000:1000 Writing 0001E bytes Thot khi Debug (lnh Q), kim tra li tn tp tin love.txt trn a v dng lnh type ca h iu hnh xem ni dung tp tin .

Thc tp Vi x l - 18

2. Lu chng trnh trong b nh ln a :


Mc ch : S dng thnh tho lnh N v lnh W ca debug lu mt chng trnh n N <tn tp tin> gin dng .COM trong b nh ln a.
W [<a ch>]

Bc 1 : Bc 2 :

Bc 3 :

Dng lnh R xc nh vng a ch dnh cho ngi s dng. Dng lnh A nhp on chng trnh sau vo a ch 2000:100. -a 2000:100 2000:0100 mov ah,2 2000:0102 mov dl,40 2000:0104 int 21 2000:0106 int 20 2000:0108 Dng lnh U kim tra li chng trnh nhp a ch 2000:100. -u 2000:100 l a
a ch bt u Lnh u

2000:0100 2000:0102 2000:0104 2000:0106 2000:0108

B402 B240 CD21 CD20 1400

MOV MOV INT INT ADC

AH,02 DL,40 21 20 AL,00

Lnh cui

a ch kt thc

Lnh c sn trong b nh khng thuc chng trnh

Chiu di chng trnh = a ch kt thc - a ch bt u

Dng lnh N t tn tp tin trn a nh sau : -n atsign.com Bc 5 : Dng lnh R np chiu di ca chng trnh cn ghi ln a vo hai thanh ghi BX v CX. Bc 6 : Dng lnh R kim tra li ni dung cc thanh ghi BX, CX. Bc 7 : By gi bn c th dng lnh W ghi chng trnh nhp vo a ch b nh 2000:100 ln tp tin atsign.com nh sau : -w 2000:100 Writing 00008 bytes Bc 8 : Dng lnh P hoc G chy th chng trnh trn. Bc 9 : Thot khi Debug (lnh Q), kim tra li xem c tp tin atsign.com trn a hay cha v gi atsign chy chng trnh ny. i chiu vi kt qu chy chng trnh trong debug. Bc 10 : By gi bn c th thay gi tr 40 trong chng trnh bng mt s khc v cho bit ngha ca n trong chng trnh. Bc 11 : Bn c chng trnh no ngn ngn chy th v ct ln a hay khng ?

Bc 4 :

Thc tp Vi x l - 19

3. Np tp tin a t a vo b nh :
Mc ch : S dng thnh tho lnh N v lnh L ca debug np mt tp tin t a vo b N <tn tp tin> [<thng s tp tin>] nh.
L [<a ch>]

Bc 1 : Bc 2 : Bc 3 : Bc 4 : Bc 5 : Bc 6 : Bc 7 : Bc 8 :

Dng lnh R xc nh vng a ch dnh cho ngi s dng. Dng lnh N khai bo tn tp tin trn a : -n love.txt Dng lnh L c tp tin vo a ch 2000:3000 nh sau : -l 2000:3000 Dng lnh R xem ni dung hai thanh ghi BX v CX xem chiu di tp tin l bao nhiu byte. Dng lnh D xem ni dung vng m cha tp tin c. -d 2000:3000 Thot khi Debug v gi li theo cch sau : F > debug love.txt Tm xem debug np tp tin love.txt vo ch no trong b nh. Bn c th np tp tin atsign.com trn a vo vng b nh c a ch offset bt k c khng ? Nu khng th tm hiu xem chng trnh .COM ch cho php np vo v chy bt u t a ch offset bao nhiu ? By gi bn c th np bt k tp tin no trn a vo b nh v xem ni dung ca tp tin theo hai dng khc nhau : d liu hoc chng trnh. Bn th xem.

Thc tp Vi x l - 20

VChDl

Lnh 8086 - Chuyn d liu

Mc ch : - Hiu cc lnh trong nhm lnh chuyn d liu ca 8086. Chun b : - c trc phn l thuyt v nhm lnh chuyn d liu ca 8086. Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Lnh MOV :
Mc ch : S dng thnh tho lnh MOV ca vi x l 8086. MOV th,thn Bc 1 : Dng lnh A nhp vo cc lnh sau vo a ch 2000:0100. Trong qu trnh nhp, tm xem lnh no khng hp l (s b bo li) v gii thch ti sao : mov al,34 mov ah,12 mov bx,12 mov 1234,ax mov cx,1234 mov ds,1234 mov bh,bl mov cx,ax mov si,bx mov ax,es Bc 2 : Dng lnh U xem li cc lnh nhp. Ch phn m lnh ca cc lnh nh v ton hng tc thi. Cc gi tr tc thi cung cp trong cu lnh cng s xut hin trong phn m lnh. Bc 3 : Dng lnh T hoc P chy tng lnh trn v quan st kt qu trong cc thanh ghi. Bc 4 : Lp li qu trnh trn th cc lnh sau ti a ch 2000:1000. Ch tc dng ca ton t PTR i vi vic dch v chy chng trnh. Cc lnh no khng ng c php ? mov [1000],1 mov byte ptr [1000],1 mov word ptr [1002],1 mov si,2000 mov di,3000 mov word ptr [si+2],2 mov bx,100 mov dx,bx mov byte ptr [dx+18],e mov byte ptr [si+bx+18],1c mov word ptr [si],[2000] mov byte ptr [si+di],2a mov word ptr [di+bx],3b i vi cc nh c a ch hiu dng trong lnh phi dng lnh D xem s thay i ni dung ca chng.

Thc tp Vi x l - 21

Bc 5 :

Tm cc lnh lm cc cng vic sau : si 800 [si+200] al [2000] cx bx [si+202] [bx+si] ds dl [si+1800]
PUSH POP thn th

2. Lnh PUSH, POP :


Mc ch : S dng thnh tho lnh PUSH v POP ca vi x l 8086. Bc 1 : Dng lnh A nhp vo cc lnh sau vo a ch 2000:0100. Trong qu trnh nhp, tm xem lnh no khng hp l (s b bo li) v gii thch ti sao : push ax push [200] push cl push [si+3] pop es pop cx pop dx Dng lnh T hoc lnh P chy cc lnh trn. Ch quan st s thay i ca thanh ghi SP v ni dung ca stack.

Bc 2 :

3. Lnh XLAT :
Mc ch : S dng thnh tho lnh tra bng XLAT ca vi x l 8086. XLAT Bc 1 : Dng chng trnh debug np chng trnh XLAT.COM t a vo b nh. Bc 2 : Dng lnh R, lnh U v lnh D xem li chng trnh XLAT.COM trong b nh.
Kch thc chng trnh Segment np chng trnh Offset np chng trnh

-r AX=0000 BX=0000 CX=0090 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000 DS=1092 ES=1092 SS=1092 CS=1092 IP=0100 NV UP EI PL NZ NA PO NC 1092:0100 A04001 MOV AL,[0140] DS:0140=00 -u 1092:0100 A04001 MOV AL,[0140] ;np bin b nh vo thanh ghi AL 1092:0103 240F AND AL,0F ;xa 4 bit cao 1092:0105 BB8001 MOV BX,0180 ;BX cha a ch u bng 1092:0108 D7 XLAT ;thc hin AL [BX+AL] 1092:0109 B402 MOV AH,02 ;thc hin xut k t trong AL ra 1092:010B 8AD0 MOV DL,AL ; mn hnh bng chc nng 02h1092:010D CD21 INT 21 ; ca ngt 21h 1092:010F CD20 INT 20 ;ngt 20h kt thc chng trnh. -d 140 l 10 1092:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................ -d 180 l 10 1092:0180 30 31 32 33 34 35 36 37-39 38 41 42 43 44 45 46 0123456798ABCDEF

Bc 3 : Bc 4 :

Dng lnh P thi hnh tng lnh ca chng trnh trn v quan st kt qu trong cc thanh ghi. Dng lnh E thay i gi tr ca nh 140h v chy li chng trnh. Cho nhn xt.

Thc tp Vi x l - 22

VSoHo

Lnh 8086 - S hc

Mc ch : - Hiu cc lnh trong nhm lnh s hc ca 8086. Chun b : - c trc phn l thuyt v nhm lnh s hc ca vi x l 8086 Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Lnh cng : Mc ch : S dng thnh tho cc lnh cng ADD v cng c nh ADC ca vi x l 8086.
ADD ADC th,thn th,thn

Bc 1 : Bc 2 :

Np chng trnh cng nhiu byte ADD.COD vo b nh thc hin php cng hai s 4 byte. Xem li chng trnh np vo
-u 100 12A 1078:0100 BE8001 MOV SI,0180 1078:0103 BB8401 MOV BX,0184 1078:0106 BF8801 MOV DI,0188 1078:0109 8A04 MOV AL,[SI] 1078:010B 0207 ADD AL,[BX] 1078:010D 8805 MOV [DI],AL 1078:010F 8A4401 MOV AL,[SI+01] 1078:0112 124701 ADC AL,[BX+01] 1078:0115 884501 MOV [DI+01],AL 1078:0118 8A4402 MOV AL,[SI+02] 1078:011B 124702 ADC AL,[BX+02] 1078:011E 884502 MOV [DI+02],AL 1078:0121 8A4403 MOV AL,[SI+03] 1078:0124 124703 ADC AL,[BX+03] 1078:0127 884503 MOV [DI+03],AL 1078:012A CC INT 3 -d 180 l 10 1078:0180 66 F7 18 0C 12 5F 1B 06-00 00 00 00 00 00 00 00

f...._..........

Bc 3 : Bc 4 :

chng trnh ny s thc hin cng hai s 4 byte vi nhau. S th nht cha trong b nh a ch t 180 n 183. S th hai cha trong b nh a ch t 184 n 187. Kt qu l s 4 byte c ct vo b nh a ch t 188 n 18B. Dng lnh T ca debug chy tng bc v quan st s thay i ca thanh ghi AL. Dng lnh D ca debug xem li kt qu php cng ct ti b nh c a ch 188.

2. Lnh tr : Mc ch : S dng thnh tho cc lnh tr SUB v tr c nh SBB ca vi x l 8086.


SUB SBB th,thn th,thn

Bc 1 : Bc 2 :

Np chng trnh SUB.COD t a vo. Dng lnh U ca debug xem li ni dung chng trnh.
-u 100 10d 1078:0100 B81800 1078:0103 2D1200 1078:0106 F8 1078:0107 BB1800 1078:010A 83DB12 1078:010D CC MOV SUB CLC MOV SBB INT AX,0018 AX,0012 BX,0018 BX,+12 3

Bc 2 :

Dng lnh T hoc G chy on chng trnh trn v so snh ni dung hai thanh ghi AX v BX.

Thc tp Vi x l - 23

Bc 3 :

By gi bn thay lnh CLC trong on chng trnh trn bng lnh STC. Sau chy li chng trnh v cho bit nhn xt ca bn v s khc nhau gia hai lnh SUB v SBB.
MUL thn

3. Lnh nhn : Mc ch : S dng thnh tho lnh nhn MUL ca vi x l 8086. Bc 1 : Np chng trnh MUL.COD t a vo. Bc 2 : Dng lnh U ca debug xem li ni dung chng trnh.
-u 100 108 1078:0100 B400 1078:0102 B052 1078:0104 B304 1078:0106 F6E3 1078:0108 CC -u 120 12b 1078:0120 BA3412 1078:0123 B85201 1078:0126 BB0400 1078:0129 F7E3 1078:012B CC -u 140 14d 1078:0140 B400 1078:0142 B052 1078:0144 C606300104 1078:0149 F6263001 1078:014D CC MOV MOV MOV MUL INT MOV MOV MOV MUL INT MOV MOV MOV MUL INT AH,00 AL,52 BL,04 BL 3 DX,1234 AX,0152 BX,0004 BX 3 AH,00 AL,52 BYTE PTR [0130],04 BYTE PTR [0130] 3

Bc 3 : Bc 4 : Bc 5 :

Dng lnh T hoc G ca debug chy chng trnh a ch 100. Dng lnh T hoc G ca debug chy chng trnh a ch 120. Dng lnh T hoc G ca debug chy chng trnh a ch 140.
DIV thn

4. Lnh chia : Mc ch : S dng thnh tho lnh chia DIV ca vi x l 8086. Bc 1 : Np chng trnh DIV.COD t a vo. Bc 2 : Dng lnh U ca debug xem li ni dung chng trnh.
-u 100 107 1078:0100 B88500 1078:0103 B105 1078:0105 F6F1 1078:0107 CC -u 120 127 1078:0120 B81603 1078:0123 B102 1078:0125 F6F1 1078:0127 CC -u 140 14b 1078:0140 BA0000 1078:0143 B81603 1078:0146 B90200 1078:0149 F7F1 1078:014B CC MOV MOV DIV INT MOV MOV DIV INT MOV MOV MOV DIV INT AX,0085 CL,05 CL 3 AX,0316 CL,02 CL 3 DX,0000 AX,0316 CX,0002 CX 3

Bc 3 : Bc 4 : Bc 5 :

Dng lnh T hoc G ca debug chy chng trnh ch 100. Dng lnh T hoc G ca debug chy chng trnh ch 120. C g xy ra ? Bn c th gii thch ti sao khng ? Dng lnh T hoc G ca debug chy chng trnh ch 140. So snh hai on chng trnh a ch 120 v a ch 140.

Thc tp Vi x l - 24

5. Lnh tng v lnh gim : Mc ch : S dng thnh tho lnh tng INC v lnh gim DEC ca vi x l 8086.
INC DEC th th

Bc 1 : Bc 2 :

Np chng trnh INCDEC.COD t a vo. Dng lnh U ca debug xem li ni dung chng trnh.
-u 100 106 1078:0100 BEFEFF 1078:0103 46 1078:0104 46 1078:0105 46 1078:0106 CC -u 120 131 1078:0120 C606100102 1078:0125 FE0E1001 1078:0129 FE0E1001 1078:012D FE0E1001 1078:0131 CC MOV INC INC INC INT MOV DEC DEC DEC INT SI,FFFE SI SI SI 3 BYTE BYTE BYTE BYTE 3 PTR PTR PTR PTR [0110],02 [0110] [0110] [0110]

Bc 3 : Bc 4 :

Dng lnh T ca debug chy chng trnh ch 100. Quan st c CF v ZF. Dng lnh T ca debug chy chng trnh ch 120. Quan st c CF v ZF.
CMP th,thn

6. Lnh so snh : Mc ch : S dng thnh tho lnh so snh CMP ca vi x l 8086. Bc 1 : Np chng trnh CMP.COD t a vo. Bc 2 : Dng lnh U ca debug xem li ni dung chng trnh.
-u 100 108 1078:0100 B012 1078:0102 3C11 1078:0104 3C12 1078:0106 3C13 1078:0108 CC MOV CMP CMP CMP INT AL,12 AL,11 AL,12 AL,13 3

Bc 3 :

Dng lnh T ca debug chy chng trnh ch 100. Quan st s thay i cc c sau mi ln vi x l thc hin mt lnh.

Thc tp Vi x l - 25

VLuLy

Lnh 8086 - Lun l

Mc ch : - Hiu cc lnh trong nhm lnh lun l, dch v quay ca 8086. Chun b : - c trc phn l thuyt v nhm lnh lun l, dch v quay ca vi x l 8086. Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Lnh lun l : Mc ch : S dng thnh tho cc lnh AND ca vi x l 8086 xa bit, lnh OR lp bit v lnh XOR o bit. AND th,thn
OR XOR th,thn th,thn

Bc 1 : Bc 2 :

Np chng trnh ANDORXOR.COD t a vo b nh. Dng lnh U xem li chng trnh np vo.
-u100 10e 1071:0100 1071:0102 1071:0104 1071:0106 1071:0108 1071:010A 1071:010C 1071:010E -u120 130 1071:0120 1071:0122 1071:0124 1071:0126 1071:0128 1071:012A 1071:012C 1071:012E 1071:0130 -u140 14e 1071:0140 1071:0142 1071:0144 1071:0146 1071:0148 1071:014A 1071:014C 1071:014E B401 CD21 B320 08D8 88C2 B402 CD21 CC B401 CD21 B320 F6D3 20D8 88C2 B402 CD21 CC B401 CD21 B320 30D8 88C2 B402 CD21 CC MOV INT MOV OR MOV MOV INT INT MOV INT MOV NOT AND MOV MOV INT INT MOV INT MOV XOR MOV MOV INT INT AH,01 21 BL,20 AL,BL DL,AL AH,02 21 3 ;nhp k t t ;vo thanh ghi ;mt n i ;or vi 20h l ;xut k t ra bn phm AL ra ch nh lp bit 5 mn hnh

AH,01 21 BL,20 BL ;to mt n i ra ch ln AL,BL ;and vi not 20h l xa bit 5 DL,AL AH,02 21 3 AH,01 21 BL,20 ;mt n i ra ch nh AL,BL ;xor vi 20h l o bit 5 DL,AL AH,02 21 3

Bc 3 : Bc 4 : Bc 5 :

Dng lnh P hoc G ca debug chy chng trnh a ch 100. Khi my s ch bn nhp vo mt k t. Lc bn ch nh vo mt ch ln hoc ch nh thy kt qu i ra ca on chng trnh. Thc hin li tng t bc 3 nhng vi chng trnh a ch 120. Cho nhn xt ca bn v kt qu nhn c. Thc hin li tng t bc 3 nhng vi chng trnh a ch 140. Cho nhn xt ca bn v kt qu nhn c.

Thc tp Vi x l - 26

2. Lnh dch v quay : Mc ch : S dng thnh tho cc lnh dch v quay ca vi x l 8086 x l trn cc bit ca d liu. SHL / SHR / SAR / ROL / ROR / RCL / RCR th,1
SHL / SHR / SAR / ROL / ROR / RCL / RCR th,CL

Bc 1 : Bc 2 :

Np chng trnh SHIFT.COD t a vo b nh. Dng lnh U xem li chng trnh np vo.
-u100 112 1070:0100 1070:0102 1070:0104 1070:0106 1070:0108 1070:010A 1070:010C 1070:010E 1070:0110 1070:0112 -u120 128 1070:0120 1070:0122 1070:0124 1070:0126 1070:0128 -u140 156 1070:0140 1070:0143 1070:0145 1070:0147 1070:0149 1070:014B 1070:014C 1070:014E 1070:0150 1070:0152 1070:0154 1070:0156 B0AB D0E8 D0E8 D0E8 D0E8 D0E8 D0E8 D0E8 D0E8 CC B0AB B104 D2E8 D2E8 CC B8FF00 D1C0 D1C0 D1C0 D1C0 F9 D1D0 D1D0 D1D0 D1D0 D1D0 CC MOV SHR SHR SHR SHR SHR SHR SHR SHR INT MOV MOV SHR SHR INT MOV ROL ROL ROL ROL STC RCL RCL RCL RCL RCL INT AL,AB AL,1 AL,1 AL,1 AL,1 AL,1 AL,1 AL,1 AL,1 3 AL,AB CL,04 AL,CL AL,CL 3
CF

SAR CF SHR 0 CF

SHL / SAL 0 CF

ROR

CF

ROL

AX,00FF AX,1 AX,1 AX,1 AX,1 AX,1 AX,1 AX,1 AX,1 AX,1 3

RCR

CF

CF

RCL

Bc 3 : Bc 4 : Bc 5 :

Dng lnh T ca debug chy chng trnh a ch 100. Ch quan st s thay i gi tr ca thanh ghi AL v c nh CF. Thc hin li tng t bc 3 nhng vi chng trnh a ch 120. So snh kt qu nhn c vi kt qu khi chy on chng trnh a ch 100. Cho bit nhn xt ca bn v cch s dng hai lnh SHR AL,1 v SHR AL,CL. Chy tng bc chng trnh a ch 140 v cho bit nhn xt ca bn v cch s dng hai lnh ROL v RCL.

3. Lm thm : Bn c th dng debug np v chy th chng trnh SHR.COM trn a v cho bit chng trnh lm g. Bn cn phi sa chng trnh nh th no xut c ni dung nh c a ch offset 102 ra mn hnh ?

Thc tp Vi x l - 27

VChk

Lnh 8086 - Chuyn iu khin

Mc ch : - Hiu cc lnh trong nhm lnh chuyn iu khin ca 8086. : - c trc phn l thuyt v nhm lnh chuyn iu khin ca vi x l 8086. Chun b Phng tin : - My vi tnh c h iu hnh MSDOS, win95 hoc win98. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Lnh nhy trc tip khng iu kin gn (trong mt on): Mc ch : S dng thnh tho lnh nhy trc tip khng iu kin gn JMP ca vi x l 8086. JMP a_ch_gn Bc 1 : Dng lnh A ca debug nhp cc lnh sau vo cc a ch yu cu. -a 100 jmp 2800 -a 2800 jmp 1000 -a 1000 jmp 100 Bc 2 : Dng lnh T ca debug chy t a ch 100. Ch quan st xem ni dung ca thanh ghi no thay i sau mi ln thi hnh lnh nhy. Bc 3 : By gi ta th tnh ton mt cht trn a ch ni n ca lnh nhy hiu r hn cch nhy trc tip khng iu kin gn ca vi x l 8086. Trc tin bn dng lnh U ca debug xem li phn m my ca lnh nhy.
M my ca lnh JMP 2 byte di (26FD)

-u100 103 1077:0100 E9FD26 1077:0103 D4BA


a ch lnh k

JMP AAM

2800 BA

2 byte di (E7FD)

-u2800 2803 1077:2800 E9FDE7 1077:2803 8CCD


a ch lnh k

JMP MOV

1000 BP,CS

Bc 4 :

a ch ni n c tnh theo cng thc sau :


a ch ni n = a ch lnh k + di

Bn kim ta li xem c ng nh vy khng i vi hai lnh nhy trn. Nh vy theo bn, cc lnh nhy trn l nhy trc tip hay nhy tng i (so vi v tr thi hnh lnh) ?

Thc tp Vi x l - 28

2. Lnh nhy trc tip khng iu kin xa (t on ny sang on khc): Mc ch : S dng thnh tho lnh nhy trc tip khng iu kin xa JMP ca vi x l 8086. JMP a_ch_xa Bc 1 : Dng lnh A ca debug nhp cc lnh sau vo cc a ch yu cu. -a 2000:100 jmp 3000:0000 -a 3000:0000 jmp 4192:1000 -a 4192:1000 jmp 2000:100 Bc 2 : Dng lnh T ca debug chy t a ch 2000:100. Ch quan st xem ni dung ca thanh ghi no thay i sau mi ln thi hnh lnh nhy. Tc ng ca lnh nhy trong phn ny c g khc tc ng ca lnh nhy trong phn 1 ? a ch gn khc a ch xa ch no. 3. Lnh nhy c iu kin: Mc ch : S dng thnh tho cc lnh nhy c iu kin ca vi x l 8086.
Jcond _di_8bit

Bc 1 : Bc 2 :

Np chng trnh JCOND.COD t a vo b nh. Dng lnh U xem li chng trnh np vo.
-u100 104 1078:0100 1078:0102 1078:0104 -u120 126 1078:0120 1078:0122 1078:0124 1078:0126 -u140 142 1078:0140 1078:0142 3C01 751C EBFA 3C02 751C FEC8 EBD8 FEC8 EBBC CMP JNZ JMP CMP JNZ DEC JMP DEC JMP AL,01 0120 0100 AL,02 0140 AL 0100 AL 0100

;nhy nu khc n 120

;nhy nu khc n 140

Bc 3 : Bc 4 :

Dng lnh R ca debug np gi tr 4 vo thanh ghi AX (tc AL=4). Dng lnh T ca debug chy tng lnh v ghi cc ni dung cn thit vo bng sau :
Ln chy 1 2 3 4 5 6 7 8 9 10 11 12 IP ZF Ln chy 13 14 15 16 17 18 19 20 21 22 23 24 IP ZF

Thc tp Vi x l - 29

Bc 6 : Bc 7 :

Vi bng a ch trn bn c th dng cc mi tn v li qu trnh thi hnh ca on chng trnh trn. T bn c c ci nhn tng qut hn v s thi hnh mt chng trnh c cc lnh chuyn iu khin trong . Bn cng c th tnh a ch ni n theo cng thc phn 1. Tuy nhin trong trng hp ny di l s ch c 8 bit nn phi thc hin m rng du thnh s 16 bit trc khi cng vi a ch lnh k. Khong nhy ca cc lnh nhy c iu kin ch t -128 n +127 a ch so vi v tr thi hnh lnh. iu ny bn c th kim tra bng cch th nh vo lnh sau y xem c c hay khng : -a 100 jz 181 jc 182

4. Lnh lp vng: Mc ch : S dng thnh tho lnh lp vng LOOP ca vi x l 8086. LOOP Bc 1 : Dng lnh A ca debug nh vo on chng trnh sau :
-a 100 1078:0100 mov 1078:0103 loop 1078:0105 int 1078:0106 cx,5 103 3

_di_8bit

Bc 2 : Bc 3 : Bc 4 :

Dng lnh T ca debug chy tng lnh v quan st s thay i trn ni dung cc thanh ghi. Cho bit lnh LOOP tc ng ln thanh ghi no v iu kin kt thc lp l g ? Np chng trnh tnh tng 10 s nguyn t 1 n 8 trn a c tn l LOOP1.COD vo b nh. Dng lnh A ca debug xem li ni dung chng trnh :
-u100 10d 1078:0100 1078:0103 1078:0105 1078:0107 1078:0109 1078:010B 1078:010D B91000 B000 B401 00E0 FEC4 E2FA CC MOV MOV MOV ADD INC LOOP INT CX,0008 AL,00 AH,01 AL,AH AH 0107 3

Bc 5 : Bc 6 :
-u100 10d 1078:0100 1078:0103 1078:0106 1078:0108 1078:010A 1078:010B 1078:010D -d120 127 1078:0120

Dng lnh T hoc G chy chng trnh trn v quan st ni dung thanh ghi AH, AL v CX. Lnh LOOP c dng rt nhiu trong vn x l dy hoc bng nh trong chng trnh LOOP2.COD trn a. Bn hy np vo, xem v chy th.
BB2001 B90800 B000 0207 43 E2FB CC MOV BX,0120 MOV CX,0008 MOV AL,00 ADD AL,[BX] INC BX LOOP 0108 INT 3 ........

01 02 03 04 05 06 07 08
Dy d liu

a ch u dy

Thc tp Vi x l - 30

5. Lnh gi chng trnh con v lnh tr v: Mc ch : S dng thnh tho lnh gi chng trnh con CALL v lnh tr v RET ca vi x l 8086. CALL a ch
RET

Bc 1 : Bc 2 :

Np chng trnh CALL.COD t a vo b nh. Dng lnh U ca debug xem li ni dung chng trnh trong b nh :
-u100 106 1078:0100 1078:0103 1078:0106 -u120 124 1078:0120 1078:0122 1078:0124 -u140 142 1078:0140 1078:0142 E81D00 E83A00 CC B002 B303 C3 F6E3 C3 CALL CALL INT MOV MOV RET MUL RET 0120 0140 3 AL,02 BL,03 ;gi chng trnh con 1 ;gi chng trnh con 2 ; Chng trnh con 1 ; tr v chng trnh chnh BL ; Chng trnh con 2 ; tr v chng trnh chnh

Bc 3 :

Dng lnh T ca debug chy tng bc t a ch 100. Quan st cc thanh ghi CS, IP, SS, SP v dng lnh D ca debug xem ni dung ca stack (a ch trong SS:SP) sau mi ln thi hnh lnh CALL hay lnh RET.

Thc tp Vi x l - 31

VChuo

Lnh 8086 - X l chui

Mc ch : - Hiu cc lnh trong nhm lnh x l chui ca 8086. : - c trc phn l thuyt v nhm lnh x l chui ca vi x l 8086. Chun b Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. Thi gian : 2 tit.

1. Lnh chp chui : Mc ch : S dng thnh tho lnh chuyn b nh MOVS ca vi x l 8086 chp cc chui d liu t ch ny sang ch khc trong b nh. Dng kt hp vi tip u REP MOVSB lnh REP chuyn nhiu byte lin tip trong b nh.
REP MOVSW

Bc 1 : Bc 2 :

Bc 3 : Bc 4 : Bc 5 :

Bc 6 : Bc 7 :

Dng lnh E ca debug a chui k t vo b nh c a ch 180 nh sau : -e180 "I don't want to miss a thing !" m s k t ca chui trn v dng lnh A ca debug nh on chng trnh sau vo b nh c offset 100. mov ax,3000 mov es,ax S k t ca chui nhp vo a ch 180 mov si,180 mov di,3200 MOVSB mov cx,???? cld [ES:DI][DS:SI] Xa c DF x l tng a ch SISI+1 rep movsb DIDI+1 int 3 Dng lnh D ca debug xem li ni dung b nh ti a ch DS:180 v ti a ch 3000:3200. Dng lnh T hoc P ca debug chy tng lnh ca on chng trnh trn. Theo di kt qu thay i trn cc thanh ghi v c. Lnh REP MOVSB trong chng trnh c dng chuyn (hay chp) c chui vn bn nhp vo t vng b nh c a ch bt u l DS:180 n vng b nh c a ch bt u l 3000:3200. V vy nn sau khi chy xong chng trnh trn, bn c th kim tra li kt qu thi hnh bng cch dng lnh D ca debug xem li ni dung b nh a ch 3000:3200. Bn c th sa li chng trnh chp chui trn sang vng b nh c a ch bt u l 4000:1400 hay khng ? Bn c th sa li chng trnh chp mt chui do bn nhp vo hay khng ?

Thc tp Vi x l - 32

2. Lnh tm k t trong chui : Mc ch : S dng thnh tho lnh tm k t trong chui SCAS ca vi x l 8086 xc nh v tr xut hin ca k t trong chui (nu c). Dng kt hp vi tip u lnh REPNE d tm t u n cui chui. REPNE SCASB
REPNE SCASW

Bc 1 : Bc 2 :

Np chng trnh SCASB.COD t a vo b nh. Dng lnh U ca debug kim tra li on chng trnh tm k t a ch 120.
-u120 12c 1078:0120 1078:0123 1078:0125 1078:0128 1078:0129 1078:012A 1078:012B 1078:012C BF8001 B061 B91E00 FC F2 AE 4F CC MOV MOV MOV CLD REPNZ SCASB DEC INT DI,0180 AL,61 CX,001E ;tm k t 'a

DI 3

SCASB AL - [ES:DI] DIDI+1

Bc 3 : Bc 4 :

Dng lnh P ca debug chy cc lnh v theo di cc thanh ghi CX, DI v c ZF ngay sau khi thi hnh xong lnh REPNE SCASB. Dng lnh D ca debug xem li v tr xut hin ca k t trong chui bt u t a ch 180.

3. X l dy : Mc ch : S dng thnh tho lnh np chui LODS v ct chui STOS ca vi x l 8086 x l mt dy, bng hay vng d liu trong b nh. Dng kt hp vi lnh lp vng LOOP lm nhiu ln. LODSB / STOSB
LODSW / STOSW

Bc 1 : Bc 2 :

Np chng trnh LODSTO.COD t a vo b nh. Dng lnh U v D ca debug kim tra li ni dung chng trnh trong b nh.
BE2001 89F7 B91000 FC AC FEC0 AA E2FA CC MOV MOV MOV CLD LODSB INC STOSB LOOP INT SI,0120 DI,SI CX,0010

-u100 10f 1078:0100 1078:0103 1078:0105 1078:0108 1078:0109 1078:010A 1078:010C 1078:010D 1078:010F -d120 12f
1078:0120

u vng lp

LODSB AL[DS:SI] SISI+1 STOSB

AL 0109 3

Thn vng lp [ES:DI]AL DIDI+1

30 31 32 33 34 35 36 37-38 39 41 42 43 44 45 46
a ch u dy

0123456789ABCDEF

Bc 3 : Bc 4 :

Dng lnh T ca debug chy chng trnh t a ch 100. Quan st s thay i ca cc thanh ghi AL, SI, DI, CX. Kim tra li kt qu xem cc phn t ca dy c c tng ln 1 hay khng. Dng lnh D ca debug xem ni dung ca dy a ch 120.

4. Lm thm : Cho dy s 1 byte bt u a ch b nh 180 gm c 8 phn t. Dng lnh x l chui tnh tng ca dy trn. Kt qu ct trong thanh ghi AH.

Thc tp Vi x l - 33

VHNg1

Hp ng 86 - Dch v lin kt

Mc ch : - Dch chng trnh hp ng. : - c trc phn l thuyt v hp ng MASM. Chun b Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. - Chng trnh son tho vn bn (EDIT, NC, TURBO, ...). - To th mc lm vic \MASM cha phn mm hp ng MASM 5.0 . Thi gian : 2 tit.

1. To chng trnh thc thi .EXE : Mc ch : S dng thnh tho cc chng trnh : - MASM.EXE dch chng trnh ngun ra chng trnh m i tng.
MASM <tn chng trnh ngun>;

- LINK.EXE lin kt cc chng trnh m i tng v cc th vin (nu c) thnh ra chng trnh thc thi c thuc tnh .EXE.
LINK <tn tp tin i tng>;

Bc 1 :

Dng chng trnh MASM.EXE dch mt chng trnh ngun CHAO.ASM c sn trn a nh sau :
Chng trnh dch MASM.EXE Tn chng trnh ngun chao.asm

C:\MASM>masm chao;
Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.

49252 Bytes symbol space free


S li cnh bo

0 Warning Errors 0 Severe Errors

S li c php nghim trng

Bc 2 :

Khi bn gi nh trn c ngha l yu cu MASM dch chng trnh ngun CHAO.ASM ra thnh tp tin m i tng c tn l CHAO.OBJ. Vi tp tin m i tng CHAO.OBJ, bn tip tc dng chng trnh LINK.EXE lin kt thnh ra chng trnh thc thi nh sau :
Chng trnh dch LINK.EXE Tn tp tin m i tng chao.obj

C:\MASM>link chao;
Microsoft (R) Segmented-Executable Linker Version 5.10 Copyright (C) Microsoft Corp 1984-1990. All rights reserved.

Bc 3 :

Khi bn gi nh trn c ngha l yu cu LINK lin kt tp tin m i tng CHAO.OBJ ra thnh chng trnh thc thi CHAO.EXE. Bn c th kim tra li bng lnh DIR ca DOS nh sau :

Thc tp Vi x l - 34 C:\MASM>dir chao Volume in drive C is WINDOWS Volume Serial Number is 0C5A-1508 Directory of C:\Masm CHAO CHAO CHAO OBJ ASM EXE 3 file(s) 0 dir(s) 06-25-99 3:31p CHAO.OBJ 06-25-99 3:24p CHAO.ASM 06-25-99 3:31p CHAO.EXE 1,026 bytes 1,998,938,112 bytes free 171 298 557

Bc 4:

Nh vy chng trnh thc thi CHAO.EXE c to ra trn a v bn ch cn nh tn ca chng trnh thc thi ny chy nh sau :
C:\MASM>chao Chao ban ! Ban da dich thanh cong chuong trinh .EXE .

Bc 5:

By gi bn xem th trn a ca bn cn chng trnh ngun no khc (thuc tnh .ASM) hay khng ? Hy th dch chng ra chng trnh thc thi v chy xem th no. Nu bn khng bit bt u t u th hy dng lnh DIR *.ASM /W th xem. Nu trong khi bn thc hin li qu trnh trn m c chng trnh no chy sai hoc c rc trn mn hnh th bn ng s. Bn c tip tc cho n ht v ghi nh li tn ca cc chng trnh chy sai dng phn tip theo. Chc bn thnh cng.

2. To chng trnh thc thi .COM : Mc ch : S dng thnh tho cc chng trnh : - MASM.EXE dch chng trnh ngun ra chng trnh m i tng.
MASM <tn chng trnh ngun>;

- LINK.EXE lin kt cc chng trnh m i tng v cc th vin (nu c) thnh ra chng trnh thc thi c thuc tnh .COM.
LINK /t <tn tp tin i tng>;

Bc 1 :

Dng chng trnh MASM.EXE dch mt chng trnh ngun CHAO2.ASM c sn trn a nh sau : C:\MASM>masm chao2;
Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Corp 1981, 1988. All rights reserved.

49252 Bytes symbol space free 0 Warning Errors 0 Severe Errors

Thc tp Vi x l - 35

Bc 2 :

Khi bn gi nh trn c ngha l yu cu MASM dch chng trnh ngun CHAO2.ASM ra thnh tp tin m i tng c tn l CHAO2.OBJ. Vi tp tin m i tng CHAO.OBJ, bn tip tc dng chng trnh LINK.EXE lin kt thnh ra chng trnh thc thi nh sau :
Yu cu to ra tp tin .COM

C:\MASM>link /t chao2; Microsoft (R) Segmented-Executable Linker Version 5.10 Copyright (C) Microsoft Corp 1984-1990. All rights reserved. LINK : warning L4045: name of output file is 'chao2.com'
Dng thng bo to ra tp tin .COM

Bc 3 :

Khi bn gi nh trn c ngha l yu cu LINK lin kt tp tin m i tng CHAO2.OBJ ra thnh chng trnh thc thi CHAO2.COM. Bn c th kim tra li bng lnh DIR ca DOS nh sau :
C:\MASM>dir chao2 Volume in drive C is WINDOWS Volume Serial Number is 0C5A-1508 Directory of C:\Masm CHAO2 CHAO2 CHAO2 ASM COM OBJ 3 file(s) 0 dir(s) 07-03-99 9:29a CHAO2.ASM 07-03-99 9:29a CHAO2.COM 07-03-99 9:29a CHAO2.OBJ 610 bytes 2,030,878,720 bytes free 350 72 188

Bc 4:

Nh vy chng trnh thc thi CHAO2.COM c to ra trn a v bn ch cn nh tn ca chng trnh thc thi ny chy nh sau :
C:\MASM>chao2 Chao ban ! Ban da dich thanh cong chuong trinh .COM .

Bc 5:

Trong bc ny bn tm xem c bao nhiu chng trnh ngun trn a c th dch ra dng tp tin .COM.

Thc tp Vi x l - 36

3. Xem ni dung chng trnh ngun v ni dung chng trnh thc thi : Mc ch : Tm hiu xem MASM dch mt chng trnh ngun ra dng .COM nh th no. Bc 1 : Dng mt trong cc chng trnh son tho vn bn nh EDIT, NC, TURBO . . . np chng trnh ngun CHAO2.ASM vo C:\MASM>edit chao2.asm Bc 2 : Bc 3 : Bc 4 : Ch xem cch khai bo dng chng trnh, cc khai bo chng trnh con, cc khai bo d liu. By gi bn thot ra khi chng trnh son tho vn bn v dng debug np chng trnh thc thi CHAO2.COM vo. Dng lnh R,U v D ca debug xem li ni dung ca chng trnh trong b nh.

Ni dung cc thanh ghi on c cng gi tr

-r AX=0000 BX=0000 DS=1092 ES=1092 1092:0100 BA1001 -u100 10e 1092:0100 BA1001 1092:0103 B409 1092:0105 CD21 1092:0107 B408 1092:0109 CD21 1092:010B B8004C 1092:010E CD21 -d110 147 1092:0110 43 68 1092:0120 61 20 1092:0130 67 20 1092:0140 43 4F

CX=0048 DX=0000 SP=FFFE SS=1092 CS=1092 IP=0100 MOV DX,0110 MOV MOV INT MOV INT MOV INT 61 64 63 4D 6F 69 68 20 20 63 75 2E 62 68 6F 0D DX,0110 AH,09 21 AH,08 21 AX,4C00 21 61 20 6E 0A

BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC

6E-20 21 20 42 61 6E 20 64 74-68 61 6E 68 20 63 6F 6E 67-20 74 72 69 6E 68 20 2E 24

Chao ban ! Ban d a dich thanh con g chuong trinh . COM ...$

Bc 5 : Bc 6 : Bc 7 : Bc 8 :

So snh vi chng trnh ngun CHAO2.ASM, bn c nhn xt g v cc lnh s dng trong chng trnh ngun v trong chng trnh thc thi. Bn c th dng lnh P hoc G chy chng trnh trn. Bn c th lm li cc bc trn vi nhng chng trnh m bn dch phn 2. Bn lm li qu trnh trn vi mt chng trnh thc thi .EXE (CHAO.EXE chng hn) v ch quan st gi tr ban u ca cc thanh ghi on xem c g khc so vi trng hp chng trnh thc thi .COM khng.

Thc tp Vi x l - 37

VHNg2

Hp ng 86 - Cc v d lp trnh

Mc ch : - Vit cc chng trnh v d bng hp ng. : - c trc cc v d hp ng MASM chng 3, phn c ghi tp tin. Chun b Phng tin : - My vi tnh c DOS prompt. - Chng trnh DEBUG.EXE ca h iu hnh. - Chng trnh son tho vn bn (EDIT, NC, TURBO, ...). - Phn mm hp ng MASM 5.0 tr ln. Thi gian : 2 tit.

1. To chng trnh ngun dch ra tp tin thc thi .COM : Mc ch : Vit c mt chng trnh ngun hp ng 86 dch ra tp tin thc thi dng .COM Bc 1 : Dng chng trnh son tho vn bn np tp tin MAUCOM.ASM trn a vo. Bc 2 : B sung cc phn cn thiu hon tt chng trnh c ghi tp tin trong phn v d ca chng 3. Bc 3 : Sau khi hon tt chng trnh ngun, ct ln a thnh tp tin TAPTIN2.ASM v thot ra khi chng trnh son tho vn bn. Bc 4 : Dng chng trnh MASM dch chng trnh ngun ra thnh tp tin m i tng. Nu trong qu trnh dch c li, bn phi sa li chng trnh ngun v dch li c ngha l bn phi lm li t bc 1 n bc 4 cho n khi no ht li c php nghim trng th mi chuyn sang bc lin kt. Bc 5 : Dng chng trnh LINK lin kt chng trnh m i tng ra thnh tp tin thc thi dng .COM (xem bi VHNg1). Bc 6 : Sau khi dch v lin kt thnh cng, bn c th chy th chng trnh thc thi (chy trc tip hay bng debug) v theo di kt qu. 2. To chng trnh ngun dch ra tp tin thc thi .EXE : Mc ch : Vit c mt chng trnh ngun hp ng 86 dch ra tp tin thc thi dng .EXE Bc 1 : Dng chng trnh son tho vn bn np tp tin MAUEXE.ASM trn a vo. Bc 2 : B sung cc phn cn thiu hon tt chng trnh c ghi tp tin trong phn v d ca chng 3. Trong trng hp ny bn phi sa i ni dung chng trnh trong v d cho ph hp vi dng chng trnh ngun .EXE. Bc 3 : Sau khi hon tt chng trnh ngun, ct ln a thnh tp tin TAPTIN.ASM v thot ra khi chng trnh son tho vn bn. Bc 4 : Dng chng trnh MASM dch chng trnh ngun ra thnh tp tin m i tng. Nu trong qu trnh dch c li, bn phi sa li chng trnh ngun v dch li c ngha l bn phi lm li t bc 1 n bc 4 cho n khi no ht li c php nghim trng th mi chuyn sang bc lin kt. Bc 5 : Dng chng trnh LINK lin kt chng trnh m i tng ra thnh tp tin thc thi dng .EXE (xem bi VHNg1). Bc 6 : Sau khi dch v lin kt thnh cng, bn c th chy th chng trnh thc thi (chy trc tip hay bng debug) v theo di kt qu.

Thc tp Vi x l - 38

3. Mu chng trnh ngun dng .COM :


Tn chng trnh

title Chuong trinh . . . code segment para public 'code' assume cs:code,ds:code,ss:code org 100h start: jmp main ; vung khai bao du lieu Thm vo cc ch th khai bo d liu ; bien db 0 ; ; vung khai bao chuong trinh con ; ctc1 proc Thm vo cc chng trnh con (nu c) ret ctc1 endp ; . . . ; Chng trnh chnh ; Chuong trinh chinh main proc call ctc1 ; ; ket thuc thi hanh chuong trinh chinh va tro ve DOS mov ax,4c00h int 21h main endp ; ket thuc khai bao doan code code ends ; ket thuc khai bao chuong trinh end start
V tr bt u thi hnh chng trnh Ch th kt thc chng trnh ngun

Thc tp Vi x l - 39

4. Mu chng trnh ngun dng .EXE :


Title chuong trinh . . . . . ; doan du lieu data segment para public 'data' ; cac chi thi khai bao du lieu (hang, bien, cau truc,mau tin) bien db 0 ; data ends Thm vo cc ch th khai bo d liu ; ; doan chong stack segment stack 'stack' db 100h DUP (0) stack ends ; ; doan chuong trinh code segment para public 'code' assume cs:code,ds:data,ss:stack ; Khai bao cac chuong trinh con ctc1 proc ret Thm vo cc chng trnh con (nu c) ctc1 endp ; . . . ; ; Chuong trinh chinh Khi ng thanh ghi on DS main proc mov ax,data mov ds,ax call ctc1 ; ; ket thuc thi hanh chuong trinh va tro ve DOS mov ax,4c00h int 21h main endp ; dong doan code code ends ; ket thuc khai bao chuong trinh end main
V tr bt u thi hnh chng trnh Ch th kt thc chng trnh ngun

Thc tp Vi x l - 40

Tm tt cc lnh 8086 / 8088


1. Nhm lnh chuyn d liu :
MOV MOV MOV MOV MOV PUSH PUSH POP POP XCHG XCHG IN IN OUT OUT XLAT LEA LDS LES LAHF SAHF PUSHF POPF ADD ADD ADD ADC ADC ADC INC AAA DAA SUB SUB SUB SBB SBB SBB DEC NEG CMP CMP CMP AAS DAS MUL IMUL AAM DIV IDIV AAD CBW CWD NOT reg,reg mem,reg reg,mem reg16,segreg segreg,reg16 reg16 mem16 reg16 mem16 reg,reg accum,reg16 accum,immed8 accum,DX immed8,accum DX,accum reg16,mem reg16,mem32 reg16,mem32 MOV MOV MOV MOV PUSH POP XCHG XCHG reg,immed mem,immed mem16,segreg segreg,mem16 segreg segreg mem,reg reg,mem

2. Nhm lnh s hc :
reg,reg mem,reg reg,mem reg,reg mem,reg reg,mem reg ADD ADD ADD ADC ADC ADC INC reg,immed mem,immed accum,immed reg,immed mem,immed accum,immed mem

reg,reg mem,reg reg,mem reg,reg mem,reg reg,mem reg reg reg,reg mem,reg reg,mem

SUB SUB SUB SBB SBB SBB DEC NEG CMP CMP CMP

reg,immed mem,immed accum,immed reg,immed mem,immed accum,immed mem mem reg,immed mem,immed accum,immed

reg reg reg reg

MUL IMUL DIV IDIV

mem mem mem mem

reg

NOT

mem

Thc tp Vi x l - 41 3. Nhm lnh lun l :


SHL SHL SHR SHR SAR SAR ROL ROL ROR ROR RCL RCL RCR RCR AND AND AND TEST TEST TEST OR OR OR XOR XOR XOR reg,1 reg,CL reg,1 reg,CL reg,1 reg,CL reg,1 reg,CL reg,1 reg,CL reg,1 reg,CL reg,1 reg,CL reg,reg mem,reg reg,mem reg,reg mem,reg reg,mem reg,reg mem,reg reg,mem reg,reg mem,reg reg,mem SHL SHL SHR SHR SAR SAR ROL ROL ROR ROR RCL RCL RCR RCR AND AND AND TEST TEST TEST OR OR OR XOR XOR XOR mem,1 mem,CL mem,1 mem,CL mem,1 mem,CL mem,1 mem,CL mem,1 mem,CL mem,1 mem,CL mem,1 mem,CL reg,immed mem,immed accum,immed reg,immed mem,immed accum,immed reg,immed mem,immed accum,immed reg,immed mem,immed accum,immed

5. X l chui :
REP REPE/REPZ REPNE/REPNZ MOVSB / MOVSW CMPSB / CMPSW SCASB / SCASW LODSB / LODSW STOSB / STOSW

lnh x l chui lnh x l chui lnh x l chui

6. Chuyn iu khin :
CALL CALL CALL JMP JMP JMP RET RET nearlabel farlabel reg16 shortlabel nearlabel farlabel immed8 CALL CALL JMP JMP JMP RETF RETF mem16 mem32 mem16 mem32 reg16 immed8

Thc tp Vi x l - 42
Jcond shortlabel

Jcond
JE/JZ JL/JNGE JLE/JNG JB/JNAE/JC JBE/JNA JP/JPE JO JS JNE/JNZ JNL/JGE JNLE/JG JNB/JAE/JNC JNBE/JA JNP/JPO JNO JNS

Gii thch
Nhy nu bng/khng Nhy nu nh hn/khng ln hn hoc bng Nhy nu nh hn hoc bng /khng ln hn Nhy nu di /khng trn hoc bng/nh Nhy nu di hoc bng /khng trn Nhy nu kim tra / kim tra chn Nhy nu trn Nhy nu du Nhy nu khng bng/khc khng Nhy nu khng nh hn/ln hn hoc bng Nhy nu khng nh hn hoc bng /ln hn Nhy nu khng di /trn hoc bng/khng nh Nhy nu khng di hoc bng /trn Nhy nu khng kim tra / kim tra l Nhy nu khng trn Nhy nu khng du

iu kin
ZF = 1 (SF xor OF) = 1 ((SF xor OF) or ZF) = 1 CF = 1 (CF or ZF) = 1 PF = 1 OF = 1 SF = 1 ZF = 0 (SF xor OF) = 0 ((SF xor OF) or ZF) = 0 CF = 0 (CF or ZF) = 0 PF = 0 OF = 0 SF = 0

LOOP shortlabel LOOPE/LOOPZ shortlabel LOOPNE/LOOPNZ shortlabel JCXZ shortlabel INT immed8 INT 3 INTO IRET

7. iu khin b x l :
CLC STC CMC NOP CLD STD CLI STI HLT WAIT LOCK ESC ESC

lnh
immed,reg immed,mem

-Cc ch vit tt dng trong cc nhm lnh :


reg : thanh ghi tng qut. reg16 : thanh ghi 16 bit. segreg : thanh ghi on. accum : thanh ghi b tch ly AX hoc AL. mem : b nh (a ch hiu dng). mem16 : b nh 2 byte lin tip (a ch hiu dng). mem32 : b nh 4 byte lin tip (a ch hiu dng). immed : s tc thi. immed8 : s tc thi 8 bit. shortlabel : nhn ngn (-128 byte +127 byte). nearlabel : nhn trong on (2 byte offset). farlabel : nhn ngoi on (4 byte : 2 byte segment v 2 byte offset).

You might also like