You are on page 1of 33

BI TP THC HNH LP TRNH H THNG

TRNG I HC BCH KHOA NNG KHOA CNG NGH THNG TIN

Gio trnh thc hnh

LP TRNH H THNG

Trang 1

BI TP THC HNH LP TRNH H THNG

Gii Thiu
Thc hnh Lp trnh H Thng gip cho sinh vin vit c chng trnh bng ngn ng Assembly trn my tnh PC. Gio trnh ny ch hng dn sinh vin nhng k nng rt c bn trong vic lp trnh bng Assembly nh: S dng trnh bin dch hp ng trong mi trng Windows, bin dch, sa li v lin kt, kho st tp lnh, cc ngt n gin ca H iu hnh DOS. vn dng v nng cao c k nng lp trnh h thng bng Hp ng, i hi sinh vin phi n lc rt nhiu trong vic t hc, c thm ti liu b sung nhng kin thc nht nh v phn cng my tnh cng nh nguyn ly vn hnh ca cc thit b ngoi vi c lin quan, nh: My in, h vi iu khin, cng vo ra ni tip/ song song .... Thi lng ca mn hc c gii hn, nn cc bi thc hnh c t chc thnh cc ch sau y: Bi 1: Xut nhp k t. Bi 2: Cu trc r nhnh Vng lp Bi 3: X l k t - K s Bi 4: X l tp tin Bi 5: Nhp xut s BIN-HEX-DEC thc hnh t hiu qu cao, sinh vin cn phi chun b cho mi bi trc khi vo bt u thc hnh. Mun t c iu ny, sinh vin phi tun th phng php hc nh sau: Trc khi vo thc hnh: Nm c mc tiu ca bi thc hnh. Xem li cc kin thc cn chun b c nu ra cho mi bi thc hnh. Nm c cc ni dung cn phi lm trong bui thc hnh. Tuyt i tun th thc hnh theo th t ca ni dung thc hnh. Hon thnh cc vn v tr li c cc cu hi t ra trong phn trc mi chuyn sang thc hnh phn sau. Quan st hin tng, nhng thay i, xem xt nh gi kt qu sau mi thao tc thc hnh. Lp li cc thao tc thc hnh nhiu ln, tm cch gii quyt khc sau khi thc hnh theo yu cu cho mi vn . So snh, nhn xt cc cch gii quyt khc nhau. i chiu tng mc tiu ca bi thc hnh vi nhng g thc hnh c. Nu mc tiu no cha thnh tho th phi tm cch lp li thc hnh nm c mc tiu vng chc hn. Sau khi hon thnh tt c cc bi thc hnh trn, hc vin s kim tra vi cc kin thc c trch lc ra t cc bi thc hnh trn.

Trong khi thc hnh:

Sau khi thc hnh: -

Trang 2

BI TP THC HNH LP TRNH H THNG

Bi 1: Xut Nhp K T
1. MC TIU
S dng c cc ngt mm vit c chng trnh: in k t - chui k t ln mn hnh v nhp k t - chui k t t bn phm. Hiu c cch qun l k t v k s trong Hp ng. Kt qu bi thc hnh 1. Cc hm 01h, 02h, 06h, 07h, 08h, 09h, 0Ah ca ngt 21h. Bng m ASCII.

2. KIN THC CN CHUN B

3.NI DUNG THC HNH 3.1. In 1 k t ra nm hnh


Chng trnh s dng hm 2, ngt 21h in k t B ra mn hnh c vit nh sau. Hy son tho lu li thnh tp tin ngun c tn l BAI_2A.ASM.
CSEG start: SEGMENT ASSUME CS: CSEG mov ah, 02h ; Hm 2, in 1 k t ra mn hnh mov dl, B ; DL cha k t cn in int 21h ; gi ngt thc hin hm mov ah, 08h ; Hm 08h, ngt 21h int 21h mov ah, 4Ch ; Thot khi chng trnh int 21h ENDS END start

CSEG

Dch sa li (nu c) v chy chng trnh xem kt qu in ra mn hnh. Cc dng lnh no thc hin chc nng in k t B ra mn hnh? Cc dng lnh khc dng lm g? Sa li chng trnh trn in ra mn hnh k t D. Chy chng trnh kim chng kt qu. Vit chng trnh in ra mn hnh s 9 Vit chng trnh in ra mn hnh s 89 Hai dng lnh 6 v 7 c chc nng g trong chng trnh? Nu khng c 2 dng lnh y th chng trnh thc hin nh th no? (Th xa b 2 dng lnh y ri chy chng trnh, quan st kt qu pht hin chc nng)

Trang 3

BI TP THC HNH LP TRNH H THNG

3.2. In chui k t ra mn hnh


Mun in 1 chui k t ra mn hnh th s dng hm 9, ngt 21h nh chng trnh sau y, hy son tho v t tn tp tin ngun l BAI_2B.ASM. Dch, sa li (nu c) v chy chng trnh xem kt qu trn mn hnh. Vit li chng trnh trn in ra mn hnh chui Truong Dai Hoc Bach Khoa. Sa khai bo bin chuoi c dng nh sau: chuoi DB Truong Dai Hoc, 10, 13, Bach Khoa$ Dch v chy chng trnh xem kt qu. Trong khai bo bin chuoi, 2 gi tr 10, 13 c ngha g trong vic in chui ra mn hnh. Sa li chng trnh in ra mn hnh s 2006.

DSEG SEGMENT chuoi DB Chao sinh vien nganh Cong Nghe Thong Tin.$ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: mov ax, DSEG mov ds, ax mov ah, 09h ; Hm 9, in chui k t ra mn hnh lea dx, chuoi ; dl cha k t cn in int 21h ; gi ngt thc hin mov ah, 08h int 21h mov ah, 4Ch ; thot khi chng trnh int 21h CSEG ENDS END start

3.3. Nhn 1 k t t bn phm


Chng trnh sau y (trang 3) s s dng hm 01, ngt 21h nhn 1 k t t bn phm. Son tho v t tn tp tin ngun l BAI_2C.ASM. Dch, sa li (nu c) v chy chng trnh, g phm cn nhp. Quan st kt qu trn mn hnh. K t nhp c lu tr u v c CPU qun l dng thc g? (Dng Emu8086 kho st) Sa chng trnh c k t bng hm 7, ngt 21h. Chy chng trnh v so snh hot ng gia hm 1 v hm 7.

Trang 4

BI TP THC HNH LP TRNH H THNG

DSEG SEGMENT tbao DB Hay go vao 1 phim: $ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start:mov ax, DSEG mov ds, ax mov ah, 09h ; In cu thng bo ra mn hnh lea dx, tbao int 21h mov ah, 01h ; Ham 1, nhan ky tu tu ban phim int 21h ; goi ngat thuc hien ham mov ah, 4Ch ; tro ve he dieu hanh int 21h CSEG ENDS END start

3.4. Nhn 1 chui k t t bn phm


