You are on page 1of 35

DHBK 2005

1/Chapter

Ni dung mn hc
1.
2.
3.
4.
5.
6.
7.

Gii thiu chung v h vi x l


B vi x l Intel 8088/8086
Lp trnh hp ng cho 8086
T chc vo ra d liu
Ngt v x l ngt
Truy cp b nh trc tip DMA
Cc b vi x l trn thc t

DHBK 2005

2/Chapter

Chng 3 Lp trnh hp ng vi 8086


3.1 Gii thiu khung ca chng trnh hp ng
3.2 Cch to v chy mt chng trnh hp ng trn my IBM PC
3.3 Cc cu trc lp trnh c bn thc hin bng hp ng
3.4 Mt s chng trnh c th

DHBK 2005

3/Chapter

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng

3.1.1 C php ca chng trnh hp ng


3.1.2 D liu cho chng trnh
3.1.3 Bin v hng
3.1.4 Khung ca mt chng trnh hp ng

Cch to v chy mt chng trnh hp ng trn my IBM PC


Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

4/Chapter

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng

3.1.1 C php ca chng trnh hp ng


D liu cho chng trnh
Bin v hng
Khung ca mt chng trnh hp ng

Cch to v chy mt chng trnh hp ng trn my IBM PC


Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

5/Chapter

3.1.1 C php ca chng trnh hp ng


1.

.ModelSmall

2.

.Stack100

3.
4.
5.
6.
7.

.Data

8.
9.

MAINProc

10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.

33.
34.
35.
36.
37.
38.
39.
40.

41.
42.

khai bo kiu kch thc b nh


khai bo on ngn xp

TbaoDBChuoidasapxep:,10,13
MGBDBa,Y,G,T,y,Z,U,B,D,E,
DB$
.Code

MOVAX,@Data
MOVDS,AX
MOVBX,10
LEA
DEC
LAP: MOVSI,DX
MOV
MOV
MOV
TIMMAX:
INCSI
CMP
JNG

MOV
MOV
TIEP:LOOPTIMMAX

CALLDOICHO
DEC

JNZ
MOV
LEA
INT
MOV
INT

khai bo on m lnh
;khoidauDS
;BX:sophantucuamang
DX,MGB
;DXchivaodaumangbyte
BX
;sovongsosanhphailam
;SIchivaodaumang
CX,BX
;CXsolansocuavongso
DI,SI
;giasuptudaulamax
AL,[DI]
;ALchuaphantumax
;chivaophantubencanh
[SI],AL
;phantumoi>max?
TIEP
;khong,timmax
DI,SI
;dung,DIchivaomax
AL,[DI]
;ALchuaphantumax
;timmaxcuamotvongso
;doichomaxvoisomoi
BX
;sovongsoconlai
LAP
;lamtiepvongsomoi
AH,9
;hienthichuoidasapxep
DX,Tbao
21H
AH,4CH
;veDOS
21H

MAIN
Endp
DOICHOProc
PUSHAX
MOV
XCHG
MOV
POP
RET

DOICHOEndp
ENDMAIN

khai bo on d liu

bt u chng trnh chnh

ch thch bt u
bng du ;

kt thc chng trnh chnh


AL,[SI]
AL,[DI]
[SI],AL
AX

bt u chng trnh con


kt thc on m

DHBK 2005

6/Chapter

3.1.1 C php ca chng trnh hp ng


Tn M lnh
Cc ton hng
; ch gii
Chng trnh dch khng phn bit ch hoa, ch thng
Trng tn:
cha cc nhn, tn bin, tn th tc
di: 1 n 31 k t
tn khng c c du cch, khng bt u bng s
c dng cc k t c bit: ? . @ _ $ %
du . phi c t v tr u tin nu s dng
Nhn kt thc bng du :
V d:
TWO_WORD
?1
two-word
.@?
1word
Lets_go

DHBK 2005

7/Chapter

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng

C php ca chng trnh hp ng


3.1.2 D liu cho chng trnh
Bin v hng
Khung ca mt chng trnh hp ng

Cch to v chy mt chng trnh hp ng trn my IBM PC


Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

8/Chapter

3.1.2 D liu cho chng trnh


D liu:
cc s h s 2: 0011B
h s 10: 1234
h s 16: 1EF1H, 0ABBAH
K t, chui k t: A, abcd

