You are on page 1of 6

e

PD

F -

PD

XChang

XChang

Nguy n nh Luy n
w

F -

Khoa K

.d ocu
k.
-trac

CH

Bi gi ng K thu t Vi X L
thu t & Cng ngh i h c Quy Nh n w .d

ocu-track

NG IV
Mt s khi nim c bn v hp ng

4.1. Gii thiu chung


Hp ng l dng ngn ng lp trnh d- i dng k hiu c c im:
- S dng cc k hiu hnh thc hoc cc t gi nh tun theo mt qui tc xc
nh.
- Mi t gi nh ny t- ng - ng 1-1 vi mt lnh ca CPU.
Nh- vy hp ng c mt tnh cht rt quan trng l c lin quan 1-1 ti hot
dng ca CPU. Mi dng lnh ca hp ng lun lun phn nh ng mt hnh ng
ca CPU.
C mt s thut ng lin quan sau y:
*Assembly language - Hp ng - l ngn ng lp trnh cp thp gn vi ngn
ng my.
* ASSEMBLER l ch- ng trnh dch cc ch- ng trnh vit bng hp ng sang
m my.
* Cc ch- ng trnh dch thng dng hin nay l
- Macro Assembler ca hng MicroSoft.
- Turbo Assembler ca hng Borland.
Chng ta s cp ch yu ti Macro Assembler
4.2. Ch- ng trnh hp ng u tin
d hiu hn mt s khi nim c bn ca hp ng, chng ta th xem xt
mt th d n gin sau y
V d 1. Vit ch- ng trnh hp ng hin th k t

dng to (40x25) ln

mn hnh/ Ch- ng trnh c dng COM.


B- c 1: Vit ch- ng trnh ngun m ASCII c tn co.asm
code segment
Assume
Cs:code, Ds:code
ORG 100h
Begin:
mov ax,3
int 10h
mov ah,02h
mov dl,02h
int
21h
int
20h
46
e
PD

F -

XChang

PD

F -

XChang

Nguy n nh Luy n
w

code ends

.d ocu
k.
-trac

Khoa K

Bi gi ng K thu t Vi X L
thu t & Cng ngh i h c Quy Nh n

.d ocu
-track

end begin
B- c 2: Dch thnh tp tin OBJ
masm co;
B- c 3: Lin kt thnh tp tin EXE
Link co;
B- c 4: Chuyn thnh tp tin com nu l dng com.
exe2bin co co.com
V d 2: Vit ch- ng trnh dng EXE hin th cu "Cho cc bn"
Data segment
cau db "Chao cac ban $"
Data ends
code segment
assume
cs: code, ds: data
Begin:
Mov ax, Data
Mov Ds, ax
Mov Dx, offset Cau
Mov ah,9
int 21h
mov ah,4ch
int 21h
Code ends
end begin
4.3. nh ngha on dng rt gn v dng y .
C hai cch nh ngha on ch- ng trnh:
- Dng y (Full segment definition)
- Dng rt gn (simplified segment definition).
Tr- c y khi xy dng ch- ng trnh hp ng th- ng - c s dng dng nh
ngha on y . Trong nhng nm gn y, ng- i ta cn s dng mt ph- ng
php th hai l nh ngha on dng rt gn. Ph- ng php ny - c p dng cho
MASM 5.0 tr i v TASM 1.0 tr i.
Cch vit rt gn n gin hn v ch- ng trnh th- ng dng tp tin ngun s
ngn gn hn song hin nay vn c nhiu ti liu, gio trnh s dng ph- ng php
nh ngha on y mc du khi ch- ng trnh th- ng di hn. L do l ngoi
vic t- ng thch vi nhiu ch- ng trnh - c xy dng t tr- c y cn c c l do
v mt ph- ng php.
47
e
PD

F -

PD

XChang

F -

XChang

Nguy n nh Luy n

Bi gi ng K thu t Vi X L

Khoa K

w
.d oc
k.
u-trac

thu t & Cng ngh

i h c Quy Nh n w .d

ocu-track

Bng d- i nu s so snh ca hai cch vit vi mt ch- ng trnh minh ho

n gin: dng nh ngha on y v nh ngha on dng rt gn.


Bng so snh 2 cch vit ch- ng trnh: dng y v rt gn.
Cch vit y
Stack
Segment
DB 64 DUP(?)
Stack
ends

Cch vit rt gn
.Model Small
. Stack 64
. DATA
Data1
DW 2345h
Data
Segment
Data2
DW 98fh
data1 DW 2345h
Result
DW ?
data2 DW 98fh
.Code
Result DW
Main:
Data
ends
Mov ax,@Data
Code
Segment
Mov DS,AX
assume Cs:code, Ds: data, Ss:St
........
ack
END Main
Main:
MOV ax,data
Mov DS,AX
.........
Code
ends
end main

4.4. Cc thnh phn c bn ca hp ng