Chng trnh s dng hm 0Ah, ngt 21h nhp 1 chui k t t bn phm vit nh sau. Sinh vin son tho thnh tp tin chng trnh c tn l BAI_2D.ASM.

DSEG SEGMENT max DB 30 len DB 0 chuoi DB 30 dup(?) tbao DB Hay go vao 1 chuoi: $ DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG start: mov ax, DSEG mov ds, ax mov ah, 09h ; In cu thng bo ra mn hnh lea dx, tbao int 21h mov ah, 0Ah ; Ham 0Ah, nhap chuoi ky tu tu ban phim

Trang 5

BI TP THC HNH LP TRNH H THNG lea dx, MAX int 21h mov ah, 4Ch int 21h CSEG ENDS END start ; dx chua dia chi vung dem ban phim ; goi ngat thuc hien ham ; tro ve he dieu hanh

Dch, sa li v thi hnh chng trnh trong tng trng hp sau y: 1. Nhp t bn phm chui t hn 30 k t. 2. Nhp t bn phm chui nhiu hn 30 k t.

Gi tr bin len trong mi trng hp l bao nhiu? Ti sao khng th nhp nhiu hn 30 k t? Chui k t nhp vo c lu tr bin no? Sa chng trnh c th nhp nhiu hn 30 k t (60 k t chng hn). Tng qut, kh nng ti a ca hm 0Ah, ngt 21h l nhn chui bao nhiu k t?

4. BI TP NGH
4.1. Vit chng trnh s dng hm 7, ngt 21h nhn 1 k t t bn phm, dng 1 bin lu tr k t nhn c (do sinh vin t t tn bin), sau s dng hm 2, ngt 21h in ra mn hnh k t nhn c ang lu trong bin y. Chng trnh phi c cc cu thng bo nhp v xut. V d: Hay go 1 phim: B Ky tu nhan duoc la: B 4.2. Sa li chng trnh 4.1 sao cho khng cn s dng bin lu tr k t m kt qu chy chng trnh vn khng thay i. 4.3. Vit chng trnh nhn 1 k t t bn phm, sau in ra mn hnh k t k trc v k sau ca k t va nhp V d: Hay go 1 phim: B Ky tu ke truoc : A Ky tu ke sau : C 4.4. Vit chng trnh cho php nhp t bn phm tn ca 1 ngi, sao in ra mn hnh chui c dng nh sau: Xin chao <tn__nhp> V d: Khi chy chng trnh, nhp vo l: Trinh Cong Duy Chui in ra mn hnh s l: Xin chao Trinh Cong Duy

Trang 6

BI TP THC HNH LP TRNH H THNG

Bi 3: Cu trc r nhnh Vng lp


1. MC TIU
- Hiu cch so snh hai s trong hp ng - Hiu cch thay i th t thc hin cc lnh - Bit cch s dng cc lnh so snh, nhy v lp

2. TM TT L THUYT 2.1. Lnh so snh


C php: CMP Tri, Phi ; C Tri Phi Nu Tri > Phi Tri - Phi > 0 : CF = 0 v ZF = 0 Nu Tri < Phi Tri - Phi < 0 : CF = 1 v ZF = 0 Nu Tri = Phi Tri - Phi = 0 : CF = 0 v ZF = 1 Tri, Phi: Immed, Reg, Mem Bn cht ca lnh CMP l lnh SUB ch, Ngun (thc hin php tnh ch Ngun) nhng kt qu ca php tnh khng c lu vo ch nh trong lnh SUB m tnh cht ca kt qu c th hin thng qua c V d: so snh hai s nguyn dng MOV AH, 1 ; AH 1 MOV AL, 2 ; AL 2 CMP AH, AL ; CF 1, ZF 0 v AH < AL Sau khi thc hin cc lnh trn, c Carry bt (CF=1), bo hiu rng AH < AL

2.2. So snh nh phn


C php: TEST Tri, Phi ; C Tri and Phi Nu Tri and Phi = 0 th ZF = 1, ngc li th ZF = 0 Bn cht ca lnh TEST l lnh AND ch, Ngun nhng kt qu ca php tnh khng c lu vo ch nh trong lnh AND m nh hng ln c. V d: kim tra hai bit cui cng ca AL TEST AL, 3 ; 3h = 11b Nu c Zero bt (ZF=1), c ngha l c hai bit 0 v 1 ca AL u bng 0.

2.3. Lnh nhy khng iu kin


C php: JMP <target>; Nhy n a ch <Target> C cc trng hp sau: JMP SHORT <nhn> ; (short jump). Kiu ny ch nhy trong phm vi t 128 n +127 byte so vi v tr hin ti. V d: JMP SHORT Calculate Trang 7

BI TP THC HNH LP TRNH H THNG

JMP <nhn> ; (near jump). Kiu ny nhy ty trong phm vi segment. V d: JMP Calculate JMP FAR PTR <nhn> ; (far jump). Kiu ny nhy n bt k ch no. V d: JMP FAR PTR Calculate JMP <con tr 2 byte> ; (near indirect jump). Khi thc hin, thanh ghi PC s c gn bng gi tr lu ti a ch ny. C th kt hp dng vi nh v ch s. V d: myPointer DW Prepare, Calculate, Check, Output ... MOV BX, 2 ; ch s trong mng con tr SHL BX, 1 ; nhn i JMP myPointer[BX] ... Prepare: ; cng vic 0 ... Calculate: ; cng vic 1 ... Check: ; cng vic 2 ni cn nhy n ... Output: ; cng vic 3 ... JMP <con tr 4 byte> ; (far indirect jump). Tng t trng hp trn, nhng con tr gm c segment v offset. Ch khc khai bo con tr JMP <thanh ghi 2 byte> ; (indirect jump via regs). Nhy n a ch lu trong thanh ghi AX. V d: MOV AX, offset Calculate ... JMP AX ; PC AX

2.4. Lnh nhy c iu kin


C php: J<iukin> <Label> Cc lnh nhy c iu kin bt u bng ch J sau l cc ch ci biu th iu kin (v d JGE: Jump if Greater than or Equal, nhy nu ln hn hay bng), tip sau l mt tn nhn. iu kin lnh nhy xem xt khi thi hnh l gi tr cc c c to ra t lnh CMP hay TEST. Khi s dng lnh nhy c iu kin sau khi thc hin php so snh,

Trang 8

BI TP THC HNH LP TRNH H THNG

