Professional Documents
Culture Documents
Trnh ASM
1. Directive iu khin segment dng n gin
a. .Model
- Chc nng: Bo cho chng trnh dch ASM bit xc lp mt vng
nh Ram thch hp cho chng trnh
- C Php: .Model kiu
Tiny
: Code + Data <= 64k
Small
: Code<=64k; Data<=64k
Compact : Code<=64k;Data>=64k
Medium : Code>=64k;Data<=64k
Large
: Code>=64k;Data>=64k
----------------------------------------------------------------------------------
b. .Stack
- Chc nng: Bo cho chng trnh dch ASM bit xc lp mt vng
nh Ram cho Stack
- C Php: .Stack ln (tnh theo byte)
- V D: .Stack 100h (xin 256byte)
---------------------------------------------------------------------------------
c. .Data
- Chc nng: Bo cho chng trnh dch ASM bit xc lp mt vng
nh Ram cho d liu
- C Php: .Data
Khai bo bin
- Cc dng bin hay dng ca ASM:
+Dng s: tn_bin kiu_bin gn_gi_tr_ban_u (hoc ?)
Db (define byte: 1byte)
Dw (define word: 2byte)
V d: x db ?
y dw -254
+Dng xu: tn_bin db cc_k_t (cch nhau bi du ,)
_ln dup(1 k t hoc ?)
V d: x db h,e,l,l,o
y db hello
z db 100h dup(A)
t db 100 dup(?)
---------------------------------------------------------------------------------
d. .Code
- Chc nng: Bo cho chng trnh dch ASM bit xc lp mt vng
nh Ram cho m my ca chng trnh
- C Php: .Code
-----------------------------------------------------------------------------------
.Model kiu
.Stack _ln
.Data
Khai bo bin
.Code
Nhn_C.Trnh:
Mov ax,@data
Mov ds,ax
cc lnh ASM
Mov ah,4ch
Int 21h
End Nhn_C.Trnh
#################################################################
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
3. Macro
Tn_Macro Macro cc_tham_s
bo v cc thanh ghi m thn Macro s ph v
.. cc lnh
Endm
-----------------------------------------------------------------------------------
Cc nhn (chng trnh chnh, chng trnh con) phi hiu nhau.
Mun vy cn c 2 directive l Public (cho php) v Extrn (xin
php)
- V d: Tnh a ly tha n
+ Vd1: dng hm ASM khng i
Tp 1: lt1.cpp
#include<iostream.h>
#include<conio.h>
int a,n;
extrn int LT();
void main()
{
clrscr();
cout<<\n Nhap a: ; cin>>a;
cout<<\n Nhap n: ; cin>>n;
cout<<\n <<a<< luy thua <<n<< bang: <<LT();
getch();
}
Tp 2: lt11.asm
.model small
.stack 100h
.data
Extrn _a:word,_n:word
.code
Public @LT$qv
@LT$qv PROC
Mov bx,_a
Mov cx,_n
Mov ax,1
And cx,cx ; dng c xt liu n c bng 0
Jz L2
; nu n=0 th nhy n L2
L1:
Mul bx
Loop L1
L2:
Ret
@LT$qv EndP
End
Tp 2: lt22.asm
.model small
.stack 100h
.data
Extrn _n:word
.code
Public @LT$qi
@LT$qi PROC
Push bp
; Ct gi tr BP hin thi vo stack
Mov bp,sp
Mov bx,[bp+6] ;bx=a
Mov cx,_n
Mov ax,1
And cx,cx
; dng c xt liu n c bng 0
Jz L2
; nu n=0 th nhy n L2
L1:
Mul bx
Loop L1
L2:
Pop bp
Ret
@LT$qi EndP
End
Tp 2: lt33.asm
.model small
.stack 100h
.data
Extrn _n:word
.code
Public @LT$qii
@LT$qii PROC
Push bp
; Ct gi tr BP hin thi vo stack
Mov bp,sp
Mov bx,[bp+6] ;bx=a
Mov cx,[bp+8] ;cx=n
Mov ax,1
And cx,cx
; dng c xt liu n c bng 0
Jz L2
; nu n=0 th nhy n L2
L1:
Mul bx
Loop L1
L2:
Pop bp
Ret
@LT$qii EndP
End
-----------------------------------------------------------------------------------
C : Carry
P : Parity A : Auxiliary Z : Zero S : Sign
T : Trap
I : Interrupt D : Direction O : Overflow
-----------------------------------------------------------------------------------
b. Push
- Chc nng: a ni dung 2 byte ca SRC vo nh Stack
- C Php: Push SRC
- V d: Push reg
mem
-----------------------------------------------------------------------------------
c. Pop
- Chc nng: a ni dung 2 byte ca nh Stack vo SRC
- C Php: Pop SRC
- V d: Pop reg
Mem
-----------------------------------------------------------------------------------
d. PushF
e. PopF
- Chc nng: a ni dung 2 byte ca nh Stack vo thanh ghi c
- C Php: PopF
-----------------------------------------------------------------------------------
f. Xchg
- Chc nng: DST
SRC
- C Php: Xchg DST,SRC
- V D: Xchg reg1,reg2 ;(ax,bx)
Xchg reg,mem
;(ax,value)
-----------------------------------------------------------------------------------
g. Lea
- Chc nng: a phn a ch offset ca 1 bin nh vo reg
- C Php: Lea Reg,Mem
-----------------------------------------------------------------------------------
2. Nhm cc lnh S Hc
a. Add
- Chc nng: DST
DST + SRC
- C Php: Add DST,SRC
- V D: Add reg1,reg2 ;(ax,bx)
Add reg,data
;(ax,100)
Add reg,mem
;(bx,value)
Add mem,reg
;(value,cx)
Add mem,data ;(value,-100)
-----------------------------------------------------------------------------------
b. SUB
- Chc nng: DST
DST - SRC
- C Php: Sub DST,SRC
- V D: Sub reg1,reg2 ;(ax,bx)
Sub reg,data
;(ax,100)
Sub reg,mem
;(bx,value)
Sub mem,reg
;(value,cx)
Sub mem,data ;(value,-100)
-----------------------------------------------------------------------------------
c. Mul/iMul
- Chc nng: Nhn 2 ton hng vi s khng du/c du
8bit * 8bit | al * SRC
ax
16bit * 16bit | ax * SRC dx:ax
- C Php: Mul/iMul SRC
-----------------------------------------------------------------------------------
d. Div/iDiv
6
e. Inc
- Chc nng: DST
DST + 1
- C Php: Inc DST
-----------------------------------------------------------------------------------
f. Dec
- Chc nng: DST
DST - 1
- C Php: Dec DST
-----------------------------------------------------------------------------------
g. Neg
- Chc nng: DST
- DST
- C Php: Neg DST
-----------------------------------------------------------------------------------
h. Cmp
- Chc nng: So snh ni dung 2 ton hng v dng c
- C Php: Cmp DST,SRC
- Gii Thch: Cmp DST,SRC
nu DST<SRC
C = 1 (c carry)
DST>= SRC
C=0
DST=SRC
Z=1 (c Zero)
DST#SRC
Z=0
-----------------------------------------------------------------------------------
b. Or
7
- Chc nng: Thc hin php ton hoc logic (bit ca php ton kt
qu =1 khi v ch khi 1 trong 2 bit tng ng ca 2 ton hng u = 1)
- C Php: Or DST,SRC
- V D:
Al = 10101010
Bl = 11001100
Or al,bl
11101110
-----------------------------------------------------------------------------------
c. Xor
- Chc nng: Thc hin php ton exclusive or (bit ca php ton kt
qu =1 khi v ch khi 2 bit tng ng ca 2 ton hng khc nhau)
- C Php: Xor DST,SRC
- V D:
Al = 10101010
Bl = 11001100
Xor al,bl
01100110
-----------------------------------------------------------------------------------
d. Shl
- Chc nng: Tt c cc bit dch sang tri (bit cui (bit 16) s dch vo
c C)
- C Php: Shl DST,count
- V D:
Shl ax,1
nu count >=2 th phi nh n Cl
Mov cl,4
Shl ax,cl
-----------------------------------------------------------------------------------
e. Shr
- Chc nng: Tt c cc bit dch sang phi (bit u (bit 1) s dch vo c
C)
- C Php: Shr DST,count
- V D:
Shr ax,1
nu count >=2 th phi nh n Cl
Mov cl,4
Shr ax,cl
-----------------------------------------------------------------------------------
f. Sar
- Chc nng: Tt c cc bit dch sang phi (bit u (bit 1) s dch vo c
C) nhng bit 16 vn gi nguyn gi tr
- C Php: Sar DST,count
- V D:
Sar ax,1
nu count >=2 th phi nh n Cl
8
Mov cl,4
Sar ax,cl
-----------------------------------------------------------------------------------
b. Int
- Chc nng: Gi chng trnh (kch hot chng trnh) con phc v
ngt ca h thng
- C Php: Int n ; n l s ngt
-----------------------------------------------------------------------------------
c. Jmp
- Chc nng: Nhy khng iu kin
- C Php: Jmp Nhn
Ch bc nhy khng qu 64k
-----------------------------------------------------------------------------------
d. Loop
- Chc nng: thc hin li khi lnh ASM nm gia nhn v loop nhn
cho n khi cx=0, sau mi ln thc hin cx gim i 1
- C Php: Nhn
s nhy nu c = 1
s nhy nu c = 0
jz Nhn
jnz Nhn
s nhy nu z = 1
s nhy nu z = 0
js Nhn
jns Nhn
s nhy nu s = 1 (s m)
s nhy nu s = 0 (s dng)
-----------------------------------------------------------------------------------
a. Hm s 1
mov ah,1
int 21h
ch nhn t bn phm 1 k t
-----------------------------------------------------------------------------------
b. Hm s 2
mov al
mov ah,0eh
int 10h
a ra mn hnh 1 k t
-----------------------------------------------------------------------------------
c. Hm s 3
lea dx (tn bin xu)
mov ah,9
int 21h
hin 1 xu k t kt thc bng $ ra mn hnh ti v tr con tr
-----------------------------------------------------------------------------------
d. Hm s 4
mov ah,4eh
int 21h
tr v dos
-----------------------------------------------------------------------------------
10