DHBK 2005

9/Chapter

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng

C php ca chng trnh hp ng


D liu cho chng trnh
3.1.3 Bin v hng
Khung ca mt chng trnh hp ng

Cch to v chy mt chng trnh hp ng trn my IBM PC


Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

3.1.3 Bin v hng

10
/Chapter3

DB (Define Byte): nh ngha bin kiu byte


DW (Define Word): nh ngha bin kiu t - 2 byte
DD (Define Double word): nh ngha bin kiu t kp - 4 byte
Bin byte:
Tn
V d:

DB

gia_tr_khi u

B1
B1
C1
C1

DB
DB
DB
DB

4
?
$
34

DHBK 2005

11
/Chapter3

3.1.3 Bin v hng


Bin t:
Tn
V d:

DW

W1
W2

DW
DW

gia_tr_khi u
4
?

Bin mng:
M1 DB

4, 5, 6, 7, 8, 9

M2 DB
M3 DB

100 DUP(0)
100 DUP(?)

M4 DB

4, 3, 2, 2 DUP (1, 2 DUP(5), 6)

M4 DB

4, 3, 2, 1, 5, 5, 6, 1, 5, 5, 6

1300A
13009
13008
13007
13006
13005
13004
13003
13002
13001
13000

9
8
7
6
5
4

M1

DHBK 2005

12
/Chapter3

3.1.3 Bin v hng


Bin mng 2 chiu:

M1 DB
DB

M2 DB
DB
DB

1, 6, 3
4, 2, 5

1, 4
6, 2
3, 5

1300A
13009
13008
13007
13006
13005
13004
13003
13002
13001
13000

5
2
4
3
6
1

M1

DHBK 2005

3.1.3 Bin v hng


Bin kiu xu k t
STR1 DB
STR2 DB
STR3 DB

string
73h, 74h, 72h, 69h, 6Eh, 67h
73h, 74h, r, i, 6Eh, 67h

Hng c tn
C th khai bo hng trong chng trnh
Thng c khai bo on d liu
V d:
CR
EQU
LF
EQU
CHAO EQU

0Dh ; l carriage return


0Ah ; LF l line feed
CR Hello

MSG DB

CHAO, $

13
/Chapter3

DHBK 2005

14
/Chapter3

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng

C php ca chng trnh hp ng


D liu cho chng trnh
Bin v hng
3.1.4 Khung ca mt chng trnh hp ng

Cch to v chy mt chng trnh hp ng trn my IBM PC


Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

15
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Khai bo quy m s dng b nh
.MODEL Kiu kch thuc b nh
V d: .Model Small
Kiu

M t

Tiny (hp)

m lnh v d liu gi gn trong mt on

Small (nh)

m lnh nm trong 1 on, d liu 1 on

Medium
(trung bnh)

m lnh nm trong nhiu on, d liu 1 on

Compact (gn)

m lnh nm trong 1 on, d liu trong nhiu on

Large (ln)

m lnh nm trong nhiu on, d liu trong nhiu on, khng c mng
no ln hn 64 K

Huge ( s)

m lnh nm trong nhiu on, d liu trong nhiu on, cc mng c th


ln hn 64 K

DHBK 2005

16
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Khai bo on ngn xp
.Stack
V d:

kch thuc (bytes)

.Stack 100 ; khai bo stack c kch thc 100 bytes

Gi tr ngm nh 1 KB

Khai bo on d liu:
.Data
Khai bo cc bin v hng

Khai bo on m
.Code

DHBK 2005

17
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Khung ca chng trnh hp ng dch ra file .EXE
.Model
.Stack
.Data

Small
100
;cc nh ngha cho bin v hng

.Code
MAIN

Proc
;khi u cho DS
MOV
AX, @data
MOV
DS, AX
;cc lnh ca chng trnh

;tr v DOS dng hm 4CH ca INT 21H


MOV
AH, 4CH
INT
21H
MAIN Endp
;cc chng trnh con nu c
END MAIN

DHBK 2005

18
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Chng trnh Hello.EXE
.Model
.Stack
.Data

Small
100
CRLF
MSG

.Code
MAIN

MAIN

DB
DB

13,10,$
Hello! $

