You are on page 1of 39

TRNG I HC CN TH

KHOA CNG NGH


B MN IN T - VIN THNG

Gio trnh thc hnh

LP TRNH
H THNG
Bin son:
ThS. Nguyn Ha Duy Khang
Ks. Trn Hu Danh

-HCT5-2008

Thc hnh lp trnh h thng

NI DUNG
Gii thiu
BI 1: NHP MN HP NG ............................................................................ 1
1. Mc tiu ................................................................................................................ 1
2. Kin thc cn chun b ......................................................................................... 1
3. Ni dung thc hnh .............................................................................................. 1
3.1. Kho st lnh Intel-8086 ........................................................................ 1
3.2. Cu trc chng trnh dng EXE ........................................................... 1
3.3. Vit chng trnh n gin .................................................................... 3
4. Bi tp ngh ...................................................................................................... 3
BI 2: XUT NHP K T ................................................................................ 5
1. Mc tiu ................................................................................................................ 5
2. Kin thc cn chun b ......................................................................................... 5
3. Ni dung thc hnh .............................................................................................. 5
3.1. In mt k t ra mn hnh ........................................................................ 5
3.2. In chui k t ra mn hnh ..................................................................... 6
3.3. Nhn mt k t t bn phm................................................................... 6
3.4. Nhn chui k t t bn phm ................................................................ 7
4. Bi tp ngh ...................................................................................................... 8
BI 3: CU TRC R NHNH VNG LP ................................................. 9
1. Mc tiu ................................................................................................................ 9
2. Tm tt l thuyt .................................................................................................. 9
3. Ni dung thc hnh .............................................................................................. 12
3.1. Cu trc r nhnh ................................................................................... 12
3.2. Cu trc vng lp ................................................................................... 13
4. Bi tp ngh ...................................................................................................... 13
BI 4: NHP XUT S DNG BIN-HEX-DEC ............................................... 15
1. Mc tiu ................................................................................................................ 15
2. Kin thc cn chun b ......................................................................................... 15
3. Ni dung thc hnh .............................................................................................. 15
3.1. Nhp xut s nh phn ............................................................................ 15
3.2. Nhp xut s thp lc phn .................................................................... 16
3.3. Xut s thp phn nguyn dng ........................................................... 18
4. Bi tp ngh ...................................................................................................... 19
BI 5: X L TP TIN ........................................................................................ 21
1. Mc tiu ................................................................................................................ 21
2. Kin thc cn chun b ......................................................................................... 21
3. Ni dung thc hnh .............................................................................................. 21
3.1. To tp tin mi ....................................................................................... 21

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Thc hnh lp trnh h thng


3.2. Ghi ni dung tp tin ................................................................................ 22
3.3. c ni dung tp tin ............................................................................... 23
3.4. Xa tp tin ............................................................................................. 25
3.5. i tn tp tin ........................................................................................ 26
4. Bi tp ngh ...................................................................................................... 27
BI 6: X L CHUI K T............................................................................. 28
1. Mc tiu ................................................................................................................ 28
2. Kin thc cn chun b ......................................................................................... 28
3. Ni dung thc hnh .............................................................................................. 28
3.1. So snh chui.......................................................................................... 28
3.2. Di chuyn chui...................................................................................... 30
3.3. D tm trong chui ................................................................................. 31

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

ii

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, mi ch thc hnh trong 1 bui (5 tit):
Bi 1: Nhp mn hp ng
Bi 2: Xut nhp k t.
Bi 3: Cu trc r nhnh Vng lp
Bi 4: X l k t - K s
Bi 5: X l tp tin
Bi 6: 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.

Trong khi 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.

Sau khi thc hnh:


-

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.

Trong qu trnh bin son, khng th trnh khi s xut, hy chn thnh gp
chnh sa gio trnh ngy cng hon chnh hn.
ThS. Nguyn Ha Duy Khang
Email: nhdkhang@ctu.edu.vn

Bi 1 Nhp mn hp ng

Bi 1: Nhp Mn Hp Ng
1. MC TIU
-

S dng c cng c Emu8086 kho st cc lnh ca Intel-8086.


S dng c cc chc nng c bn ca cng c RadASM nh: Son
tho, Hp dch (Assemble), Lin kt (Link) v Chy chng trnh (Run).
Vit ng cu trc ca chng trnh hp ng dng ti nh (EXE).
c hiu v sa li chng trnh.

2. KIN THC CN CHUN B


-

Cc thao tc c bn trn h iu hnh Windows.


Cu trc chng trnh hp ng dng EXE.
Qui trnh Son tho Dch chng trnh.
Cc lnh n gin ca Intel-8086 thng dng nh: MOV, ADD, SUB,
INC, DEC, AND, OR. (Xem c php trong gio trnh)

3. NI DUNG THC HNH


3.1. Kho st lnh Intel-8086:
3.1.1. Nhp vo Emu8086 on lnh sau y v d on trc kt qu:
MOV AH, 80
MOV AL, 86
MOV BX, AX
MOV DH, BL
MOV DL, BH
MOV SI, CS

