You are on page 1of 9

Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng

15
CHUONG II: CC LENH CO BAN CUA HOP NG
2.1 Cu trc chuong trnh
2.1.1 V du
D c ci nhn tng qut v mt chuong trnh hop ngu, ta xt v du sau dy:
TITLE VI DU 1
.MODEL SMALL
.STACK 100H
.DATA
A DB 4
B DB 6
C DB ?
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AL, A
ADD AL, B
MOV C, AL
MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN
Buoc du ta chua cn quan tm toi nghia cua cc lnh m chi cn quan tm toi b
cuc cua chung chuong trnh, cc tu kho co ban, cch vit cc cu lnh...
2.1.2 Giai thch
Nhn chung, cu trc cua mt chuong trnh hop ngu c 3 phn: Phn tn, phn khai
bo v phn m lnh.
a) Phan tn
Tn chuong trnh duoc vit sau tu kho TITLE o du chuong trnh. Tn c th chua
du cch v cc k tu dc bit khc. Thng thuong phn tn s cho ta bit muc dch,
nhim vu hoc ni dung tm tt cua chuong trnh.
V du: TITLE VI DU 1
b) Phan khai bo
Trong hop ngu c nhiu ni dung cn phai khi bo nhu kiu b nho, ngn xp, bin,
hng...
Khai bo kiu b nho
Kiu b nho duoc vit sau tu .MODEL. Kiu b nho s quy dinh kch thuoc cua doan
m v du liu trong chuong trnh.
Trong chuong trnh o phn 2.1.1, kiu b nho l SMALL, nghia l kiu b nho nho,
m lnh s nm trong 1 doan nho, du liu nm trong 1 doan nho. Ngoi kiu SMALL cn
c nhiu kiu b nho khc:
MEDIUM M lnh chim nhiu hon 1 doan
Du liu trong 1 doan
COMPACT M lnh trong 1 doan
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
16
Du liu chim nhiu hon 1 doan
LARGE M lnh chim nhiu hon 1 doan
Du liu chim nhiu hon 1 doan
Khng c mang no lon hon 64 KB
HUGE M lnh chim nhiu hon 1 doan
Du liu chim nhiu hon 1 doan
Cc mang c th lon hon 64 KB
Khai bo kch thuoc ngn xp
Kch thuoc ngn xp duoc vit sau tu .STACK
V du: .STACK 100H
Kh d kch thuoc vng b nho dng lm ngn xp l 100H Bytes (cc vn d v
ngn xp s trnh by k trong chuong 6)
Khai bo du liu
Khai bo du liu duoc vit sau tu .DATA. Cc bin cua chuong trnh s duoc khai bo
o phn ny.
V du 1: A DB 4
Trong d: A l tn bin, DB l kiu du liu (bin kiu DB s c kch thuoc 1 byte), 4 l
gi tri ban du cua bin.
V du 2: B DW ?
Trong v du ny, bin B s c kiu l DW (1 Word) v khng c gi tri khoi tao.
Khai bo hng:
V du: H EQU 2Bh
Hng H s nhn gi tri bng 2Bh.
Quy tc dt tn (Bin, hng, nhn, thu tuc):
+ Tn c chiu di ti da 31 k tu.
+ C th chua chu ci, chu s v cc k tu dc bit (? . @ _ $ %).
+ Khng duoc bt du bng s.
+ Nu dng du chm th n phai dung du tin.
+ Tn khng duoc chua du cch.
Ni chung, trong hop ngu khng phn bit chu hoa v chu thuong.
c) Phan m lnh
Phn ny bao gm cc thu tuc duoc vit sau tu .CODE. Trong s cc thu tuc ny phai
chon mt thu tuc lm chuong trnh chnh, tn cua thu tuc d duoc vit sau tu END o cui
chuong trnh. Tn chuong trnh chnh thuong dt l MAIN, cung c th chon mt tn
khc.
Cu trc mt thu tuc:
<Tn thu tuc> PROC
Lnh 1
Lnh 2
Lnh 3
...
<Tn thu tuc> ENDP
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
17
Cu trc chung cua phn m lnh:
.CODE
<Tn chuong trnh chnh> PROC
Lnh 1
Lnh 2
Lnh 3
...
<Tn chuong trnh chnh> ENDP
...Cc thu tuc khc
END <Tn chuong trnh chnh>
2.2 Mt s lnh thung dng
2.2.1 Cu trc cu lnh hop ng
Mt cu lnh hop ngu c th chia lm 2 phn: Tn lnh v cc ton hang. Tn lnh vit
truoc, cc ton hang vit sau. Nu c nhiu ton hang th chng duoc phn cch voi nhau
bng du phay (,).
<Tn lnh> <Ton hang 1> [, <Ton hang 2>...] [;Loi ch thch]
Ngoi ra c th vit thm cc loi ch thch d lm r nghia cu lnh. Loi ch thch
duoc bt du bng du chm phay (;).
V du:
MOV DS, AX ;Chuyn ni dung cua thanh ghi AX vo thanh ghi DS
MOV l tn lnh.
DS v AX l cc ton hang.
Luu : Cc lnh duoc trnh by trong ti liu ny hu ht thuc tp lnh cua b vi xu
l 8086, tru mt s truong hop s c ch thch ring.
2.2.2 Mt s lnh thung dng
a) Lnh MOV (Move)
Lnh ny duoc su dung d chuyn du liu giua cc thanh ghi hay nho.
C php lnh:
MOV <Dch>, <Ngun>
Dch>: l mt thanh ghi hay mt nho
<Ngun>: l mt thanh ghi, mt nho, hoc mt hng s
Du liu s duoc chuyn tu Ngun vo Dch (ni dung cua Ngun khng thay di sau khi
chuyn).
V du 1:
MOV AX, 4C00h
Lnh trn chuyn gi tri 4C00h vo thanh ghi AX.
V du 2:
MOV AL, A
Lnh trn chuyn gi tri cua bin A vo thanh ghi AL.
Ch :
Khng duoc chuyn truc tip ni dung cua hai thanh ghi doan cho nhau.
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
18
V du: MOV CS, DS
Lnh trn bi sai do ca CS v DS du l thanh ghi doan. Mun thuc hin duoc diu ny
th phai su dung mt bin hay mt thanh ghi khc lm trung gian:
V du: MOV AX, DS ; dng AX lm trung gian
MOV CS, AX
Khng duoc chuyn truc tip ni dung cua hai bin cho nhau.
V du: MOV A, B Lnh ny khng thuc hin duoc
Khng duoc chuyn truc tip mt hng s vo mt thanh ghi doan.
V du: MOV DS, 2000h
Ni chung, mun khc phuc cc truong hop nu trn trn th ta du phai su dung
trung gian.
b) Lnh XCHG (Exchange)
Lnh ny dng d hon di du liu du liu giua hai ton hang.
C php lnh:
MOV <Ton hang 1>, <Ton hang 2>
Cc ton hang c th l thanh ghi cng dung chung, hoc mt thanh ghi cng dung chung
v mt nho.
V du 1:
XCHG AX, BX ;hon di ni dung cua AX v BX
c) Lnh ADD v SUB (Subtract)
C php lnh:
ADD <Dch>, <Ngun>
SUB <Dch>, <Ngun>
Dch>: l mt thanh ghi hay mt nho
<Ngun>: l mt thanh ghi, mt nho, hoc mt hng s
Dch>,<Ngun> khng dng thoi l hai nho.
Lnh ADD s thuc hin php cng Dch voi Ngun, kt qua chua trong Dch.
Lnh SUB s ly Dch tru di Ngun, kt qua chua trong Dch.
V du:
ADD AX, 10 ;Tng ni dung cua thanh ghi AX ln 10
ADD BX, AX ;Cng ni dung 2 thanh ghi AX v BX, tng ct vo BX
SUB AX, B ;Tru ni dung thanh ghi AX cho bin B.
d) Lnh INC (Increment) v DEC (Decrement)
C php lnh:
INC <Dch>
DEC <Dch>
Dch>: l mt thanh ghi hay mt nho
Lnh INC s tng Dch ln 1 (cng Dch voi 1).
Lnh DEC s giam Dch di 1 (tru Dch cho 1).
V du:
INC AH ;Cng ni dung cua thanh ghi AH voi 1
DEC B ;Tru gi tri cua bin B cho 1
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
19
e) Lnh NEG (Negartive)
C php lnh:
NEG <Dch>
Dch>: l mt thanh ghi hay mt nho.
Lnh ny c tc dung di du ton hang Dch.
V du:
NEG AL
2.3 Nhp xut d liu
2.3.1 Chuong trnh ngt
Chuong trnh ngt l nhung chuong trnh con d duoc vit sn nhm thuc hin nhung
chuc nng co ban khi thao tc voi my tnh. Cc chuong trnh con ny duoc phn phi
km theo cc phn mm diu khin h thng nhu BIOS, H diu hnh. Mi chuong trnh
c mt s hiu ring (0, 1, 2, ...). Khi lp trnh ta c th su dung cc chuong trnh con c
sn ny bng cch dng lnh INT (interrupt).
C php lnh: INT <S hiu ngt>
V du 1:
INT 21h
Lnh trn s goi thuc hin chuong trnh ngt s 21h (dy l s hiu ngt hay su dung nht
cua DOS).
V du 2:
INT 13h
Lnh trn s goi thuc hin chuong trnh ngt s 13h (dy l s hiu ngt cua BIOS, dng
d thao tc voi dia tu).
Chi tit v cc ngt v chuong trnh xu l ngt s trnh by trong chuong 8.
2.3.2 Chc nng nhp - xut cua ngt 21h
Ngt 21h cua DOS cung cp rt nhiu chuc nng khc nhau, mi chuc nng cung c
mt s hiu ring (0, 1, 2, ...). Trong phn ny ta chi quan tm toi chuc nng nhp - xut
du liu.
Cch su dung ngt 21h: Truoc khi goi ngt cn xc dinh duoc s hiu chuc nng, s
hiu d duoc dt vo thanh ghi AH. Ngoi ra cung cn quan tm toi cc tham s khc
(chuong trnh ngt s su dung thanh ghi no? Gi tri cua chng bng bao nhiu?...)
a) Chuc nng hin mot k tu ra mn hnh
Dy l chuc nng s 2 cua ngt 21h. Cc tham s cn thit d goi ngt nhu sau:
Vo: AH = 2
DL = M ASCII cua k tu cn hin thi
Ra: AL chua m ASCII cua k tu hin thi
V du 2: Hin k tu M ra mn hnh
MOV AH, 2
MOV DL, M
INT 21h
Sau dy l chuong trnh dy du:
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
20
TITLE HIEN KI TU
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 2 ;Chc nang s 2
MOV DL, M ;K tu cn hin thi
INT 21h ;Goi ngt
MOV AH, 4Ch ;Kt thc
INT 21h
MAIN ENDP
END MAIN
Ta c th su dung m ASCII cua k tu hoc vit truc tip k tu giua 2 du nhy don
nhu trong chuong trnh trn (ni chung, cc k tu v chui k tu trong hop ngu phai c
du nhy don o 2 du).
Ngoi chuc nng s 2, trong chuong trnh trn cn su dung chuc nng s 4Ch cua ngt
21h. Chuc nng ny c tc dung kt thc chuong trnh v tra lai quyn diu khin cho h
diu hnh DOS.
b) Chuc nng hin mot chuoi k tu ra mn hnh
Dy l chuc nng s 9 cua ngt 21h. Cc tham s cn thit d goi ngt nhu sau:
Vo: AH = 9
DX = Dia chi offset cua vng nho chua chui k tu
V du:
Hin ra mn hnh dng chu: KHOA CONG NGHE THONG TIN
Giai:
TITLE HIEN CHUOI KT
.MODEL SMALL
.STACK 100H
.DATA
ChuoiKT DB KHOA CONG NGHE THONG TIN$
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 9 ;Chc nang s 9
LEA DX, ChuoiKT ;Ly dia chi chui k tu dat vo DX
INT 21h ;Goi ngt
MOV AH, 4Ch ;Kt thc
INT 21h
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
21
MAIN ENDP
END MAIN
Trong chuong trnh trn c mt s dim cn luu :
Chui k tu cn hin thi phai duoc kt thc bng du $.
Nu trong chuong trnh c su dung khai bo du liu .DATA th o du cua chuong
trnh chnh phai c cc lnh:
MOV AX, @DATA
MOV DS, AX
Muc dch l d dt dia chi segment cua doan du liu vo thanh ghi DS.
Chuong trnh trn c su dung lnh LEA (Load Effective Address). C php lnh
nhu sau:
LEA <Dch>, <Ngun>
Dch>: l mt thanh ghi cng dung chung.
<Ngun>: l mt nho.
Lnh ny s ly dia chi offset cua Ngun dt vo Dch.
c) Chuc nng nhap mot k tu tu bn phm
Dy l chuc nng s 1 cua ngt 21h. Cc tham s cn thit d goi ngt nhu sau:
Vo: AH = 1
Ra: AL chua m ASCII cua k tu
Cc lnh cu th nhu sau:
MOV AH, 1
INT 21h
Khi gp cc lnh trn, chuong trnh s dung lai cho ta g mt k tu tu bn phm, m
ASCII cua k tu d s duoc ct trong thanh ghi AL.
V du:
Nhp mt k tu thuong tu bn phm, di n thnh k tu in hoa ri hin ra mn hnh.
Giai:
TITLE DOI KI TU
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 1 ;Chc nang s 1: Nhp mt k tu
INT 21h
SUB AL, 20h ;i k tu sang in hoa
MOV AH, 2 ;Chc nang s 2: Hin k tu
MOV DL, AL
INT 21h
MOV AH, 4Ch ;Kt thc
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
22
INT 21h
MAIN ENDP
END MAIN
Giai thch: M ASCII cua k tu thuong lon hon k tu in hoa tuong ung l 20h. Mun
chuyn tu k tu thuong thnh in hoa th chi vic ly m ASCII cua n tru di 20h.
2.4 Cch chay mt chuong trnh hop ng
D c th chay mt chuong trnh hop ngu th truoc ht phai bin dich n thnh file thi
hnh (EXE, COM). C nhiu cng cu bin dich khc nhau do nhiu hng phn mm san
xut. Ta s su dung b cng cu MASM (Microsoft Macro Assembler) cua hng
MicroSoft v n kh nho gon v d dng. D bt du th ta chi cn toi hai file:
MASM.EXE v LINK.EXE. Cc buoc thuc hin nhu sau:
Buoc 1:
Soan thao ni dung chuong trnh bng mt cng cu soan thao text bt k, ct vo file
voi phn mo rng l ASM.
V du: tn file l Baitap.asm
Buoc 2:
Dich file ASM thnh file OBJ bng cng cu MASM.EXE. G lnh nhu sau:
MASM Baitap; (Enter)
(file MASM.EXE v file Baitap.asm nn d cng mt thu muc)
Nu dich thnh cng (chuong trnh khng c li) th ta s thu duoc file Baitap.obj.
Nu chuong trnh bi li th phai sua, sau d tin hnh dich lai.
Buoc 3:
Su dung cng cu LINK.EXE d lin kt cc file OBJ thu duoc o buoc 2 thnh file thi
hnh duoc (EXE). V trong v du ny chi c 1 file OBJ nn cch g lnh nhu sau:
LINK Baitap; (Enter)
(file LINK.EXE cung o cng thu muc ni trn)
Bi giang hop ng Chuong II: Cc lnh co ban cua hop ng
23
Ta s thu duoc file Baitap.exe. D chay file ny chi vic g lnh:
Baitap (Enter)

You might also like