Proc
;khi u cho DS
MOV
AX, @data
MOV
DS, AX
;v u dng mi dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, CRLF
INT
21H
;Hin th li cho dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, MSG
INT
21H
;v u dng mi dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, CRLF
INT
21H
;tr v DOS dng hm 4CH ca INT 21H
MOV
AH, 4CH
INT
21H
Endp
END MAIN

DHBK 2005

19
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Khung ca chng trnh hp ng dch ra file .COM
Ch c 1 on cho Code,Data,Stack
Tr v DOS bng INT 20H
.Model
.Code

Tiny

ORG
100h
START: JMP
CONTINUE
;cc nh ngha cho bin v hng
CONTINUE:
MAIN Proc
;cc lnh ca chng trnh
INT
20H
;tr v DOS
MAIN Endp
;cc chng trnh con nu c
END START

DHBK 2005

20
/Chapter3

3.1.4 Khung ca chng trnh hp ng


FFFFH

SP
Chiu tin ca ngn xp

Chiu tin ca m v d liu


CONTINUE:
0100H
0000H

D liu
JMP CONTINUE
on u chng trnh
Program segment prefix

IP

DHBK 2005

21
/Chapter3

3.1.4 Khung ca chng trnh hp ng


Chng trnh Hello.COM

.Model
.Code

Tiny

ORG
100H
START: JMP CONTINUE
CRLF
DB
13,10,$
MSG
DB
Hello! $
CONTINUE:
MAIN
Proc
;v u dng mi dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, CRLF
INT
21H
;Hin th li cho dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, MSG
INT
21H
;v u dng mi dng hm 9 ca INT 21H
MOV
AH,9
LEA
DX, CRLF
INT
21H
;tr v DOS
INT
20H
MAIN
Endp
END START

DHBK 2005

22
/Chapter3

3.1.4 Khung ca chng trnh hp ng

Stack

chng trnh
100h

PSP

.COM

SS
CS
DS
ES

chng trnh

PSP

. EXE

100h

DHBK 2005

23
/Chapter3

Chng 3 Lp trnh hp ng vi 8086

Gii thiu khung ca chng trnh hp ng


3.2 Cch to v chy mt chng trnh hp ng trn my IBM PC
Cc cu trc lp trnh c bn thc hin bng hp ng
Mt s chng trnh c th

DHBK 2005

24
/Chapter3

3.2 Cch to mt chng trnh hp ng


To ra tp vn bn ca chng trnh
*.asm
Dng MASM dch ra m my
*.obj
Dng LINK ni tp . obj thnh
*.exe

Dch c ra .com?

khng

Dng exe2bin dch *.exe thnh


*.com

chy chng trnh

DHBK 2005

25
/Chapter3

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng


3.2 Cch to v chy mt chng trnh hp ng trn my IBM PC
3.3 Cc cu trc lp trnh c bn thc hin bng hp ng
3.3.1 Cu trc la chn
3.3.2 Cu trc lp

3.4 Mt s chng trnh c th

DHBK 2005

3.3.1 Cu trc la chn


If-then

If iu_kin then cng_vic


V d: Gn cho BX gi tr tuyt i ca AX

; If AX<0
CMP
AX, 0 ;
JNL
End_if ;
; then
NEG
AX
;
End_if: MOV
BX,

AX<0 ?
khng, thot ra
ng, o du
AX
;gn

26
/Chapter3

DHBK 2005

3.3.1 Cu trc la chn


If-then-else

If iu_kin then cng_vic1 else cng_vic2


V d: if AX<BX then CX=0 else CX=1

; if AX<BX
CMP
AX, BX
; AX<BX ?
JL
Then_ ; ng, CX=0
;else
MOV
CX, 1 ; sai, CX=1
JMP
End_if
Then_: MOV
CX, 0;
End_if:

27
/Chapter3

DHBK 2005

3.3.1 Cu trc la chn


Case

Case Biu thc


Gi tr 1: cng vic 1
Gi tr 2: cng vic 2
...
Gi tr N: cng vic N
END CASE

V d:
Nu AX<0 th CX=-1
Nu AX=0 th CX=0
Nu AX>0 th CX=1

CMP
JL
JE
JG
AM: MOV
JMP
Khong: MOV
JMP

AX, 0 ;
AM
; AX<0
Khong ; AX=0
DUONG; AX>1
CX, -1
End_case
CX, 0
End_case

