Microprocessor Part3

35
1/Chapter3 © DHBK 2005 Nội dung môn học Nội dung môn học 1. Giới thiệu chung về hệ vi xử lý 2. Bộ vi xử lý Intel 8088/8086 3. Lập trình hợp ngữ cho 8086 4. Tổ chức vào ra dữ liệu 5. Ngắt và xử lý ngắt 6. Truy cập bộ nhớ trực tiếp DMA 7. Các bộ vi xử lý trên thực tế

description

vxl

Transcript of Microprocessor Part3

Slide 1B vi x lý Intel 8088/8086
Lp trình hp ng cho 8086
T chc vào ra d liu
Ngt và x lý ngt
Truy cp b nh trc tip DMA
Các b vi x lý trên thc t
© DHBK 2005
3.1 Gii thiu khung ca chng trình hp ng
3.2 Cách to và chy mt chng trình hp ng trên máy IBM PC
3.3 Các cu trúc lp trình c bn thc hin bng hp ng
3.4 Mt s chng trình c th
© DHBK 2005
3.1 Gii thiu khung ca chng trình hp ng
3.1.1 Cú pháp ca chng trình hp ng
3.1.2 D liu cho chng trình
3.1.3 Bin và hng
3.1.4 Khung ca mt chng trình hp ng
Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
3.1 Gii thiu khung ca chng trình hp ng
3.1.1 Cú pháp ca chng trình hp ng
D liu cho chng trình
Bin và hng
Khung ca mt chng trình hp ng
Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
.Model Small
.Stack 100
Tbao DB ‘Chuoi da sap xep:’, 10, 13
MGB DB ‘a’, ‘Y’, ‘G’, ‘T’, ‘y’, ‘Z’, ‘U’, ‘B’, ‘D’, ‘E’,
DB ‘$’
.Code
MOV DS, AX
DEC BX ;so vong so sanh phai lam
LAP: MOV SI, DX ; SI chi vao dau mang
MOV CX, BX ; CX so lan so cua vong so
MOV DI, SI ;gia su ptu dau la max
MOV AL, [DI] ;AL chua phan tu max
TIMMAX:
CMP [SI], AL ; phan tu moi > max?
JNG TIEP ;khong, tim max
MOV DI, SI ; dung, DI chi vao max
MOV AL, [DI] ;AL chua phan tu max
TIEP: LOOP TIMMAX ;tim max cua mot vong so
CALL DOICHO ;doi cho max voi so moi
DEC BX ;so vong so con lai
JNZ LAP ;lam tiep vong so moi
MOV AH, 9 ; hien thi chuoi da sap xep
LEA DX, Tbao
INT 21H
MAIN Endp
DOICHO Proc
PUSH AX
khai báo on ngn xp
khai báo on d liu
khai báo on mã lnh
bt u chng trình chính
kt thúc chng trình chính
bt u chng trình con
kt thúc on mã
chú thích bt u
Chng trình dch không phân bit ch hoa, ch thng
Trng tên:
dài: 1 n 31 ký t
tên không c có du cách, không bt u bng s
c dùng các ký t c bit: ? . @ _ $ %
du . phi c t v trí u tiên nu s dng
Nhãn kt thúc bng du :
Ví d:
3.1 Gii thiu khung ca chng trình hp ng
Cú pháp ca chng trình hp ng
3.1.2 D liu cho chng trình
Bin và hng
Khung ca mt chng trình hp ng
Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
D liu:
h s 10: 1234
Ký t, chui ký t: ‘A’, “abcd”
© DHBK 2005
3.1 Gii thiu khung ca chng trình hp ng
Cú pháp ca chng trình hp ng
D liu cho chng trình
3.1.3 Bin và hng
Khung ca mt chng trình hp ng
Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
DW (Define Word): nh ngha bin kiu t - 2 byte
DD (Define Double word): nh ngha bin kiu t kép - 4 byte
Bin byte:
M2 DB 100 DUP(0)
M3 DB 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
13000
13001
13002
13003
13004
13005
13006
13007
13008
13009
1300A
7
6
5
4
8
9
M1
DB 4, 2, 5
M2 DB 1, 4
STR1 DB ‘string’
Hng có tên
Thng c khai báo on d liu
Ví d:
LF EQU 0Ah ; LF là line feed
CHAO EQU ‘CR Hello’
3.1 Gii thiu khung ca chng trình hp ng
Cú pháp ca chng trình hp ng
D liu cho chng trình
Bin và hng
3.1.4 Khung ca mt chng trình hp ng
Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
Khai báo quy mô s dng b nh
.MODEL Kiu kích thuc b nh
Ví d: .Model Small
mã lnh và d liu gói gn trong mt on
Small (nh)
mã lnh nm trong 1 on, d liu 1 on
Medium (trung bình)
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, không có mng nào ln hn 64 K
Huge ( s)
mã lnh nm trong nhiu on, d liu trong nhiu on, các mng có th ln hn 64 K
© DHBK 2005
Khai báo on ngn xp
.Stack kích thuc (bytes)
.Stack 100 ; khai báo stack có kích thc 100 bytes
Giá tr ngm nh 1 KB
Khai báo on d liu:
.Data
Khai báo on mã
3.1.4 Khung ca chng trình hp ng
Khung ca chng trình hp ng dch ra file .EXE
.Model Small
.Stack 100
.Code
;tr v DOS dùng hàm 4CH ca INT 21H
MOV AH, 4CH
END MAIN
© DHBK 2005
Chng trình Hello.EXE
;v u dòng mi dùng hàm 9 ca INT 21H
MOV AH,9
;Hin th li chào dùng hàm 9 ca INT 21H
MOV AH,9
;v u dòng mi dùng hàm 9 ca INT 21H
MOV AH,9
MOV AH, 4CH
3.1.4 Khung ca chng trình hp ng
Khung ca chng trình hp ng dch ra file .COM
Ch có 1 on cho Code,Data,Stack
Tr v DOS bng INT 20H
.Model Tiny
CONTINUE:
MAIN Endp
END START
© DHBK 2005
0000H
FFFFH
Chiu tin ca mã và d liu
© DHBK 2005
Chng trình Hello.COM
;v u dòng mi dùng hàm 9 ca INT 21H
MOV AH,9
;Hin th li chào dùng hàm 9 ca INT 21H
MOV AH,9
;v u dòng mi dùng hàm 9 ca INT 21H
MOV AH,9
PSP
PSP
100h
Chng 3 Lp trình hp ng vi 8086
Gii thiu khung ca chng trình hp ng
3.2 Cách to và chy mt chng trình hp ng trên máy IBM PC
Các cu trúc lp trình c bn thc hin bng hp ng
Mt s chng trình c th
© DHBK 2005
*.asm
*.obj
*.exe
*.com
3.1 Gii thiu khung ca chng trình hp ng
3.2 Cách to và chy mt chng trình hp ng trên máy IBM PC
3.3 Các cu trúc lp trình c bn thc hin bng hp ng
3.3.1 Cu trúc la chn
3.3.2 Cu trúc lp
© DHBK 2005
If-then
If iu_kin then công_vic
Ví d: Gán cho BX giá tr tuyt i ca AX
; If AX<0
; then
© DHBK 2005
If-then-else
If iu_kin then công_vic1 else công_vic2
Ví d: if AX<BX then CX=0 else CX=1
; if AX<BX
;else
JMP End_if
Case
...
END CASE
Ví d:
© DHBK 2005
MOV CX, 80 ;s ln lp
MOV AH,2 ;hàm hin th
MOV DL,’$’ ;DL cha ký t cn hin th
HIEN: INT 21H ; Hin th
LOOP HIEN
b m=0?
S

