Professional Documents
Culture Documents
Bai 1 Can Ban Ve Hop Ngu 7202
Bai 1 Can Ban Ve Hop Ngu 7202
BI 1: CN BN V HP NG
1. MC CH
Lm quen vi ngn ng lp trnh Assembly
Bit cch vit, dch, chy mt vi chng trnh n gin trn chng trnh m phng
Emu8086
2. TM TT L THUYT
Hp ng (assembler) l ngn ng bc thp, gip cho ngi lp trnh khng phi ghi nh
m my (opcode) m s dng cc t ng gi nh (pseudo-code) gn vi ngn ng t nhin
miu t cng vic cn thc hin. Tuy vy, assembler rt gn vi ngn ng my, i hi
ngi lp trnh phi hiu bit tng i y v cu trc phn cng my tnh.
Vi mi kiu kin trc ca b vi x l, c mt b lnh ring, do , c mt ngn ng
assembler ring cho n. y, chng ta nghin cu assembler cho cc b vi x l Intel thuc
h x86. Cc chng trnh s c vit trn chng trnh m phng Emu8086. Tuy chng
trnh m phng khng th hin c y cc tp lnh c trong h 8086. Ngc li,
chng trnh m phng gip ta tm hiu v hp ng mt cch trc quan v d hiu.
2.1. Cu trc thng thng ca mt chng trnh hp ng c vit trn
Emu8086:
#make_COM# <Khai bo chng trnh dang .com>
.stack
<Khai bo kch thc ngn xp>
.data
<Khai bo d liu>
.code
ORG 100h
; COM file is loaded at CS:0100h
<Cc lnh>
End
Chng ta c b qua cc khai bo v .model, .stack, .data, .code v end khi chy trn
chng trnh m phng.
V d: Chng trnh sau in ra mn hnh dng ch Hello, World!
#make_COM#
; Standard header
ORG 100H
JMP START ; Jump to start:
msg DB 13, 10, 'Hello, World!$
; Data
START:
LEA DX, msg
; Load address of msg to DX register
MOV AH, 9
INT 21h
Lu :
- Mi chng trnh u phi c on code thot khi chng trnh, nu khng
chng trnh s khng dng khi ht chng trnh ca mnh.
2.2. Khai bo bin trong hp ng
C php:
<tn bin>
hoc
<tn bin>
to>)
D<Kiu DL>
D<Kiu DL>
dup(<gi tr khi
Khai bo trong hp ng
ch DB ?
ch DB a
ch DB 5
s DB 10,13,hello world!$
i DW 100
l DD ?
a DB 1,2,3
a DB 100 dup(?)
a DB 100 dup(50 dup(?))
2.3. Dch, lin kt, chy v chn li chng trnh t du nhc DOS
to mt chng trnh dng .com, ta chn File/New/COM Template nh hnh 1.1
des,src
des
des
des,src
des,src
num
3. THC HNH
3.1. Bi tp
Bi 1. Vit CT nhp vo 1 k t, xut ra k t
V d:
Nhap 1 ky tu: b
Ky tu vua nhap: b
Bi 2. Vit chng trnh xut ra mn hnh mt s dng ch
V d:
Dai hoc Quoc gia Thanh pho Ho Chi Minh
Truong Dai hoc Khoa hoc tu nhien
Khoa Dien tu Vien thong
Bi 3. Vit CT nhp vo 1 k t, xut ra k t lin trc v lin sau.
V d:
Moi ban nhap 1 ky tu: b
Ky tu lien truoc: a
Ky tu lien sau: c
Bi 4. Vit CT nhp vo 1 k t thng. In ra k t Hoa
V d:
Moi ban nhap 1 ky tu: b
Ky tu hoa la: B
Bi 5. Vit CT nhp vo 1 k t hoa. In ra k t thng
V d:
Moi ban nhap 1 ky tu: B
Ky tu thuong la: b
Bi 6. Vit chng trnh nhp vo 2 s nguyn dng x1, x2 (1 x2 < x1 < 9). Xut ra kt
qu cc php tnh: 3x1 + 5x2
V d:
x1 = 3
x2 = 4
3x1 + 5X2 = 32
3.2. Hng dn
Bi 1. nhp 1 mt k t s dng hm 1 ca ngt 21h, xut, s dng hm 2.
V d:
mov AH,1
int 21h
; kt qu trong AL
mov DL,AL ; k t cn xut trong DL
mov AH,2
int 21h
Bi 2. Cp k t xung dng l 10,13. C th khai bo nhiu xu k t hoc chung mt xu.
V d:
Msg1
DB 10,13,9, Dai hoc Quoc gia Thanh pho Ho Chi
Minh
Msg2
DB 10,13,9, Truong Dai hoc Khoa hoc tu nhien
Hoc
Msg12
Minh
BI 2: CC CH TH LOGIC V IU KHIN
1. MC CH
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
Trong hp ng, mun so snh hai s, ta phi thc hin mt php ton s hc hoc logic
trn hai s v cn c vo cc bit trong thanh ghi c ri a ra kt lun. lm vic ny, c
th dng lnh CMP v TEST.
Bn cht ca lnh CMP Des,Src l lnh SUB Des,Src (thc hin php tnh Des Src)
nhng kt qu ca php tnh khng c lu vo Des nh trong lnh SUB.
V d: so snh hai s nguyn dng
MOV AH,1
MOV AL,2
CMP AH,AL
Sau khi thc hin hai lnh trn, c Carry (CF) bt, bo hiu rng AH < AL
Bn cht ca lnh TEST Des,Src l lnh AND Des,Src (thc hin php tnh Des AND
Src) nhng kt qu ca php tnh khng c lu vo Des nh trong lnh AND.
V d: kim tra hai bit cui cng ca AL
TEST AL,3 ; 3h = 11b
Nu c Zero (ZF) bt, c ngha l c hai bit 0 v 1 ca AL u bng 0.
2.2. Lnh nhy
Thng thng, khi mt lnh (instruction) c thc hin, gi tr ca thanh ghi IP
(instruction pointer) c t ng cp nht tr n lnh k tip. Ngoi ra, ni dung ca
thanh ghi IP ch c th b thay i thng qua mt s lnh c bit. l: cc lnh nhy (J*),
lnh lp (LOOP*), lnh gi hm (call, ret), lnh gi ngt (int, iret). Cc lnh ny c xp
vo nhm Lnh iu khin lung (Program flow control instructions). Trong bi thc hnh
ny, chng ta s hc cch s dng cc lnh nhy v cc lnh lp.
Lnh nhy khng iu kin
JMP <target>
C cc trng hp sau:
JMP SHORT <tn nhn> (short jump). Khi trong m lnh lu 1 byte
khong cch (offset) gia v tr hin ti v v tr cn nhy n. Kiu ny ch
nhy trong phm vi t 128 n +127 byte so vi v tr hin ti.
V d:
JMP SHORT Calculate
JMP <tn nhn> (near jump). Khi trong m lnh lu 2 byte khong
cch (offset) gia v tr hin ti v v tr cn nhy n. Kiu ny nhy ty
trong phm vi segment.
V d:
JMP Calculate
JMP FAR PTR <tn nhn> (far jump). Khi trong m lnh lu offset
v segment ca v tr cn nhy n. Kiu ny nhy n bt k ch no.
V d:
JMP FAR PTR Calculate
JMP <con tr 2 byte> (near indirect jump). Khi trong m lnh lu
a ch offset ca mt nh. Khi thc hin, IP 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
...
<Label>