phi c bit lu ton hng trong php so snh l s c du (signed) hay khng c du (unsigned) la chn lnh cho ph hp. V d: MOV AH,AL ; AL hin bng 128 CMP AH,1 JGE Greater ; AH > 1 nhng khng nhy ???? ... Greater: V d: nu AL l s nguyn khng du th on chng trnh trn phi sa li nh sau: MOV AH,AL CMP AH,1 JAE Greater ... Greater: Mt s lnh nhy c iu kin thng dng: Lnh JB JNAE JAE JNB JBE JNA JA JNBE JE JZ JNE JNZ Ngha Nhy nu nh hn (Jump if Below) Nhy nu khng ln hn hoc bng Nhy nu ln hn hoc bng (Jump if Above or Equal) Nhy nu khng nh hn Nhy nu nh hn hoc bng (Jump if Below or Equal) Nhy nu khng ln hn Nhy nu ln hn (Jump if Above) Nhy nu khng nh hn hoc bng Nhy nu bng (Jump if Equal) Nhy nu bng (Jump if Zero) Nhy nu khng bng (Jump if Not Equal) Nhy nu khng bng (Jump if Not Zero) iu Kin CF = 1 CF = 0 CF = 1 v ZF = 1 CF = 0 v ZF = 0 ZF = 1 ZF = 0

2.5. Lnh lp
Bng cch dng cc lnh nhy c th to ra vng lp. Tuy nhin, vit chng trnh tin li v ngn gn, c th dng thm cc lnh lp nh LOOP, LOOPZ, C php: LOOP <Label> t ng gim CX mt n v, sau kim tra xem CX c bng 0, nu khng bng th nhy n nhn <Label> C php: LOOPZ <Label> t ng gim CX mt n v, sau kim tra xem CX c bng 0 hoc c ZF c bt khng (ZF=1), nu c hai iu ny khng xy ra th nhy n nhn <Label> Trang 9

BI TP THC HNH LP TRNH H THNG

V d: Nhp mng A gm 10 k t MOV SI, 0 ; ch s mng MOV CX, 10 ; s ln lp LAP: MOV AH, 1 ; nhp k t INT 21H MOV A[SI], AL INC SI

3. NI DUNG THC HNH


3.1. Cu trc R nhnh - Chng trnh sau y nhn 1 k t. Nu l k t HOA th in ra mn hnh "Ky tu HOA". Ngc li in ra cu "Ky tu thuong". (M ASCII ca k t HOA <= 'Z'). Son tho v lu vi tn BAI_3A.ASM
DSEG SEGMENT tbao1 DB "Ky tu HOA.$" tbao2 DB "Ky tu thuong.$" DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, start:mov ax, DSEG mov ds, ax mov ah, 01h int 21h cmp al, 'Z' ; ja nhan ; mov ah, 09 ; lea dx, tbao1 ; int 21h jmp exit nhan: mov ah, 09 ; lea dx, tbao2 int 21h exit:mov ah, 7 int 21h mov ah, 4Ch ; int 21h CSEG ENDS END start DS: DSEG

so snh vi 'Z' Nu ln hn => k t thng Nu khng ln hn => k t HOA in "Ky tu HOA"

in "Ky tu thuong"

tr v h iu hnh

Dch v chy CT nhng trng hp khc nhau xem kt qu trn mn hnh. V lu iu khin ca chng trnh.

Trang 10

BI TP THC HNH LP TRNH H THNG

Ti sao cn phi c lnh JMP EXIT? Nu khng c lnh y th chng trnh thc hin nh th no? Chy chng trnh kim chng. Thay lnh JA NHAN bng lnh JNA NHAN. Sa chng trnh sao cho kt qu khng thay i. Khi k t nhp vo khng phi l ch ci th kt qu in ra mn hnh l g? Ti sao? Xem chng trnh in ra mn hnh ln lt cc k t t A n Z c vit nh sau. Hy son tho v t tn tp tin l BAI_3B.ASM. Dch v chy chng trnh xem kt qu trn mn hnh. Vng lp trong chng trnh bao gm on lnh no? Vit theo kiu while do hay repeat ... until hay for? V lu chng trnh. Sa chng trnh in ra mn hnh ln lt cc k t t 'Z' n 'A'. Tip tc sa chng trnh sao cho gia cc k t c 1 khong trng (Z Y ....B A) Dng lnh LOOP vit li chng trnh BAI_3B.ASM theo cu trc vng lp for.

3.2 Cu trc vng lp -

CSEG SEGMENT ASSUME CS: CSEG start:mov dl, 'A' ; nhan:mov ah, 02h ; int 21h inc dl ; cmp dl, 'Z' ; jna nhan ; mov ah, 08h ; int 21h mov ah, 4Ch int 21h CSEG ENDS END start

DL cha k t u tin 'A' in k t trong DL ra mn hnh DL cha k t k cn in So snh DL vi 'Z' Nu <= 'Z' th tip tc in Nu > 'Z' th thot (khng in tip)

4. BI TP KIM TRA:
4.1 Vit chng trnh cho nhp 1 k t t mn hnh v xut cu thng bo tng ng sau: - Nu k t nhp l S hay s th in ra Good morning! - Nu k t nhp l T hay t th in ra Good Afternoon! - Nu k t nhp l C hay c th in ra Good everning! 4.2 Vit li chng trnh BAI_3A.ASM sao cho chng trnh c th phn bit c 3 loi k t nhp t bn phm: "K t HOA", "k t thng" v "k t khc".

Trang 11

BI TP THC HNH LP TRNH H THNG

4.3 Vit chng trnh nhp t bn phm 1 k t thng. Sau in ra mn hnh ln lt cc k t t k t nhn c n 'z' sao cho gia cc k t c 1 khong trng. 4.4 Khng dng hm 0Ah/21h, hy dng lnh lp vit chng trnh nhp vo 1 chui k t. Sau khi nhp xong m xem chui c bao nhiu k t. In ra mn hnh chui nhn c v s k t c trong chui. V d: S = "Hello world !" ==> S k t trong chui l 13. 4.5 Vit chng trnh cho php nhp vo mt chui bt k. Sau : - i tt c k t thng thnh k t hoa v in ra mn hnh. - i tt c k t hoa thnh k t thng v in ra mn hnh. V d: S = weLcOme To AssEmblY In ra: welcome to assembly - WELCOME TO ASSEMBLY 4.6 Nhp vo 2 chui s, i 2 chui thnh s, sau cng hai s, i ra chui v xut chui tng. V d: S1 = "123" => N1 = 123 S2 = "456" => N2 = 456 N = N1 + N2 = 123 + 456 = 579 => S = "579" (xut S ra mn hnh) 4.7 Nhp 2 s nguyn dng A, B. Tnh A/B, A*B (khng dng lnh DIV, MUL) v in ra mn hnh kt qu. V d: A=18, B=3 Tnh A/B: 18 - 3 - 3 - 3 - 3 - 3 - 3 = 0, vy A/B = 6 (tng tr B cho n khi A = 0). Tnh A*B = 18 + 18 + 18 = 54

Trang 12

BI TP THC HNH LP TRNH H THNG

Bi 4: Nhp xut s dng BIN HEX - DEC


1. Mc Tiu:
Nhp t bn phm s dng nh phn, thp lc phn v thp phn In ln mn hnh cc s dng nh phn, thp lc phn v thp phn Kt qu ca cc bi thc hnh trc Cc lnh x l chui.

2. Kin thc cn chun b:

3. Ni dung thc hnh:


3.1. Nhp xut nh phn: Chng trnh mu sau y cho php nhp s nh phn 8 bit, sau in ra mn hnh s nh phn nhn c (BAI_6A.ASM): MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap so nhi phan 8 bit: $" msg2 DB "So nhi phan da nhap la: $" xdong DB 10, 13, $ sobin DB ? ; lu tr s nh phn nhn c DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 CALL bin_in MOV sobin, BL inchuoi xdong inchuoi msg2 MOV BL, sobin CALL bin_out MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khi chng trnh INT 21h bin_in PROC MOV BL, 0 ; Xa BL ; nhp 8 bit th dng MOV CX, 8 Trang 13 inchuoi

BI TP THC HNH LP TRNH H THNG

nhap:MOV AH, 01h INT 21h CMP AL, 0Dh JZ exit SHL BL, 1 SUB AL, 30h ADD BL, AL LOOP nhap exit:RET ENDP bin_in bin_out PROC MOV CX, 8 xuat:MOV DL, 0 SHL BL, 1 RCL DL, 1 ADD DL, 30h MOV AH, 02h INT 21h LOOP xuat RET bin_out ENDP CSEG ENDS END begin -

; Hm nhp k t ; ; ; ; ; nu l phm Enter th thi nhp khng phi Enter th i sang bit Dch tri BL 1 bit K s - 30h = s Chuyn bit t AL sang BL lu tr

; ; ; ; ;

Xut 8 bit trong BL ra M.Hnh CF cha MSB, xut ra mn hnh a CF vo LSB ca DL S + 30h = K s In ra mn hnh

Son tho, Bin dch v cho chy file BAI_6A.ASM kim tra kt qu. Sa chng trnh trn thnh BAI_6A1.ASM sao cho c th nhp v xut s nh phn 16 bit. Vit li chng trnh trn nhp 1 k t t bn phm, sau in ra mn hnh m ASCII ca k t nhn c dng nh phn.

3.2. Nhp xut thp lc phn: Chng trnh sau y cho php nhp 1 k t t bn phm, sau in ra mn hnh m ASCII ca k t nhn c dng thp lc phn Son tho, Bin dch v cho chy file BAI_6B.ASM kim tra kt qu. Vit li chng trnh trn nhp 2 s thp lc phn 8 bit A v B, sau in ra mn hnh kt A + B dng thp lc phn.

Trang 14

BI TP THC HNH LP TRNH H THNG

MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap 1 ky tu: $" msg2 DB "Ma ASCII o dang Hex: $" xdong DB 10, 13, $ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 MOV AH, 01h INT 21h MOV kytu, AL ; ct k t nhn c inchuoi xdong inchuoi msg2 MOV BH, kytu ; K t cn in CALL hex_out MOV AH, 02 ; in ra k t h sau s Hex MOV DL, h INT 21h MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khi chng trnh INT 21h hex_out PROC

inchuoi

MOV CX, 4 xuat:PUSH CX MOV CL, 4 MOV DL, BH SHR DL, CL CMP DL, 09h JA kytu ADD DL, 30h JMP inra kytu:ADD DL, 37h inra:MOV AH, 02h INT 21h SHL BX, CL POP CX LOOP xuat
Trang 15

; i thnh k s 0-9 ; i thnh k t A-F ; In ra mn hnh k t i ; Quay tri BX 4 bit

BI TP THC HNH LP TRNH H THNG

RET hex_out
ENDP CSEG ENDS END begin 3.3. Xut s thp phn nguyn dng: Chng trnh sau y cho php nhp 1 k t t bn phm, sau in ra mn hnh m ASCII ca k t nhn c dng thp phn. - Son tho, Bin dch v cho chy file BAI_6C.ASM kim tra kt qu. c th tc DEC_OUT tm hiu gii thut xut gi tr trong AX ra mn hnh dng thp phn. T a ra gii thut nhp s thp phn t bn phm. Vit li chng trnh trn nhp 2 s thp phn A v B c 2 ch s, sau in ra mn hnh kt qu A + B dng thp phn. Nhp xut s thp phn M nh th no?

inchuoi

MACRO chuoi MOV AH, 9h LEA DX, chuoi INT 21h ENDM DSEG SEGMENT msg1 DB "Hay nhap 1 ky tu: $" msg2 DB "Ma ASCII o dang Dec: $" xdong DB 10, 13, $ kytu DB ? DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG begin: MOV AX, DSEG MOV DS, AX inchuoi msg1 MOV AH, 01h INT 21h MOV kytu, AL ; ct k t nhn c inchuoi xdong inchuoi msg2 XOR AX, AX MOV AL, kytu ; K t cn in CALL dec_out MOV AH, 01 INT 21h MOV AH, 4Ch ; thoat khi chng trnh Trang 16

BI TP THC HNH LP TRNH H THNG

INT 21h dec_out PROC

XOR CX,CX ; CX m s ch s thp phn MOV BX,10 chia10: XOR DX,DX DIV BX ; DX:AXBX => AX: Thng, DX: s d PUSH DX ; Ct s d vo stack INC CX CMP AX, 0 JNZ chia10 ; nu AX>0 th chia tip cho 10 inra: MOV AH,2 ; in ra mn hnh POP DX ; ly ch s thp phn

Trang 17

BI TP THC HNH LP TRNH H THNG

dec_out

ADD DL,30h INT 21h LOOP inra RET


ENDP

; i thnh k s

CSEG ENDS END begin

4. Bi tp kim tra:
4.1. Vit chng trnh nhp 2 s nh phn 16 bit A v B. Sau in ra mn hnh cc kt qu dng nh phn: A + B, A B, A and B, A or B. V d: Nhp s nh phn A: 10101010 Nhp s nh phn B: 01010101 A + B = 11111111 A and B = 00000000 A B = 01010101 A or B = 11111111

4.2. Vit chng trnh nhp 1 k t t bn phm, sau in ra mn hnh m ASCII ca k t nhn c dng thp lc phn, thp phn v nh phn. V d: Nhp 1 k t: A M ASCII dng Hex: 41h M ASCII dng Dec: 65 M ASCII dng Bin: 01000001b 4.3. Vit li chng trnh bi 4.1 nhng 2 s A v B c nhp theo dng thp lc phn. Cc kt qu c in ra mn hnh dng nh phn. 4.4. Vit li chng trnh bi 4.1 nhng 2 s A v B c nhp theo dng thp phn. In cc kt qu dng thp phn: A + B, A B. 4.5. Vit chng trnh tnh giai tha n! Vi n l s nguyn dng nhp t bn phm. In kt qu ra mn hnh dng thp phn. Cho bit, kh nng ca 8086 tnh c n ln nht l bao nhiu?

Trang 18

BI TP THC HNH LP TRNH H THNG

Bi 5: X L Tp Tin
1. Mc Tiu:
Vit c cc chng trnh x l tp tin nh to tp tin, xa tp tin, ghi tp tin, c ni dung ca tp tin.