4.4.1 Tp tin hp ng ngun: Tp hp cc pht biu hp ng (Assembly
language statement). Mi mt pht biu - c vit trn 1 dng. c th l 1 lnh
(Assembly language Instruction) hoc 1 ch dn (Assembler directive).
4.4.2 Lnh hp ng: (Instruction)
a. Khun dng ca 1 lnh hp ng
Trong tr- ng hp chung, mt lnh hp ng c 4 phn c bn sau:
[Nhn:]
[Tn gi nh]
[ton hng] [;Ghi ch]
Dng lnh hp ng c mt s c im sau:
- Mi dng ch cha duy nht mt lnh hp ng v ng- c li, mi lnh phi
nm trn mt dng.
- Mi phn phi cch nhau bng t nht l mt k t trng.
- Mi dng di ti a 128 k t.
C th v cc phn ca dng lnh hp ng:
48
e
PD

F -

PD

XChang

XChang

Nguy n nh Luy n
w

F -

Bi gi ng K thu t Vi X L

Khoa K

.d oc
u-

trac

thu t & Cng ngh

i h c Quy Nh n w .d

- Nhn (Label): - c dng thay th a ch cu lnh. Nhn cc cu lnh

ocu-track

k.

khc tham chiu n dng lnh thng qua nhn ca n.


Nhn c di bt k, song ch c 31 k t u tin - c dng, s cn li
assembler s b qua.
v d 2 printloop l 1 nhn ch 1 a ch. Writechar cng l 1 nhn ch 1 th
tc.
- Tn gi nh (Mnemonic)

Tn gi nh xc nh hnh ng m CPU thc hin. Tn gi nh c th


di t 2 n 7 k t.
V d: INT 21, MOV ah,2h... l nhng ch th ca hp ng.
- Ton hng (Operand): xc nh cc d liu m cu lnh cn x l. Ton
hng th- ng l cc hng, tn cc thanh ghi, tn t- ng tr- ng hay biu thc......
- Ch thch (Comment): Vng ny lun bt u bng du chm phy ";"
- c s dng ghi cc li bnh, ch gii....
Vng ny asembler s b qua khi dch
b. Cc kiu ton hng hp ng
Ton hng ca cu lnh hp ng c th - c qui nh d- i nhiu dng khc
nhau, - c gi l ch a ch. Ch a ch bo cho CPU bit cch tnh gi tr
tht ca ton hng trong cu lnh. S ch a ch - c xc nh khi thit k CPU
l c nh, khng thay i - c.
Cc ch a ch trong Assembler cng ging nh- cc ch a ch trong
CPU. 80x86 cung cp tng cng 7 ch a ch khc nhau, tuy vy c th gom
thnh 3 nhm chnh l ton hng thanh ghi, ton hng trc hng v ton hng b nh.
* Ton hng thanh ghi (Register addressing mode).
Trong ch a ch ny, d liu - c l- u trong thanh ghi lm ton hng. Cc thanh
ghi c th s dng trong ch a ch ny l:
AH,BH,CH, DH, AL,BL,CL,DL
AX,BX,CX,DX,SP,BP,SI,DI
CS,DS,ES,SS
VD: ADD AX, BX
(AX <-- AX+BX)
INC CL
(CL <-- CL+1)
MOV BX,DX
(BX <-- DX)
Ch :
- B nh s khng - c truy nhp ch a ch ny
- Cc thanh ghi trong lnh phi ph hp v kch th- c.
* Ton hng trc hng (Ch a ch tc th - Immediate addressing
mode):
ch a ch ny, ton hng ngun l mt hng s tc mt gi tr c th 8
bit hay 16 bit - c ch r trong cu lnh, v y cng l gi tr tht ca ton hng.
49
e
PD

F -

PD

XChang

XChang

Nguy n nh Luy n
w
.d oc
k.
u-trac

F -

Khoa K

Bi gi ng K thu t Vi X L
thu t & Cng ngh i h c Quy Nh n w .d

Khi lnh - c hp dch, ton hng c ngay m lnh v v vy ch a ch ny

ocu-track

- c thc hin rt nhanh.


Cc gi tr ny c th cho d- i nhiu dng: thp phn khng du v c du,
nh phn, thp lc phn, cc tn t- ng tr- ng - c nh ngha bng lnh EQU hay
=. Ngoi ra cng c th dng cc ton t SEG, OFFSET, TYPE, SIZE, LENGTH,
$......trong ton hng ch ny.
VD: MOV AX,500
MOV AH,1002B
MOV AX,2000H
dong=30
cot=40
MOV BX,(80*(dong-1)+cot-1)*2
Khi dch, MASM s chuyn cc hng s trn thnh cc gi tr t- ng ng m
CPU hiu - c.
Ch : Mi thanh ghi trong ch a ny u c th - c s dng tr cc thanh ghi
on. Mun chuyn d liu vo cc thanh ghi on th khng thc hin trc tip m
thc hin thng qua cc thanh ghi a dng.
VD: MOV DS, 0123h
; Lnh khng ng v phi thc hin
; qua thanh ghi a dng
Sa li:
MOV AX,0123h
MOV DS, AX
* Ton hng b nh (Memory addressing mode)
- Ton hng b nh trc tip (Direct addressing mode)
ch a ch ny, a ch ca d liu trong b nh do mt ton hng c
trong lnh xc nh trc tip. a ch ny l mt tn hay mt biu thc hng. C th
kt hp thm ton t ch s [ ], ton t +, - v ton t (:).
VD MOV DX, [2400] ; chuyn tr 2400 vo thanh ghi DX
Nu trong mt ton hng khng ch r tn thanh ghi on th thanh ghi on
- c dng l thanh ghi DS, song cng c th dng ton t (:) ch thanh ghi on
khc
VD: gi s A l mt bin d- i dng Word, nu mun truy xut ni dung ca
bin A th ta ch cn ghi tn bin A trong cu lnh.
VD
A
DW 1234h
MOV AX, A
hay:
MOV AX,[A]
; Chuyn ni dung ca bin A vo thanh ghi AX
VD: Lnh MOV AX, DS:[100h] hay
MOV AX, DS:100h
Chuyn ni dung 16 bit ti a ch 100h trong on DS vo thanh ghi AX.
50
e
PD

