Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Bi ging k thut vi x l - GV.

Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l


- 20 -
CHNG 3 LP TRNH ASSEMBLY CHO H VI X L

Trong chng trc chng ta tm hiu v cu trc v tp lnh ca b vi x l 8088.
Trong chng ny chng ta s tm hiu cch lp trnh Assembly cho cc h vi x l c xy
dng trn b vi x l 8088 (v h vi x l Intel 80x86 ni chung). S d ta dng ngn ng lp
trnh Assembly vit phn mm cho h vi x l l v n c cc u im sau:
- S dng trc tip tp lnh ca b vi x l nn qu trnh iu hnh chc nng rt st vi
cu trc phn cng ca h thng, tn dng trit kh nng ca phn cng m khng mt
ngn ng lp trnh bc cao no lm c.
- C tc thc hin nhanh hn nhiu so vi cc ngn ng bc cao. Do vy n rt thch
hp vi cc chc nng yu cu thi gian thc chng hn nh thao tc vi cc tn hiu bin i
nhanh.
Cc chng trnh vit bng ngn ng Assembly phi c dch ra ngn ng my (dng nh
phn) v y l dng duy nht m h vi x l c th hiu c. C nhiu chng trnh bin
dch nhng thng dng nht hin nay Macro Assembler ca hng Microsoft v Turbo
Assembler ca hng Borland. Chng ta s s dng Macro Assembler 6.0 bin dch cc
chng trnh Assembly. Chng trnh bin dch MASM 6.0 c rt nhiu file nhng ti thiu
cn nhng file sau:
- MASM.EXE bin dch chng trnh sang ngn ng my
- LINK.EXE lin kt cc chng trnh v to ra mt chng trnh chy c c ui exe.
- EXE2BIN chuyn chng trnh ui exe sang ui com.

I - KHUNG CHNG TRNH ASSEMBLY
1. B k t ca Assembly
Mt ngn ng bt k t ngn ng giao tip ca con ngi ti ngn ng my tnh u xy
dng trn mt b k t. Cc k t ghp li thnh cc t c ngha gi l t vng. Cc t li
c vit thnh cc cu tun theo c php v ng php ca ngn ng din t hnh ng s
vic cn thc hin. B k t ca Assembly gm c:
- Cc ch ci latin: 26 ch hoa A-Z, 26 ch thng a-z.
- Cc ch s thp phn: 0 - 9
- Cc k hiu php ton, cc du chm cu v cc k hiu c bit: + - * / @ ? $ , . : [ ] ( )
< > { } & % ! \ # v.v...
- Cc k t ngn cch: space v tab
2. T kha
T kha l cc t ca ring Assembly nh tn cc thanh ghi, tn lnh dng gi nh ca b
vi x l, tn ton t... Cc t kha ny i hi ngi lp trnh phi dng ng nh Assembly
quy nh. Cc t kha c th vit bng ch hoa hoc ch thng u c.
3. Tn t t
Tn l mt dy k t dng biu th tn hng, tn bin, tn nhn, tn chng trnh con,
tn on nh... Tn do ngi lp trnh t t nhng phi tun theo quy tc sau:
Quy tc t tn: Tn ch gm ch ci, ch s v mt s k t c bit nh ? @ _ $ Ch u
ca tn bt buc phi l ch ci. Trong tn khng c du cch. Tn c th di t 1 n 35 k
t.
4. Cu trc mt lnh Assembly
Mt chng trnh Assembly bao gm cc dng lnh, mt dng lnh c th l mt lnh tht
di dng gi nh ca b vi x l hoc mt hng dn cho chng trnh dch (assembler
directive, i khi gi l lnh gi). Lnh tht s c dch ra m my cn lnh gi th khng
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 21 -
c dch, v n ch c tc dng ch dn cho chng trnh dch thc hin cng vic. Ta c th
vit cc dng lnh bng ch hoa hoc ch thng u c v chng c coi l tng ng
nhau.
Mt dng lnh ca Assembly c th c nhng trng sau (khng nht thit phi c cc
trng):
Tn M lnh Cc ton hng Ch gii