2. Kin thc cn chun b:


Kt qu ca cc bi th nghim 1, 2, 3 v 4. Cc hm 3dh, 3ch, 3eh, 3fh, 40h, 41h, 42h v 56h ca INT 21h x l tp tin. Cc hm 01, 02h, 06h, 08h, 09h, 0Ah ca INT 21h v cc lnh ca CPU 8086

3. Ni dung thc hnh:


3.1. To tp tin mi: Son tho nh on chng trnh mu pha di v lu vi tn l BAI_5A.ASM. DSEG SEGMENT tenfile db "d:\tt_asm\data.txt",0 thefile dw ? DSEG ENDS CSEG SEGMENT ASSUME cs:cseg, ds:dseg begin: mov ax, dseg mov ds, ax mov ah, 3ch ; tao tap tin moi lea dx, tenfile mov cx, 0 ; thuoc tinh tap tin int 21h mov thefile, ax ; cat the file mov ah, 3eh ; dong tap tin mov bx, thefile int 21h mov ah, 4ch ; thoat ve Dos int 21h CSEG ENDS END begin Bin dch v cho chy file BAI_5A.ASM kim tra v xem kt qu. Gi : Th mc TT_ASM phi c sn trong a. bit chng trnh chy ng hay sai, vo th mc TT_ASM xem c tp tin Data.txt hay khng, nu c th OK. Ti sao th file phi c khai bo nh dng thefile DW ?

Trang 19

BI TP THC HNH LP TRNH H THNG

Ti sao trong trng hp ny, chng ta khng phi dng hm 08h ca int 21h ng trc hm 4ch ca int 21h ? Ti sao phi ct th file. Nu chng ta khng cn ng file th chng ta c cn ct th file hay khng ? Trong on chng trnh mu trn c cn thit phi ng tp tin hay khng ? C th b bin thefile trong on chng trnh mu trn khng ?. Khi chng ta phi dng cc lnh g thay th iu . Nu c thay i, hy bin dch v cho chy chng trnh kim chng li kt qu. Hy sa i file BAI_5A.ASM v lu vi tn BAI_5A1.ASM c th thc hin c yu cu sau: to mt tp tin mi, tn tp tin c nhp t bn phm. Gi : dng hm 0ah ca int 21h nhp vo tn file, ch cui chui cha tn file phi c zero, nhng khi dng hm 0ah th chng ta khng th no nhp zero vo cui chui c, nu ta nhp k t 0 vo th l m ascii ca k t 0 ch khng phi l zero (con s 0). Do , thc hin c iu ny chng ta hy dng gii thut a 0 v cui chui nh sau:

xor cx, cx ; dua zero ve cuoi chuoi mov cl, len ;khai bao bien de dung ham 0ah cua int 21h dang lea bx, tenfile; max db 250 ; so ky tu toi da duoc nhap mov dl,0 ; len db ? ; chieu dai chuoi da nhap mov [bx], dl ; tenfile db 250 dup(?); chua noi dung duoc nhap

3.2. Ghi ni dung ca bin string1 vo mt tp tin mi c tn trong th mc v a vi ng dn nh sau: D:\TT_ASM\DATA.TXT. Son tho nh on chng trnh mu pha di v lu vi tn l BAI_5B.ASM. Bin dch v cho chy file BAI_5B.ASM kim tra v xem kt qu. (vo D:\TT_ASM xem tp tin DATA.TXT c trong hay cha v c ni dung hay cha ?, nu c l OK.) Xem xt on chng trnh mu, hy a ra gii thut ghi ni dung ca vng d liu vo mt tp tin va to. Lnh len db $ - string1 c dng lm g ?. Lnh XOR CX, CX c ngha g? Sau khi thc hin xong lnh ny, thanh ghi CX c gi tr bng bao nhiu? C th thay th n bng lnh no khc c khng ? Ti sao dng lnh MOV CL, LEN m khng dng MOV CX, LEN hay MOV CH, LEN ? Khi dng lnh MOV CX, LEN th cn phi thay i khai bo bin len nh th no ? nu khng thay i th s c vn g xy ra hay khng ? Hy thay i, bin dch v chy chng trnh kim chng li kt qu so vi chng trnh mu. Hy sa i file BAI_5B.ASM v lu vi tn BAI_5B1.ASM c th thc hin c yu cu sau: nhp t mt chui k t bt k, sau lu vo tp tin c tn l d:\tt_asm\solieu.txt. Gi : dng hm 0Ah ca int 21h nhp vo mt chui k t, sau p dng ton b gii thut ca BAI_5B.ASM. Hy sa i file BAI_5B1.ASM v lu vi tn BAI_5B2.ASM c th thc hin c yu cu sau: to tn tp tin mi, tn tp tin c nhp t bn phm.

Trang 20

BI TP THC HNH LP TRNH H THNG

Sau nhp vo mt chui k t bt k v lu chui k t nhp vo tp tin va to. Gi : xem li BAI_5A1.ASM ly li gii thut nhp vo tn file v a zero (con s 0) v cui chui i vi trng hp tn file c nhp t bn phm v cc vn cn li th xem li file BAI_5B1.ASM. Hy sa i file BAI_5B2.ASM v lu vi tn BAI_5B3.ASM c th thc hin c yu cu sau: to tn tp tin mi, tn tp tin c nhp t bn phm. Sau nhp vo mt chui k t thng, sau i hoa k t u ca mi t v lu chui k t thay i vo tp tin va to. Gi : xem li cc bi tp lm trong bi 5 x l k t v cc file BAI_5B2.ASM.

dseg segment string1 db len db $ tenfile db thefile dw dseg ends

"Chao em co gai Lam Hong" string1 "d:\tt_asm\data.txt",0 ?

cseg segment assume cs:cseg, ds:dseg begin: mov ax, dseg mov ds, ax mov ah, 3ch ; tao tap tin moi lea dx, tenfile mov cx, 0 ; tap tin co thuoc tinh binh thuong int 21h mov thefile, ax ; cat the file mov ah, 40h ; ghi file mov bx, thefile xor cx, cx mov cl, len lea dx, string1 int 21h mov ah, 3eh ; dong tap tin mov bx, thefile int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin 3.3. c ni dung ca tp tin ( tn ti trn a v c ni dung). Hin th ni dung ca tp tin ln mn hnh. Son tho nh on chng trnh mu pha di v lu vi tn l BAI_5C.ASM. Bin dch v cho chy file BAI_5C.ASM kim tra v xem kt qu.

Trang 21

BI TP THC HNH LP TRNH H THNG