F -

PD

XChang

XChang

Nguy n nh Luy n
w
.d oc
k.
u-trac

F -

Khoa K

Bi gi ng K thu t Vi X L
thu t & Cng ngh i h c Quy Nh n w .d

Nu khng ghi thanh ghi on th ton hng trn khng phi l ton hng b
nh m l ton hng trc hng.
Ch : Hai lnh sau l t- ng - ng:

ocu-track

Mov ax, [1234h]


v Mov ax, 1234h
- Ton hng b nh gin tip
Ton hng b nh gin tip cho php dng cc thanh ghi v di ch
n cc gi tr trong b nh. Ch c 4 thanh ghi BX, BP, SI, DI c th dng vi
ton hng b nh gin tip.
di c th l mt hng hay mt ton hng b nh trc tip. Mt ton hng
c nhiu di, cc di s - c cng li thnh mt di chung xc nh khi
TT
Kiu ton hng
Ton hng
Ch a ch on ngm nh
dch.
1 Ton hng thanh gh
Thanh ghi
Thanh ghi
Khng
+i Ch thanh ghi gin tip (Register Indirect Addressing Mode)
2 Ton hng trc hn
d liu
Tc th
Khng
Trong ch
a ch thanh ghi gin tip, a ch ca b nh cha ton hng - c
3 gTon hng b nh
[offset]
Trc tip
DS
thanh
ghi
xc
nh.
Cc
thanh
ghi
s
dng
cho
mc
ch
ny
l
SI,
DI v BX. V
4
"
BX,SI. DI
Thanhg ghi gin ti
DS
trong
ghi
ny
xc
nh
pThanh
5 tr- ng hp" ny, cc thanh
[BX]+
di
ghi lch,
c s cn thanh
DS ghi on l DS.
VD 6 MOV AL,[BX]
; a
ch
y
l DS:BX
"
[DI]
+
di Thanh
ghi ch s
DS
MOV [DI],AH
; a
ch
y

l
DS:DI

[BP]+ di
SS
; a
y
l DS:SI
7 MOV [SI],AX
"
[DI]ch
+
di
Thanh
ghi ch s
DS
[SI]s
+
di c
DS
+ Ch a ch c
(Based
Relative Addressing Mode)
s

8 a ch
" ny, cc [BX][SI]+
s
d BX, BP v cng vi di DS
ch
thanh ghi c
- c s dng
i
DS
xc nh a ch offset ca d liu. di c th l 1 hng hay 1 ton hng b nh
[BX][DI] + d
SS
trc tip. Mt ton hng c
th
c
nhiu

di,
cc

di
s
c cng li thnh 1
i
SS
di chung xc nh. [BP][SI] + d
a ch on ngm nh ng vi BX l DS cn SS l vi BP.

VD:

MOV CX,[BX]+10
;chuyn DS:BX+10 v DS:BX+11 vo CX
Thanh ghi on
CS
DS
ES
SS
Lnh t- ng - ng vi
Thanh ghi offset
IP
SI, DI, BX SI, DI, BX
SP, BP
MOV CX,[BX+10] hoc MOV CX, 10[BX]

VD:

MOV AL,[BP]+5
; chuyn ni dung SS:BP+5 ->AL
+ Ch a ch ch s (Indexed Relative Addressing Mode )
Trong ch ny cc thanh ghi ch s DI, SI cng vi di xc nh offset
ca d liu. Thanh ghi on ngm nh l DS.
VD: MOV DX,[SI]+5
;DS:SI+5
MOV CL,[DI]+20
;DS:DI+20
+ Ch a ch ch s c s (Based Indexed Relative Addressign Mode)
Tng hp c hai ch a ch c s v ch s - c gi l ch a ch ch
s c s, trong s dng c thanh ghi c s v thanh ghi ch s.
VD MOV CL,[BX][DI]+8
;DS: BX+DI+8
MOV CH,[BX][SI]+20 ;DS:BX+SI+20
51
PD

F -XChang

PD

F -XChang

Nguy n

You might also like