V d:
LAP: MOV AH,[BX] ; Copy ni dung ca nh c a ch DS:BX vo AH
Dng lnh trn c 4 trng. Trng tn l nhn LAP, trng m lnh l lnh MOV,
trng ton hng l cc thanh ghi AH v BX, trng ch gii t sau du chm phy
MAIN PROC
v
MAIN ENDP
Hai dng lnh ny l hai lnh gi, trng tn c tn th tc l MAIN, trng m lnh
c lnh gi PROC v ENDP. y l hai lnh gi bt u v kt thc mt th tc c tn l
MAIN.
Trng tn
Trng tn c th l tn nhn, tn bin hoc tn th tc (chng trnh con). Cc tn v
nhn ny s c trnh bin dch gn bng cc a ch c th ca nh. Mt nhn kt thc
bng du hai chm (:).
Trng m lnh
Cha cc lnh tht hoc lnh gi
Trng ton hng
i vi cc lnh tht th trng ny cha cc ton hng ca lnh. Ty tng loi lnh m c
th khng c, c 1 hoc 2 ton hng trong mt lnh.
i vi cc lnh gi th trng ny cha cc thng tin khc lin quan n lnh gi.
Trng ch gii
Li gii thch phi c bt u bng du chm phy. Trng ch gii dnh cho ngi lp
trnh ghi cc li gii thch cho cc lnh ca chng trnh, gip cho ngi c chng
trnh d hiu cc thao tc ca chng trnh ln. Khi c thy du chm phy, chng trnh
dch b qua khng dch t sau du chm phy n ht dng. Ngi lp trnh c th li
dng c im ny loi b mt dng lnh no trong chng trnh.
5. Cc dng hng dng trong Assembly
- Hng s nh phn: gm mt dy cc ch s 0 v 1, kt thc bng ch B. V d:
10011101B
- Hng s hex: gm mt dy cc s t 0 n 9 v cc ch ci t A n F (a n f), kt thc
bng ch H. i vi cc s bt u bng ch th phi thm 0 ng trc bo cho chng
trnh dch bit l s khng phi l tn. V d: 7AC5H, 0ABH
- Hng s thp phn: gm mt dy cc s t 0 n 9, c hoc khng c ch D theo sau. V
d: 34 hoc 34D.
- Hng k t: l mt k t bt k t gia hai du phy trn. V d: A
- Hng xu k t: l mt dy k t bt k t gia hai du phy trn. V d: Nhap
6. Khai bo bin v hng
a) Khai bo bin
Bin l tn nh dng ct gi d liu. Khai bo bin l t tn cho nh v xc nh
nh c kch thc 1 byte, 1 t hay 1 t kp. Cc tn bin s c trnh bin dch gn cho mt
a ch nht nh trong b nh khi dch chng trnh.
Khai bo bin kiu byte
Tn bin DB Gi tr khi u
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 22 -
V d:
B1 DB 4

V d trn nh ngha bin kiu byte c tn l B1 v dnh 1 byte b nh cho n, trong byte
c cha gi tr 4.
Nu khng mun bin cha gi tr khi u ta c th dng ton t ? vo v tr gi tr khi
u.
V d:
B2 DB ?

V d trn ch nh ngha bin byte c tn l B2 v dnh 1 byte b nh cho n.
Khai bo bin kiu t
Tn bin DW Gi tr khi u
V d:
W1 DW 42H
V d ny nh ngha bin t c tn l W1 v dnh 2 byte b nh cho n, trong cha gi
tr khi u l 42H.
Mun bin khng cha gi tr khi u ta dng ton t ? v v tr gi tr khi u.
V d:
W2 DW ?
Khai bo bin kiu t kp
Tn bin DD Gi tr khi u
V d:
DW1 DD 1000
Khai bo bin mng
Bin mng l bin hnh thnh t mt dy lin tip cc phn t ( nh) c cng kiu byte t
hoc t kp. Khai bo bin mng l t tn cho mt dy lin tip cc byte t hoc t kp trong
b nh ng thi cung cp cc gi tr ban u tng ng. S phn t ca mng c xc nh
qua s gi tr khi u.
Tn bin mng DB/DW/DD Cc gi tr khi u

V d:
M1 DB 4,5,6,7,8,9