; AH 80 (AX = ?)
; AL 86 (AX = ?)
; BX AX (BH = ?, BL = ?)
; DH BL (DH = ?, DX = ?)
; DL BH (DL = ?, DX = ?)
; SI CS (SI = ?)

Thc hin tng lnh, sau mi lnh ghi li kt qu cc thanh ghi trong ngoc
i chiu vi kt qu d on trn v gii thch.
3.1.2. Thc hnh tng t nh cu 3.1.1 i vi on lnh sau:
MOV
ADD
DEC
SUB
AND

AX, 8086
AL, 3
AX
AH, 10h
AX, 0FF0h

; AX 8086 (AH = ?, AL = ?)
; AL AL + 3 (AL = ?, AX = ?)
; AX AX 1 (AH = ?, AL = ?, AX = ?)
; AH AH 10h (AH = ?, AL = ?, AX = ?)
; AX AX and 0FF0h (AX = ?)

3.1.3. Sinh vin ch ng lp li t nht 1 ln cu 3.1.1 v 3.1.2 vi cc gi tr ton


hng khc trong mi dng lnh.

3.2. Cu trc chng trnh dng EXE:


3.1.1. [HELLO.ASM] Dng RadASM son tho chng trnh Hp ng sau y:
Lu : - Chng trnh hon ton khng c li.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 1 Nhp mn hp ng
- Trong c nhng lnh m sinh vin cha hc n, iu ny khng
cn quan tm, iu cn quan tm trong bi thc hnh ny l Cu trc
chng trnh hp ng.
- t tn file chng trnh ngun l HELLO.ASM
DSEG SEGMENT ; To on DSEG
chuoi DB Hello World!$
; Khai bo bin chui
DSEG ENDS
CSEG SEGMENT ; To on CSEG
ASSUME CS: CSEG, DS: DSEG ; CSEG l on lnh, DSEG l d liu
begin: MOV AX, DSEG ; Khi ng a ch on d liu
MOV DS, AX
MOV AH, 09h
; AH 09h
LEA DX, chuoi ; DX a ch offset bin chuoi
INT 21h
; gi ngt 21h
MOV AH, 01h
; AH 01h
INT 21h
; gi ngt 21h
MOV AH, 4Ch
; Thot chng trnh
INT 21h
CSEG ENDS
END begin
a. Hp dch chng trnh HELLO.ASM v kim tra xem file HELLO.OBJ
c to ra cha.
b. Lin kt chng trnh HELLO, kim tra xem file HELLO.EXE c to ra
cha
c. Chy chng trnh HELLO.EXE, quan st trn mn hnh, chng trnh trn lm
g?
d. Thay i Hello World!$ thnh Wellcome to Assembly$. Lm li cc bc
a, b v c. Chng trnh trn lm g?
3.2.2. [HELLO2.ASM] Sa file HELLO.ASM trn sao cho ging ht nh chng
trnh sau v t tn li l HELLO2.ASM (ch khc nhng ch in nghing) - Lu :
Chng trnh s c vi li
a. Dch chng trnh HELLO2.ASM, ghi li cc thng tin v li: S li, nhng li
g, trn dng no?
b. Kim tra xem file HELLO2.OBJ c to ra khng? Ti sao?
c. Sa tng li mt t dng trn xung, ri lp li cu a cho n khi no ht li.
d. Lin kt chng trnh HELLO2. Kim tra xem c file HELLO2.EXE khng?
e. Chy chng trnh HELLO2.EXE, so snh kt qu vi 3.1.1.d

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 1 Nhp mn hp ng
DSEG SEGMEMT ; To on DSEG
chuoi DW Wellcome to Assembly$ ; Khai bo bin chui
DSEG ENDS
CSEG SEGMENT ; To on CSEG
ASSUME CS: CSEG, DS: DSEG ; CSEG l on lnh, DSEG l d liu
begin: MOV BX, SSEG ; Khi ng a ch on d liu
MOV DS, BX
MOV AH, 09h
; AH 09h
LEA DH, chuoi ; DX a ch offset bin chuoi
INT 21h
; gi ngt 21h
MOV AH, 01h
; AH 01h
INT 21h
; gi ngt 21h
MOV AH, 4Ch
; Thot chng trnh
INT 21h
CSEG ENDS
END Begin

3.3. Vit cc chng trnh n gin:


3.3.1. [SUM1.ASM] Vit chng trnh dng EXE tnh kt qu biu thc sau, lu
tr kt qu trong AX:
10 + 8086 - 100h + 350 + 0FAh
Lu : - Ch khai bo 1 on lnh vit chng trnh.
a. Dch sa li (nu c li) v chy chng trnh.
b. Dng Emu8086 chy chng trnh trn v kim tra kt qu lu trong AX.
3.3.2. [SUM2.ASM] Vit chng trnh dng EXE tnh kt qu biu thc c dng
tng qut nh sau:
KQUA = A + B C + D + E
Trong : KQUA, A, B, C, D, E l cc bin 2 byte khai bo trong on d liu.
Lu : - Chng trnh gm 2 on: on lnh v on d liu dng cha cc
Bin.
a. Gn gi tr cc bin A = 1000, B = 10, C = 1Fh, D = 30h, E = 300Ah. Dch v
chy chng trnh.
b. Dng Emu8086 kim tra kt qu ca cu a.
c. p dng SUM2.ASM tnh biu thc cho cu 3.3.1. Dng Emu8086
kim tra kt qu.