Xem li on chng trnh mu, hy a ra gii thut c ni dung ca tp tin v hin th ni dung ra mn hnh. Hy th thay i thuc tnh tp tin trong lnh mov al, 2 ln lt thnh cc gi tr khc nh 0, 1, 3 hoc 4. Bin dch v cho chy chng trnh xem kt qu. C nhn xt g v cc gi tr ny ?. Th file c vai tr nh th no trong x l tp tin. Nu s byte cn c (gi tr cha trong thanh ghi cx) ln hn kch thc tht s ca tp tin th c gy ra li g hay khng ?. Sau khi c ni dung ca tp tin vo vng m bng hm 3fh ca INT 21h, thanh ghi ax s c gi tr thay i hay khng v n cha (gi tr) g ?. Lm sao xc nh c khi no c xong ni dung thnh tp tin ?. Hy th a ra hng gii quyt. Hy sa i file BAI_5C.ASM v lu vi tn BAI_5C1.ASM c th thc hin c yu cu sau: c ni dung ca mt tp tin v hin th ni dung ln mn hnh. Tn tp tin c nhp t bn phm. Gi : s dng li gii thut nhp tn file t bn phm v a zero v cui chui v cc bi c lin quan trong bi 6. Hy sa i file BAI_5C1.ASM v lu vi tn BAI_5C2.ASM c th thc hin c yu cu sau: copy ni dung ca mt tp tin bt k sau paste sang mt v tr khc. Gi : cc gii thut nhp tn file t bn phm th c sn, gii thut copy v paste nh sau: trc ht phi m tp tin c bng hm 3dh, chng ta nh ngha sn ng dn cha tn file cn m, c ni dung ca tp tin vo vng m bng hm 3fh, nh ct th file; to tn tp tin mi bng hm 3ch, chng ta nh ngha sn ng dn cha tn file cn to, nh ct th file; ghi ni dung ca vng m vo tp tin mi va to bng hm 40h; ng hai tp tin li bng hm 3eh, tt c cc hm ny u ca int 21h. Hy sa i file BAI_5C2.ASM v lu vi tn BAI_5C3.ASM c th thc hin c yu cu sau: copy ni dung ca mt tp tin bt k sau paste sang mt v tr khc. Tn tp tin c copy v tp tin sau khi paste u nhp t bn phm. Gi : hon ton tng t nh BAI_5C2.ASM, nhng chng ta cn tn dng li gii thut nhp tn file t bn phm t BAI_5B3.ASM. Hy sa i file BAI_5C3.ASM v lu vi tn BAI_5C4.ASM c th thc hin c yu cu sau: save as ni dung ca mt tp tin. Tn tp tin c copy v save as u nhp t bn phm. Gi : bi ny ging tng t nh BAI_5C3.ASM. Hy sa i file BAI_5C3.ASM v lu vi tn BAI_5C4.ASM c th thc hin c yu cu sau: c ni dung ca tp tin v sau nhp mt chui k t bt k v ghi tip theo sau ni dung ca tp tin va m. Tn tp tin nhp t bn phm. Gi : xem li BAI_5C1.ASM, BAI_5B1.ASM, BAI_5B2.ASM v hm 42h ca int 21h (di v tr con tr tp tin). Hy sa i file BAI_5C4.ASM v lu vi tn BAI_5C5.ASM c th thc hin c yu cu sau: m ha ni dung ca tp tin. Tn tp tin cn m ha c nhp t bn phm. Gi : nhp vo tn file cn m ha, m mt file c bng hm 3dh; c ni dung ca tp tin vo vng m bng hm 3fh; m ha vng m c c bng mt trong cc php ton cng, tr, nhn, chia, and, or, not , va m ha va lu ni dung tr li vng m; di v tr con tr tp tin v u tp tin bng hm 42h; sau ghi ni dung ca vng m tr li tp tin

Trang 22

BI TP THC HNH LP TRNH H THNG

ban u thng qua th file ca n. Tt c cc hm s dng y u ca int 21h. Hy sa i file BAI_5C5.ASM v lu vi tn BAI_5C6.ASM c th thc hin c yu cu sau: gii m ni dung ca tp tin m ha. Tn tp tin cn gii m c nhp t bn phm. Gi : gii m l trng hp ngc li ca m ha, nu m ha theo phng thc no th gii m phi lm ngc li phng thc m ho .

dseg segment tenfile db "d:\tt_asm\data.txt",0 thefile dw ? buffer db 251 dup ('$') dseg ends cseg segment assume cs:cseg, ds:dseg begin: mov ax, dseg mov ds, ax mov ah, 3dh ; mo tap tin da co lea dx, tenfile mov al, 2 ; thuoc tinh tap tin int 21h mov thefile, ax ; cat the file mov ah, 3fh ; doc noi dung file vao vung dem mov bx, thefile lea dx, buffer mov cx, 250 ; so byte can doc tu file da mo int 21h mov ah, 3eh ; dong tap tin mov bx, thefile int 21h mov ah, 09h ; in noi dung cua file ra man hinh lea dx, buffer int 21h mov ah,08h ; dung man hinh de xem ket qua int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin 3.4. Xa tp tin. Son tho nh on chng trnh mu pha di v lu vi tn l BAI_5D.ASM. Bin dch v cho chy file BAI_5D.ASM kim tra v xem kt qu. Hy sa i file BAI_5D.ASM v lu vi tn BAI_5D1.ASM c th thc hin c yu cu sau: xa tn mt tp tin. Tn tp tin cn c nhp t bn phm. Gi : xem li cc bi trc ly gii thut nhp tn file t bn phm.

Trang 23

BI TP THC HNH LP TRNH H THNG

dseg segment tenfile db "d:\tt_asm\data.txt",0 dseg ends cseg segment assume cs:cseg, ds:dseg begin: mov ax, dseg mov ds, ax mov ah,41h ; xoa tap tin da co lea dx, tenfile int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin 3.5. i tn tp tin c thnh mt tp tin mi trong cng th mc Son tho nh on chng trnh mu pha di v lu vi tn l BAI_5E.ASM. Bin dch v cho chy file BAI_5E.ASM kim tra v xem kt qu. Hy to mt th mc con c tn l baitap nm trong th mc tt_asm. Sa i lnh oldfile db d:\tt_asm\data.txt,0 v newfile db tt_asm\solieu.txt,0 li thnh oldfile db d:\tt_asm\solieu.txt,0 v newfile db tt_asm\baitap\data.txt,0. Bin dch li v cho chy chng trnh xem xt kt qu. C nhn xt g v kt qu nhn c. Hy sa i file BAI_5E.ASM v lu vi tn BAI_5E1.ASM c th thc hin c yu cu sau: i tn mt tp tin. Tn tp tin c v mi c nhp t bn phm. Gi : xem li cc bi tp trc ly gii thut nhp tn file t bn
phm

dseg segment oldfile db "d:\tt_asm\data.txt",0 newfile db "d:\tt_asm\solieu.txt",0 dseg ends cseg segment assume cs:cseg, ds:dseg, es: dseg begin: mov ax, dseg mov ds, ax mov es, ax mov ah,56h ; rename/remove tn file cu thanh moi lea dx, oldfile lea di, newfile int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin Trang 24

BI TP THC HNH LP TRNH H THNG