DUONG: MOV CX, 1


End_case:

28
/Chapter3

DHBK 2005

3.3.2 Cu trc lp
For-Do

29
/Chapter3

For s ln lp Do cng vic


v d: Hin th mt dng k t $ trn mn hnh

khi to b m

cng vic

gim b m i 1

b m=0?

MOV CX, 80
;s ln lp
MOV AH,2
;hm hin th
MOV DL,$;DL cha k t cn hin th
HIEN: INT 21H
; Hin th
LOOP HIEN
;End_for

DHBK 2005

3.3.2 Cu trc lp
While-Do

30
/Chapter3

While iu kin Do cng vic


v d:
Khi to AX=0, BX=0
Trong khi AX<>10 th
BX=BX+1 v AX=AX+2

S
iu kin

cng vic

XOR AX, AX
;AX=0
XOR BX, BX
;BX=0
TIEP:
CMP AX,10
;so snh AX vi 10
JNE End_while ;kt thc nu AX<>10
INC BX
;BX=BX+1
ADD AX,2
;AX=AX+2
End_while:

DHBK 2005

3.3.2 Cu trc lp
Repeat-until

Repeat cng vic until iu kin


v d: c t bn phm cho ti khi gp k t CR th thi
cng vic

iu kin

MOV AH,1
TIEP: INT 21H
CMP AL, 13
JNE TIEP
End_:

;hm c k t t bn phm
; c mt k t vo AL
; c CR?
; cha, c tip

31
/Chapter3

DHBK 2005

32
/Chapter3

Chng 3 Lp trnh hp ng vi 8086

3.1 Gii thiu khung ca chng trnh hp ng


3.2 Cch to v chy mt chng trnh hp ng trn my IBM PC
3.3 Cc cu trc lp trnh c bn thc hin bng hp ng
3.4 Mt s chng trnh c th

DHBK 2005

3.4.1 Xut nhp d liu


2 cch:
Dng lnh IN, OUT trao i vi cc thit b ngoi vi
phc tp v phi bit a ch cng ghp ni thit b
Cc h thng khc nhau c a ch khc nhau

Dng cc chng trnh con phc v ngt ca DOS v BIOS


n gin, d s dng
khng ph thuc vo h thng

Ngt 21h ca DOS:


Hm 1: c 1 k t t bn phm
Vo: AH=1
Ra: AL=m ASCII ca k t, AL=0 khi k t l phm chc nng

Hm 2: hin 1 k t ln mn hnh
Vo: AH=2
DL=m ASCII ca k t cn hin th

Hm 9: hin chui k t vi $ cui ln mn hnh


Vo: AH=9
DX=a ch lch ca chui k t cn hin th

Hm 4CH: kt thc chng trnh loi .exe


Vo: AH=4CH

33
/Chapter3

DHBK 2005

3.4.2 Mt s chng trnh c th

34
/Chapter3

V d 1: Lp chng trnh yu cu ngi s dng g vo mt


ch ci thng v hin th dng ch hoa ca ch ci ln
mn hnh
V d:
Hay nhap vao mot chu cai thuong: a
A

V d 2: c t bn phm mt s h hai (di nht l 16 bit), kt


qu c c ti thanh ghi BX. Sau hin ni dung thanh
ghi BX ra mn hnh.
V d 3: Nhp mt dy s 8 bit dng thp phn, cc s cch
nhau bng 1 du cch v kt thc bng phm Enter. Sp xp dy
s theo th t tng dn v in dy s sp xp ra mn hnh.

DHBK 2005

3.4.2 Mt s chng trnh c th

35
/Chapter3

V d 4: Vit chng trnh cho php nhp vo kch thc M*N


v cc phn t ca mt mng 2 chiu gm cc s thp phn 8
bit.
Tm s ln nht v nh nht ca mng, in ra mn hnh
Tnh tng cc phn t ca mng v in ra mn hnh
Chuyn thnh mng N*M v in mng mi ra mn hnh
Hy nhp gi tr M=
Hy nhp gi tr N=
Nhp phn t [1,1]=
Nhp phn t [1,2]
......

Gii:

S ln nht l phn t [3,4]=15


S nh nht l phn t [1,2]=2
Tng=256
...

You might also like