4. BI TP NGH:
4.1. Dng Emu8086 kho st cc lnh khc trong tp lnh ca Intel-8086.
4.2. T tm hiu thm nhng chc nng khc ca Emu8086

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 1 Nhp mn hp ng
4.3. Vit tng chng trnh tnh cc biu thc sau: (Phi vit theo kiu s dng bin
cha ton hng v kt qu, SV t t tn bin theo ca mnh)
a. 15h * 250

d. 1000 100

b. 16 * 0AF1h

e. 1000 100h

c. 300 * 400

f. 3AB45Eh 0A1h

4.4. S dng Emu8086 kim chng kt qu ca cc chng trnh vit cho 4.3.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 2 Xut nhp k t

Bi 2: 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.

2. KIN THC CN CHUN B


-

Kt qu bi thc hnh 1.

Cc hm 01h, 02h, 06h, 07h, 08h, 09h, 0Ah ca ngt 21h.

Bng m ASCII.

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:

CSEG

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

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)

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 2 Xut nhp k t

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 Can
Tho.

Sa khai bo bin chuoi c dng nh sau:


chuoi DB Truong Dai Hoc, 10, 13, Can Tho$

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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 2 Xut nhp k t
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
lea dx, MAX
; dx chua dia chi vung dem ban phim
int 21h
; goi ngat thuc hien ham
mov ah, 4Ch
; tro ve he dieu hanh
int 21h
CSEG ENDS
END start

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 2 Xut nhp k t
-

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: Nguyen Hua Duy Khang
Chui in ra mn hnh s l: Xin chao Nguyen Hua Duy Khang

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 3 Cu trc r nhnh Vng lp

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

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

Bi 3 Cu trc r nhnh Vng lp


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,

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

10

Bi 3 Cu trc r nhnh Vng lp


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>

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

11

Bi 3 Cu trc r nhnh Vng lp


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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

12

Bi 3 Cu trc r nhnh Vng lp


-

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?

3.2 Cu trc vng lp


-

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.

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".

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

13

Bi 3 Cu trc r nhnh Vng lp


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

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

14

Bi 4 Nhp xut s dng BIN-HEX-DEC

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

2. Kin thc cn chun b:


-

Kt qu ca cc bi thc hnh trc


Cc lnh x l chui.

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):
inchuoi

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
MOV CX, 8
; nhp 8 bit th dng

ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

28

Bi 4 Nhp xut s dng BIN-HEX-DEC


nhap:MOV AH, 01h
INT 21h
CMP AL, 0Dh
JZ
exit
SHL BL, 1
SUB AL, 30h
ADD BL, AL
LOOP nhap
exit:RET
bin_in
ENDP
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.

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 Hex: $"

ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

29

Bi 4 Nhp xut s dng BIN-HEX-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
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

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
RET

hex_out

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

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.

ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

30

Bi 4 Nhp xut s dng BIN-HEX-DEC


-

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
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
ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

31

Bi 4 Nhp xut s dng BIN-HEX-DEC

dec_out

ADD DL,30h
INT 21h
LOOP inra
RET

; i thnh k s

ENDP

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 B = 01010101

A and B = 00000000

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?

ThS. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

32

Bi 5 X l tp tin

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 ?

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

21

Bi 5 X l tp tin
-

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.

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

22

Bi 5 X l tp tin
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.

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

23

Bi 5 X l tp tin
-

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

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

24

Bi 5 X l tp tin
v u tp tin bng hm 42h; sau ghi ni dung ca vng m tr li tp tin
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.

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

25

Bi 5 X l tp tin
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

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

26

Bi 5 X l tp tin

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

ThS. Nguyn Ha Duy Khang - Ks. Trn Hu Danh

27

Bi 6 X l chui k t

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

2. Kin thc cn chun b:


-

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.

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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

28

Bi 6 X l chui k t

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

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

29

Bi 6 X l chui k t
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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

30

Bi 6 X l chui k t
-

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.

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
cld
; chonchieu xu ly chuoi
mov cx, 17
; so ky tu can 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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

31

Bi 6 X l chui k t
-

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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

32

Ph Lc Mi trng pht trin hp ng RadASM

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
qu Dch chng trnh

Hnh 1: Mn hnh lm vic ca RadASM

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

33

Ph Lc Mi trng pht trin hp ng RadASM

Hnh 2: Menu FILE

Hnh 2: Menu MAKE

Cc menu thng dng l FILE (hnh 2) v MAKE (hnh 3), cc lnh thng
dng:
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)

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

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

34

Ph Lc Mi trng pht trin hp ng RadASM

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

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.

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

35

Ph Lc Mi trng pht trin hp ng RadASM


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.

Hnh 7: Ca s kt qu chng trnh

Ths. Nguyn Ha Duy Khang, Ks. Trn Hu Danh

36

You might also like