V d trn nh ngha bin mng c tn l M1 v dnh 6 byte lin tip cho n cha cc
gi tr khi u tng ng l 4, 5 ,6 ,7 ,8 , 9. Phn t u ca mng l 4 v c a ch trng
vi a ch ca tn bin (M1), phn t th hai l 5 v c a ch l M1+1...
Khi chng ta mun khi u cc phn t ca mng vi cng mt gi tr chng ta c th
dng thm ton t DUP. Ton t DUP dng lp li cc d liu vi s ln quy nh. C
php: Count DUP(Cc d liu) -> lp li cc d liu vi s ln Count.
V d:
M2 DB 20 DUP(0)
M3 DB 20 DUP(?)

V d trn nh ngha mt bin mng c tn l M2 gm 20 byte cha 20 gi tr khi u
bng 0 v mt bin mng khc c tn l M3 gm 20 byte nhng khng cha gi tr khi u.

Ch :
+ Ton t DUP c th dng lng nhau nh ngha 1 mng
V d:
M4 DB 4,3,2,2 DUP(1,2 DUP(5),6)

Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 23 -
Khai bo ny tng ng vi khai bo sau:
M4 DB 4,3,2,1,5,5,6,1,5,5,6
+ i vi cc b vi x l ca Intel, khi ta lu tr mt t trong b nh th byte thp ca n
s c nh c a ch thp, byte cao nh c a ch cao.
V d:
W1 DW 0FFACH

khi byte thp ACH s c ti a ch W1, cn byte cao FFH s c ti a ch
tip theo W1+1.
Khai bo bin kiu xu k t
Bin kiu xu k t l trng hp c bit ca bin mng kiu byte, trong cc phn t
ca mng l cc k t. Mt xu k t c th nh ngha bng cc k t hoc bng m ASCII
ca cc k t .
V d:
Xaukt DB ABCDE
hoc
Xaukt DB 41h,42h,43h,44h,45h
hoc
Xaukt DB 41h,42h,C,D,45h
b) Khai bo hng
Cc hng trong chng trnh Assembly c gn tn lm cho chng trnh d c hn.
Hng c th l kiu s hoc kiu k t. Vic gn tn cho hng c thc hin bng lnh gi
EQU nh sau:
Tn hng EQU Gi tr ca hng
V d:
CR EQU 0Dh
LF EQU 0Ah
CHAO EQU Hello

V lnh gi EQU khng dnh ch ca b nh cho tn hng nn ta c th khai bo hng
bt k u trong chng trnh. Tuy nhin ngi ta thng t cc khai bo hng trong on
d liu.
7. Khung ca mt chng trnh Assembly
Mt chng trnh m my trong b nh thng bao gm cc vng nh khc nhau cha
m lnh, cha d liu ca chng trnh v mt vng nh c dng lm ngn xp phc v
hot ng ca chng trnh. Chng trnh vit bng ngn ng Assembly cng phi c cu
trc tng t khi dch n s to ra m my c cu trc nh trn, tc l on m lnh s
c dch v trong vng nh m lnh, on d liu s c dch v trong vng nh d
liu v on ngn xp s c dch v to ra vng nh ngn xp cho chng trnh.
Trc khi tm hiu khung ca mt chng trnh Assembly ta xem xt cc khai bo c trong
chng trnh:
a) Khai bo quy m s dng b nh
Kch thc b nh dnh cho on m v on d liu trong mt chng trnh c xc
nh bng lnh gi .MODEL. Lnh ny phi c t trc cc lnh khc trong chng trnh
nhng t sau lnh gi khai bo loi CPU. C php:
.MODEL Kiu_kch_thc_b_nh
Kiu kch thc b nh M t
TINY M lnh v d liu gi gn trong mt on 64 KB
SMALL M lnh gi gn trong mt on 64 KB. D liu gi gn trong
W1
W1+1
FFH
ACH
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 24 -
mt on 64 KB
MEDIUM M lnh khng gi gn trong mt on 64 KB
D liu gi gn trong mt on 64 KB
COMPACT M lnh gi gn trong mt on 64 KB
D liu khng gi gn trong mt on 64 KB
LARGE M lnh khng gi gn trong mt on 64 KB
D liu khng gi gn trong mt on 64 KB
Khng c mng no ln hn 64 KB
HUGE M lnh khng gi gn trong mt on 64 KB
D liu khng gi gn trong mt on 64 KB
Cc mng c th ln hn 64 KB
b) Khai bo on ngn xp
Vic khai bo on ngn xp l dnh ra mt vng nh ln dng lm ngn xp phc
v cho hot ng ca chng trnh. C php:
.STACK Kch_thc