4. Bi tp kim tra:
4.1. Vit chng trnh s dng hm 41h/ INT 21h xa tp tin trn a. Tn tp tin cn xa c nhp t bn phm khi thc hin chng trnh. 4.2. Vit chng trnh nhp 1 chui t bn phm, sau ghp chui nhn c vo cui ca ni dung tp tin c trn a. Tn tp tin nhp t bn phm khi chy chng trnh. 4.3. Vit chng trnh nhp 1 chui t bn phm, sau chn chui nhn c vo u ca ni dung tp tin c trn a. Tn tp tin nhp t bn phm khi chy chng trnh. 4.4. Vit chng trnh ghp ni dung 2 tp tin c sn trn a thnh 1 tp tin mi. Tn ca cc tp tin c nhp t bn phm khi chy chng trnh. 4.5. Vit chng trnh c ni dung tp tin trn a, sau i tt c k t HOA thnh k t thng v lu li vo tp tin . Tn tp tin phi c nhp t bn phm

Trang 25

BI TP THC HNH LP TRNH H THNG

Bi 6: X L Chui K T
1. Mc Tiu:
Vit c cc chng trnh x l chui k t bng cc lnh x l chui Bng m ASCII. Kt qu ca cc bi th nghim trc Cc hm 01h, 02h, 06h, 08h, 09h, 0Ah ca INT 21h v cc lnh x l chui nh MOVSB/W, SCASB/W, STOSB/W, CMPSB/W.

2. Kin thc cn chun b:

3. Ni dung thc hnh:


3.1. So snh hai chui oldpass v newpass. Nu hai chui ny ging nhau th kt lun ging nhau v ngc li. Son tho nh on chng trnh trn v lu vi tn l BAI_6A.ASM. Bin dch v cho chy file BAI_6A.ASM kim tra v xem kt qu. Trong macro writeln, cc lnh no c chc nng xung dng sau khi in xong chui k t. Mc ch ca vic khai bo LOCAL bien1 trong macro l g? Hy cho bit a ch ca DS v ES c ging nhau hay khng? iu ny c th hin qua cc cu lnh no trong on chng trnh mu? Ti sao ngi ta khng khai bo DS v ES trn cc phn on khc nhau ? Tin t REPE trong on chng trnh mu trn c ngha nh th no? Ta c th thay i lnh REPE CMPSB thnh mt nhm lnh khc c khng? Nu c hy thay i n, bin dch v chy chng trnh kim chng. Th thay i ni dung oldpass v newpass sao cho chng ging nhau. Bin dch v chy chng trnh xem kt qu, sau hy gii thch c ch lm vic ca on lnh t lnh CLD cho n lnh REPE CMPSB. Gi s, ngi ta mun thay th lnh cmpsb thnh lnh cmpsw, cc bn c cn sa i cc lnh no trong chng trnh hay khng ? Ti sao ?. Bin dch v chy chng trnh kim chng. Lnh jmp thoat trong on chng trnh trn c nhim v g ?. Th b lnh jmp thoat sau bin dch v chy chng trnh xem kt qu. Hy sa i file BAI_6A.ASM v lu vi tn BAI_6A1.ASM c th thc hin c nhim v sau: nhp vo mt chui k t c ti a 10 k t, trong lc nhp ch hin th ra k t *. Khi nhp 10 k t hoc khi gp phm ESC th s in ra cc k t nhp ra mn hnh. Gi : dng hm 08h, 02h hoc 09h ca int 21h, lnh loop, cmp, Cn phi khai bo dng m lu cc k t nhp.

Trang 26

BI TP THC HNH LP TRNH H THNG

writeln macro bien1 LOCAL bien1 mov ah,09 lea dx, bien1 int 21h mov ah,02h mov dl, 0ah int 21h mov dl, 0dh int 21h endm dseg segment tbao db "Chuong tring so sanh oldpass va newpass$" oldpass db "0123456789" newpass db "1234567890" tbao1 db "Haichuoi giong nhau $" tbao2 db "Haichuoi khong giong nhau $" dseg ends cseg segment assume cs:cseg, ds:dseg, es: dseg begin: mov ax, dseg mov ds, ax mov es, ax writeln tbao cld ; chonchieu xu ly chuoi mov cx, 10 ; so ky tu/so byte can so sanh lea si, oldpass; (DS:SI)--> dia chi cua chuoi nguon lea di, newpass; (ES:DI)--> dia chi cua chuoi dich repe cmpsb ; so sanh tung ky tu/byte je intb1 writeln tbao2 jmp thoat intb1: writeln tbao2 thoat: mov ah,08h int 21h mov ah, 4ch int 21h cseg ends end begin Hy sa i file BAI_6A1.ASM, kt hp vi file BAI_6A.ASM (chng trnh mu) v lu vi tn BAI_6A2.ASM c th thc hin c nhim v sau: nhp vo mt chui k t c 10 k t, trong lc nhp ch hin th ra k t *. Sau so snh vi mt oldpass c ni dung ty (nhng ch c di l 10 k t m do

Trang 27

BI TP THC HNH LP TRNH H THNG

chng ta gn trc, v d nh oldpass db 1234567890). Nu 10 k t va nhp c ni dung ging oldpass th in ra cu thng bo Ban da nhap dung roi v thot, ngc li th in ra cu thng bo Ban da nhap sai roi va vui long nhap lai v quay tr li nhp cho n khi no ng mi thot. Gi : dng hm 08h, 02h, 09h ca int 21h v cc lnh loop, cmpsb,. 3.2. Di chuyn 33 bytes t ni dung ca string1 sang string2, sau in ni dung ca string2 ra mn hnh. Son tho nh on chng trnh mu v lu vi tn l BAI_6B.ASM. Bin dch v cho chy file BAI_6B.ASM kim tra v xem kt qu.

dseg segment string1 db "Khong co gi quy hon doc lap tu do" string2 db 34 dup('$') dseg ends cseg segment assume cs:cseg, ds:dseg, es: dseg begin: mov ax, dseg mov ds, ax mov es, ax cld ; chon chieu xu ly chuoi mov cx, 33 ; so ky tu/so byte can di chuyen lea si, string1 ; (DS:SI)--> dia chi cua chuoi nguon lea di, string2 ; (ES:DI)--> dia chi cua chuoi dich rep movsb ; di chuyen tung byte mov ah, 09h lea dx, string2 int 21h mov ah,08h ; dung man hinh de xem ket qua int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin Ti sao ch di chuyn 33 k t/byte m li khai bo bin string2 db 34 dup($). Th thay 34 thnh 33 v tin hnh bin dch, chy chng trnh xem kt qu. C nhn xt g v vn ny khng ?. Gii thch ngha ca vic khai bo ny. Thay lnh CLD trong on chng trnh mu thnh STD. Bin dch v cho chy chng trnh kim chng kt qu. Cho nhn xt v kt qu nhn c. Nu thay lnh movsb thnh MOVSW th chng ta c phi thay i gi tr no trong on chng trnh mu trn khng ?. Nu c thay i, hy bin dch v chy chng trnh kim chng li kt qu. C th thay th lnh REP MOVSB bi mt s lnh khc hay khng? Nu c th hy thay i v sau bin dch, cho chy chng trnh kim chng li kt qu.