ví d: Hin th mt dòng ký t $ trên màn hình
© DHBK 2005
XOR AX, AX ;AX=0
XOR BX, BX ;BX=0
TIEP:
INC BX ;BX=BX+1
ADD AX,2 ;AX=AX+2
End_while:
Trong khi AX<>10 thì
BX=BX+1 và AX=AX+2
© DHBK 2005
MOV AH,1 ;hàm c ký t t bàn phím
TIEP: INT 21H ; c mt ký t vào AL
CMP AL, 13 ; c CR?
JNE TIEP ; cha, c tip
End_:
S

ví d: c t bàn phím cho ti khi gp ký t CR thì thôi
© DHBK 2005
3.1 Gii thiu khung ca chng trình hp ng
3.2 Cách to và chy mt chng trình hp ng trên máy IBM PC
3.3 Các cu trúc lp trình c bn thc hin bng hp ng
3.4 Mt s chng trình c th
© DHBK 2005
2 cách:
Dùng lnh IN, OUT trao i vi các thit b ngoi vi
phc tp vì phi bit a ch cng ghép ni thit b
Các h thng khác nhau có a ch khác nhau
Dùng các chng trình con phc v ngt ca DOS và BIOS
n gin, d s dng
không ph thuc vào h thng
Ngt 21h ca DOS:
Vào: AH=1
Ra: AL=mã ASCII ca ký t, AL=0 khi ký t là phím chc nng
Hàm 2: hin 1 ký t lên màn hình
Vào: AH=2
DL=mã ASCII ca ký t cn hin th
Hàm 9: hin chui ký t vi $ cui lên màn hình
Vào: AH=9
DX=a ch lch ca chui ký t cn hin th
Hàm 4CH: kt thúc chng trình loi .exe
Vào: AH=4CH
3.4.2 Mt s chng trình c th
Ví d 1: Lp chng trình yêu cu ngi s dng gõ vào mt ch cái thng và hin th dng ch hoa ca ch cái ó lên màn hình
Ví d:
A
Ví d 2: c t bàn phím mt s h hai (dài nht là 16 bit), kt qu c c ti thanh ghi BX. Sau ó hin ni dung thanh ghi BX ra màn hình.
Ví d 3: Nhp mt dãy s 8 bit dng thp phân, các s cách nhau bng 1 du cách và kt thúc bng phím Enter. Sp xp dãy s theo th t tng dn và in dãy s ã sp xp ra màn hình.
© DHBK 2005
3.4.2 Mt s chng trình c th
Ví d 4: Vit chng trình cho phép nhp vào kích thc M*N và các phn t ca mt mng 2 chiu gm các s thp phân 8 bit.
Tìm s ln nht và nh nht ca mng, in ra màn hình
Tính tng các phn t ca mng và in ra màn hình
Chuyn thành mng N*M và in mng mi ra màn hình
Gii:
Nhp phn t [1,1]=
Nhp phn t [1,2]
Tng=256