Kch_thc quyt nh s byte dnh cho ngn xp. Thng thng vi 100 - 256 byte l
lm ngn xp v ta c th khai bo kch thc cho ngn xp nh sau:
.STACK 100
hoc
.STACK 100H
c) Khai bo on d liu
on d liu cha ton b cc khai bo bin v hng ca chng trnh. Cc khai bo trong
on d liu t sau lnh gi .DATA
V d:
.DATA
MSG DB Hello!$
B1 DB 100
CR EQU 0DH
LF EQU 0AH
d) Khai bo on m
on m cha m lnh ca chng trnh, tc l cc lnh ca chng trnh s vit y.
bt u on m ta dng lnh gi .CODE
Bn trong on m, cc lnh ca chng trnh c th t chc thnh chng trnh chnh v
chng trnh con nh sau:
.CODE
Tn_CTChnh PROC

;Cc lnh ca chng trnh chnh
.
.
CALL Tn_CTCon ;Gi chng trnh con
.
.
Tn_CTChnh ENDP
;Khai bo cc chng trnh con y
Tn_CTCon PROC

;Cc lnh ca chng trnh con
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 25 -

RET ;Tr v
Tn_CTCon ENDP
e) Khung chng trnh Assembly dch ra chng trnh .EXE
.MODEL SMALL
.STACK 100H
.DATA
;Cc khai bo bin v hng ti y
.CODE
MAIN PROC
;Khi u cho on DS
MOV AX,@DATA
MOV DS,AX
;Cc lnh ca chng trnh ti y
......
;Tr v DOS dng hm 4CH ca INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
;Cc chng trnh con (nu c) khai bo ti y

END MAIN ;Kt thc ton b chng trnh

Dng cui cng ca chng trnh ta dng lnh gi END v tip theo l MAIN kt thc
ton b chng trnh. Ta c nhn xt rng MAIN l tn ca chng trnh chnh nhng v thc
cht n l ni bt u cc lnh ca chng trnh trong on m lnh.
Khi mt chng trnh EXE c np vo b nh, DOS s to ra mt mng gm 256 byte
lm on mo u chng trnh (Program Segment Prefix, PSP) dng cha cc thng tin
lin quan n chng trnh v t n vo ngay pha trc phn b nh cha m lnh ca
chng trnh. Trong khi a cc thng s lin quan n chng trnh vo PSP, DOS s
dng n cc thanh ghi DS v ES. Do vy DS v ES khng cha gi tr a ch ca on d
liu ca chng trnh. chng trnh c th chy ng ta phi c cc lnh khi to cho
thanh ghi on DS (hoc c ES nu cn) cha a ch on d liu ca chng trnh.
MOV AX,@DATA
MOV DS,AX
;MOV ES,AX ;Nu cn
trong @DATA l a ch ca on d liu.

V d: Chng trnh hin ln mn hnh dng ch CHAO CAC BAN

.MODEL SMALL
.STACK 100H
.DATA
CRLF DB 13,10,$
CHAO DB CHAO CAC BAN!$
.CODE
MAIN PROC
;Khoi tao thanh ghi DS
MOV AX,@DATA
MOV DS,AX
;Xuong dong moi
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 26 -
MOV AH,9
LEA DX,CRLF
INT 21H
;Hien thi loi chao
MOV AH,9
LEA DX,CHAO
INT 21H
;Xuong dong moi
MOV AH,9
LEA DX,CRLF
INT 21H
;Tro ve DOS
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
f) Khung chng trnh Assembly dch ra chng trnh .COM
Chng trnh ui .COM ngn gn v n gin hn nhiu so vi chng trnh ui .EXE.
Trong chng trnh ui .COM, on m, on d liu v on ngn xp c gp li trong
mt on duy nht l on m. Vic to ra tp ny khng nhng tit kim c thi gian v
b nh khi chy chng trnh m cn tit kim c c khng gian nh khi lu tr chng
trnh trn a.
Khung ca chng trnh Assembly dch ra ui .COM nh sau:

.MODEL TINY
.CODE
ORG 100H
START: JMP CONTINUE
;Cc khai bo bin v hng ti y

CONTINUE:
MAIN PROC
;Cc lnh ca chng trnh chnh ti y

;Tr v DOS
INT 20H
MAIN ENDP
;Cc chng trnh con (nu c) khai bo y

END START

Ta nhn thy ngay u on m l lnh gi ORG 100H dng gn a ch bt u ca
chng trnh ti 100h trong on m, cha li vng nh 256 byte (t a ch 0 n 255) cho
on mo u chng trnh (PSP).
Lnh JMP sau nhn START dng nhy qua ton b phn b nh dnh cho vic khai bo
d liu. ch ca lnh nhy ny l u chng trnh chnh.
Khi kt thc chng trnh COM, tr v DOS ta dng ngt INT 20H ca DOS lm
cho chng trnh gn hn.
kt thc ton b chng trnh ta dng lnh gi END theo sau l nhn START, v
START tng ng vi a ch lnh u tin ca chng trnh trong on m.
V d: Chng trnh hin ln mn hnh dng ch CHAO CAC BAN
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 27 -

.MODEL TINY
.CODE
ORG 100H
START: JMP CONTINUE
CRLF DB 13,10,$
CHAO DB CHAO CAC BAN!$
CONTINUE:
MAIN PROC
;Xuong dong moi
MOV AH,9
LEA DX,CRLF
INT 21H
;Hien thi loi chao
MOV AH,9
LEA DX,CHAO
INT 21H
;Xuong dong moi
MOV AH,9
LEA DX,CRLF
INT 21H
;Tro ve DOS
INT 20H
MAIN ENDP
END START
II BIN SON V DCH CHNG TRNH ASSEMBLY
vit v dch cc chng trnh Assembly ta theo cc bc sau:
Bc 1: Son tho chng trnh
Dng cc phn mm son tho vn bn dng TEXT (nh NC, PASCAL, C) to ra tp
vn bn chng trnh Assembly. Sau ghi tp chng trnh Assembly ra a vi ui .ASM
Bc 2: Dch chng trnh sang ngn ng my
Dng chng trnh dch MASM dch tp chng trnh ui .ASM sang m my di
dng tp ui .OBJ. Nu trong bc ny chng trnh c li v c php th chng trnh dch
s bo li v ta phi quay li Bc 1 sa.
Cch lm nh sau: gi s chng trnh MASM nm trn th mc gc C, du nhc ca
DOS l C:\>, khi t du nhc ca DOS g
MASM Tn tp chng trnh;
Du chm phy sau tn tp chng trnh bo cho MASM ch to tp .OBJ, khng to ra
cc tp khc. Tn tp chng trnh c th g c ui .ASM hoc khng g cng c.
Bc 3: Lin kt cc tp ui .OBJ to thnh mt tp chng trnh chy c ui
.EXE
Cch lm nh sau: gi s chng trnh lin kt LINK nm trn th mc gc C, du nhc
ca DOS l C:\>, khi t du nhc ca DOS ta g lnh
LINK Tntp1 + Tntp2 + ;
Chng trnh lin kt s ly tn tp u tin (Tntp1) t tn cho tp ui .EXE cui
cng. Du chm phy sau cng bo cho chng trnh LINK khng hi tn cc tp.
Bc 4: Nu chng trnh vit dch ra ui .COM th ta phi dng chng trnh
EXE2BIN ca DOS dch tip tp .EXE ra tp chng trnh chy c ui .COM
Cch lm nh sau: gi s chng trnh EXE2BIN nm trn th mc gc C, du nhc ca
DOS l C:\>, khi t du nhc ca DOS ta g lnh
EXE2BIN Tntp.EXE Tntp.COM
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 28 -


Ch : Vi trnh bin dch MASM phin bn 6.x tr ln, nu ch bin dch v lin kt mt
tp chng trnh th ta c th gp Bc 2, 3, 4 thnh mt bc bng cch dng chng trnh
kt hp c bin dch v lin kt ML. Ti du nhc ca DOS g vo nh sau:
ML Tntp1.ASM