Trang 28

BI TP THC HNH LP TRNH H THNG

Gi s ta c ni dung ca mt bin string1 c tng s byte >256 byte th lc chng ta phi khai bo li cc bin ny nh th no ?. Lc ny c kh khn g xy ra khng ?. Hy th sa li, sau bin dch v chy chng trnh xem kt qu. C cch no xc nh chiu di ca mt bin bt k hay khng ?. Hy cho bit cc c php ca lnh c th thc hin c yu cu ny. Sau th p dng xc nh chiu di ca bin string1.

3.3. Tm k t A c trong mt chui k t bt k, nu c th in ra cu thng bo l c k t A trong chui k t v ngc li. Son tho nh on chng trnh mu v lu vi tn l BAI_6C.ASM.
write macro bien1 mov ah, 09h lea dx, bien1 int 21h endm dseg segment string1 db "NGAC NHIEN CHUA ?" tb1 db "co ky tu A trong chuoi string1 $" tb2 db "khong ky tu A trong chuoi string1 $" dseg ends cseg segment assume cs:cseg, ds:dseg, es: dseg begin: mov ax, dseg mov ds, ax mov es, ax chonchieu xu ly chuoi cld ; so ky tu can mov cx, 17 ; tim mov al, 'A' ; tim kien ky tu A trong string1 lea di, string1 ; (ES:DI)--> dia chi cua chuoi dich repne scasb ; lap lai viec tim kiem ky tu cho den jne intb2 ; khi gap duoc hoac den het chuoi write tb1 jmp thoat intb2: write tb2 thoat: mov ah,08h ; dung man hinh de xem ket qua int 21h mov ah, 4ch ; thoat ve Dos int 21h cseg ends end begin

Bin dch v cho chy file BAI_6C.ASM kim tra v xem kt qu. Thay lnh MOV AL, A thnh MOV AL, B, sau bin dch v chy chng trnh xem kt qu. Gii thch nhim v ca cc lnh t CLD cho n JNE INTB2. C th thay th lnh REPNE SCASB thnh cc lnh khc c khng ?. Nu c hy thay th chng, bin dch v chy chng trnh kim chng li kt qu.

Trang 29

BI TP THC HNH LP TRNH H THNG

Ph lc

Mi trng pht trin hp ng RadASM


RadASM l mi trng pht trin Hp ng, c xy dng kt hp nhng hp ng khc nhau nhau MASM, TASM, HASM . v chy trn mi trng Windows. Mi hp ng khc nhau khi kp hp vo RadASM phi c cu hnh khc nhau. V mc ch cung cp cng c cho sinh vin s dng n gian, nn RadASM c cu hnh ph hp vi hp ng MASM for DOS. V th trong qu trnh s dng, sinh vin khng cn phi cu hnh g thm.

1. Khi ng RadASM
Nhp p biu tng trn desktop th mn hnh lm vic ca RadASM xut hin nh hnh 1. Mn hnh lm vic ca RadASM chia thnh 2 vng: Vng son tho dng son tho chng trnh ngun ASM Vng thng bo kt qu: Khi dch chng trnh, nhng kt qu hay li s xut hin ti vng ny

Vng son tho S th t dng lnh

Vng thng bo kt

Hnh 1: Mn hnh lm vic ca RadASM

33 Trang 30

BI TP THC HNH LP TRNH H THNG

Ph Lc Mi trng pht trin hp ng RadASM

Hnh 2: Menu FILE dng:

Hnh 2: Menu MAKE

Cc menu thng dng l FILE (hnh 2) v MAKE (hnh 3), cc lnh thng New File (Ctrl+N): M file mi son tho chng trnh mi Open File (Ctrl+O): M file lu sn trn a Save File (Ctrl+S): Lu file thnh tn (nh t tn file khng c khong trng, phn m rng ASM c thm vo t ng) Assemble (F5): Hp dch file ngun (ASM) thnh file i tng (OBJ) Link (Alt+Ctrl+F5): Lin kt file i tng (OBJ) thnh file thc thi (EXE) Run! (Ctrl+Shift+F5): Thc thi chng trnh (EXE)

Trang 31

BI TP THC HNH LP TRNH H THNG

2. Son tho file chng trnh ngun


Chn lnh New File trong menu FILE (hay bm phm nng tng ng) m vng son tho mi, trong vng son tho, s dng cc chc nng son tho ging nh cc trnh son tho khc. Sau khi son tho file ngun xong phi lu li thnh tn file c phn m rng l ASM. V trong tn file khng c cha khong trng.

3. Hp dch (Assemble)
Sau khi lu file chng trnh ngun xong, chn Assemble trong menu MAKE (Hay bm phm nng tng ng) tin hnh hp dch chng trnh ngun. Nu chng trnh c li c php th vng thng bo c dng hnh 4. Trong tng li c ch ra bi s th t dng lnh v m li V d: chuoi2.asm(18) : error A2008: syntax error : mod Li dng 18, m li A2008: sai c php mod

Hnh 4: Thng bo kt qu Hp dch khng thnh cng Khi chng trnh xut hin li th file i tng (OBJ) khng c to ra v ngi lp trnh phi sa li cho n khi khng cn li. Khi khng c li chng trnh (Hp dch thnh cng) th trong vng thng bo xut hin nh hnh 5 v file i tng (OBJ) c to ra. Khi mi chuyn sang bc LIN KT

Hnh 5: Thng bo kt qu Hp dch thnh cng

Trang 32

BI TP THC HNH LP TRNH H THNG

4. Lin kt (Link)
Chn lnh Link trong menu MAKE. (hay bm phm nng tng ng) Sau khi hon thnh bc hp dch, th bc lin kt l bc cui cng to ra file thc thi (EXE). Trong bc ny, khng cn kim tra li c php na v thng thng s lin kt thnh cng v file thc thi EXE s c to ra. Ni dung thng bo khi lin kt thnh cng nh hnh 6.

Hnh 6: Lin kt thnh cng

5. Thc thi chng trnh EXE


thc thi chng trnh va lin kt xong, chn lnh RUN trong menu MAKE (hay bm phm nng tng ng) . Nu chng trnh c truy xut n bn phm hay mn hnh th 1 ca s (dng mn hnh ca h iu hnh DOS) xut hin nh hnh 7. Ca s ny c to ra hin th kt qu hay ngi dng tng tc vi chng trnh ang chy. Nu chng trnh khng c thao tc no truy xut bn phm hay mn hnh th chng ta khng thy c ca s ny. Nh vy, trong lp trnh hp ng, nu mun nhn thy kt qu g th chng ta phi c nhng on lnh tng ng xut gi tr ra mn hnh.

Trang 33

You might also like