Professional Documents
Culture Documents
Lap Trinh He Thong
Lap Trinh He Thong
LP TRNH
H THNG
Bin son:
ThS. Nguyn Ha Duy Khang
Ks. Trn Hu Danh
-HCT5-2008
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
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:
-
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
-
; 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 = ?)
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
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
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
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.
Bi 2 Xut nhp k t
Bi 2: Xut Nhp K T
1. MC TIU
-
Kt qu bi thc hnh 1.
Bng m ASCII.
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
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)
Bi 2 Xut nhp k t
Vit li chng trnh trn in ra mn hnh chui Truong Dai Hoc 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.
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
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
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
Bi 2 Xut nhp k t
-
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
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
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
10
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>
11
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
12
Thay lnh JA NHAN bng lnh JNA NHAN. Sa chng trnh sao cho kt
qu khng thay i.
Vng lp trong chng trnh bao gm on lnh no? Vit theo kiu while do
hay repeat ... until hay for? V lu chng trnh.
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
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".
13
14
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
28
; Hm nhp k t
;
;
;
;
;
;
;
;
;
;
Son tho, Bin dch v cho chy file BAI_6A.ASM kim tra kt qu.
Son tho, Bin dch v cho chy file BAI_6B.ASM kim tra kt qu.
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: $"
29
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.
30
Son tho, Bin dch v cho chy file BAI_6C.ASM kim tra kt qu.
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
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:
A B = 01010101
A and B = 00000000
A or B = 11111111
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.
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
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.
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 ?
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
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.
-
dseg segment
string1 db
len db $ tenfile db
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
; 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.
23
Bi 5 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.
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.
-
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.
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.
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
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
27
Bi 6 X l chui k t
Bi 6: X L Chui K T
1. Mc Tiu:
-
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.
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.
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.
28
Bi 6 X l chui k t
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
-
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.
30
Bi 6 X l chui k t
-
Bin dch v cho chy file BAI_6C.ASM kim tra v xem kt qu.
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.
32
Ph lc
Mi trng pht trin hp ng RadASM
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 thng bo kt
qu Dch chng trnh
33
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)
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
34
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.
35
36