III - THC HIN CC CU TRC IU KHIN CHNG TRNH BNG ASSEMBLY
Thng thng khi lp trnh chng ta cn n cc cu trc iu khin chng trnh sau:
+ Cu trc r nhnh IF-THEN
+ Cu trc la chn CASE
+ Cu trc lp vi s ln xc nh FOR-DO
+ Cu trc lp vi s ln khng xc nh REPEAT-UNTIL v WHILE-DO
thc hin cc cu trc iu khin chng trnh ny chng ta s dng cc lnh nhy v
lnh lp ca b vi x l. C th nh sau:
1. Cu trc r nhnh IF-THEN
C hai dng
(1) IF <iu kin> THEN <Cng vic>
(2) IF <iu kin> THEN <Cng vic 1> ELSE <Cng vic 2>
Hot ng ca cu trc ny c th din t bng lu sau















V d: 1. Vit on chng trnh gn BX |AX|

Gii
Dng cu trc IF kim tra nu AX < 0 th i du. Sau cu trc IF dng lnh MOV
a AX vo BX.
IF_:
CMP AX,0
JAE ENDIF_
NEG AX
ENDIF_:
MOV BX,AX

2. Gi s AL v BL cha m ASCII ca k t. Kim tra nu AL<=BL th hin ra mn hnh
k t trong AL, cn khng th hin k t trong BL.
Gii
iu kin
Cng vic
iu kin
Cng vic 1 Cng vic 2
Cu trc IF-THEN Cu trc IF-THEN-ELSE
ng
Sai ng Sai
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 29 -
Thut gii
IF AL<=BL THEN
Hin k t trong AL
ELSE
Hin k t trong BL
ENDIF

on chng trnh nh sau:
IF_:
CMP AL,BL
JA ELSE_
MOV AH,2
MOV DL, AL
INT 21H
JMP ENDIF_
ELSE_:
MOV AH,2
MOV DL, BL
INT 21H
ENDIF_:

2. Cu trc la chn CASE
Khc vi cu trc r nhnh IF-THEN ch r c hai nhnh, cu trc la chn c th r
nhiu nhnh. Dng tng qut nh sau:

CASE <Biu thc> OF
Gi_tr_1: Cng_vic_1
Gi_tr_2: Cng_vic_2


Gi_tr_N: Cng_vic_N
END_CASE
Hot ng ca cu trc ny th hin bng lu sau:








V d: Nu AX cha s m th a -1 vo BX, nu AX cha 0 th a 0 vo BX, nu AX
cha s dng th a 1 vo BX.
Gii
on chng trnh nh sau:
CASE_:
CMP AX,0
JL AM
JE KHONG
JG DUONG
AM:
Biu thc
Cng vic 1 Cng vic 2 Cng vic N
..
Gi_tr_1
Gi_tr_2
Gi_tr_N
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 30 -
MOV BX,-1
JMP ENDCASE_
KHONG:
MOV BX,0
JMP ENDCASE_
DUONG:
MOV BX,1
ENDCASE_:
3. Cu trc lp vi s ln xc nh FOR-DO
Dng tng qut
FOR <S ln lp> DO
<Cng vic>
ENDFOR
Hot ng ca cu trc ny th hin bng lu sau:

V d: Hin th mt dng 80 k t $
on chng trnh nh sau:
FOR_:
MOV CX,80
MOV AH,2
MOV DL,$
INT 21H
LOOP FOR_
ENDFOR_:
4. Cu trc lp vi s ln khng xc nh
a) Kim tra iu kin trc
Dng tng qut
WHILE <iu kin> DO <Cng vic>
Hot ng ca cu trc ny c th hin qua lu sau:

V d: m s k t c c t bn phm,khi gp k t CR th thi.
on chng trnh nh sau:

MOV CX,-1 ;Cha s k t m c
MOV AL,$ ; AL khc k t CR
WHILE_:
CMP AL,0DH ;C khc k t CR khng?
JE ENDWHILE_ ;Khng khc, tc bng CR th thot
INC CX
MOV AH,1
INT 21H
JMP WHILE_
ENDWHILE_:
b) Kim tra iu kin sau
Dng tng qut
REPEAT <Cng vic> UNTIL <iu kin>
Hot ng ca cu trc ny c th hin qua lu trn:

V d: m s k t c c t bn phm, khi gp k t CR th thi.
a s ln lp
vo b m
Cng vic
Gim b m
i 1
B m = 0?
ng
Sai
iu kin
Cng vic
Cu trc WHILE-DO
ng
Sai
iu kin
Cng vic
Cu trc REPEAT-UNTIL
ng
Sai
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 31 -
on chng trnh nh sau:

MOV CX,0 ;Cha s k t m c
REPEAT_:
MOV AH,1
INT 21H
CMP AL,0DH ;C bng k t CR khng?
JE UNTIL_ ;Bng CR
INC CX
JMP REPEAT_
UNTIL_:

IV - MT S CHNG TRNH C TH
Vit chng trnh assembly cho my tnh c nhn nhp vo mt s h 10 trong khong -
32768 n 32767, sau hin s nhp vo ra mn hnh dng nh phn.
Lu thut gii:
















Chng trnh hon chnh:

;Nhap tung so, nhap den dau chuyen thanh so den do
.MODEL SMALL
HienXau MACRO xau
PUSH AX
PUSH DX
LEA DX,xau
MOV AH,09H
INT 21H
POP DX
POP AX
ENDM
.STACK 100H
.DATA
TB1 DB 'Nhap vao mot so thap phan: $'
TB2 DB 13,10,'Dang nhi phan la: $'
.CODE
MAIN PROC
Bt u
Nhp tng ch
s, nhp n
u chuyn
thnh s n
a tng bit
ca s ra mh
Kt thc
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 32 -
;Khoi tao thanh ghi DS
MOV AX,@DATA
MOV DS,AX
;Xoa man hinh
MOV AH,0FH
INT 10H
MOV AH,0
INT 10H
;Hien thong bao nhap so thap phan
HIENXAU TB1
;Nhap tung so, nhan so tinh duoc truoc do voi 10 roi cong voi so vua nhap
XOR BX,BX ;Xoa BX = 0, BX dung de chua so he 10 nhap vao
MOV CX,10 ;So nhan
MOV DI,0 ;Ghi nho ve dau: DI=0 la duong, DI=1 la am
NHAP:
MOV AH,1
INT 21H
CMP AL,13
JE THOI ;Neu an Enter thi thoat
CMP AL,'-'
JNE TIEP
MOV DI,1
JMP NHAP
TIEP:SUB AL,30H ;Chuyen chu so thanh so
XOR AH,AH
PUSH AX ;Dua so vua nhap vao ngan xep
MOV AX,BX ;Dua so tinh duoc truoc do vao AX de nhan voi 10
MUL CX ;Nhan so tinh duoc truoc do voi 10
MOV BX,AX ;Dua tich sang BX
POP AX ;Lay lai so de trong ngan xep
ADD BX,AX ;Cong so do voi BX roi de ket qua trong BX
JMP NHAP ;Quay lai nhap so tiep theo
THOI:
;Kiem tra xem co nhap vao dau - hay khong
CMP DI,0
JE DUARA ;Khong nhap vao dau tru
NEG BX ;Co nhap dau -

;Dua so he 10 ra man hinh duoi dang he 2
DUARA:
HIENXAU TB2
CALL HIENBIN ;Goi chuong trinh con
;Tro ve DOS
MOV AH,4CH
INT 21H
MAIN ENDP
;Khai bao chuong trinh con
HIENBIN PROC
;Cat cac thanh ghi de khong bi anh huong
PUSH AX
PUSH BX
PUSH CX
Bi ging k thut vi x l - GV. Ng Cng Thng Chng 3 Lp trnh Assembly cho h vi x l
- 33 -
PUSH DX

MOV CX,16
MOV AH,2
MOV DH,0
HIEN:
XOR DL,DL
ROL BX,1
ADC DL,30H
INT 21H
INC DH
CMP DH,4
JNE HIENTIEP
MOV AH,2
MOV DL,' '
INT 21H
MOV DH,0
HIENTIEP:
LOOP HIEN
;Lay lai noi dung cua cac thanh ghi da cat
POP DX
POP CX
POP BX
POP AX
RET ;Tro ve chuong trinh chinh
HIENBIN ENDP
END MAIN

You might also like