Bài giảng Lập trình hợp ngữ - Chương 5: Nhập môn ASM
Chöông 5 : Nhaäp moân Assembly
Muïc tieâu
Hieåu ngoân ngöõ maùy vaø ngoân ngöõ Assembly.
Trình hôïp dòch Assembler.
Lyù do nghieân cöùu Assembly.
Hieåu caùc thaønh phaàn cô baûn cuûa Assembly
Naém ñöôïc caáu truùc cuûa 1 CT Assembly.
Bieát vieát 1 chöông trình Assembly.
Bieát caùch dòch, lieân keát vaø thöïc thi 1 chöông trình
Assembly.
5/8/2022
Chuong 5 Nhap mon ASM
1
Giôùi thieäu ngoân ngöõ Assembly
▪ Giuùp khaùm phaù bí maät phaàn cöùng cuõng nhö phaàn
meàm maùy tính.
▪ Naém ñöôïc caùch phaàn cöùng MT laøm vieäc vôùi heä
ñieàu haønh vaø hieåu ñöôïc baèng caùch naøo 1 trình
öùng duïng giao tieáp vôùi heä ñieàu haønh.
▪ Moät MT hay moät hoï MT söû duïng 1 taäp leänh maõ
maùy rieâng cuõng nhö 1 ngoân ngöõ Assembly rieâng.
5/8/2022
Chuong 5 Nhap mon ASM
2
Assembler
▪ Moät chöông trình vieát baèng ngoân ngöõ Assembly
muoán MT thöïc hieän ñöôïc ta phaûi chuyeån thaønh
ngoân ngöõ maùy.
Chöông trình duøng ñeå dòch 1 file vieát baèng Assembly
➔ ngoân ngöõ maùy , goïi laø Assemble.
Coù 2 chöông trình dòch:
MASM vaø TASM
5/8/2022
Chuong 5 Nhap mon ASM
3
Lyù do nghieân cöùu Assembly
▪ Ñoù laø caùch toát nhaát ñeå hoïc phaàn cöùng MT
vaø heä ñieàu haønh.
▪ Vì caùc tieän ích cuûa noù .
▪ Coù theå nhuùng caùc chöông trình con vieát
baèng ASM vaøo trong caùcchöông trình vieát
baèng ngoân ngöõ caáp cao .
5/8/2022
Chuong 5 Nhap mon ASM
4
Leänh maùy
▪ Laø 1 chuoåi nhò phaân coù yù nghóa ñaëc bieät – noù ra
leänh cho CPU thöïc hieän taùc vuï.
▪ Taùc vuï ñoù coù theå laø :
di chuyeån 1 soá töø vò trí nhôù naøy sang vò trí nhôù khaùc.
Coäng 2 soá hay so saùnh 2 soá.
0 0 0 0 0 1 0 0 Add a number to the AL register
1 0 0 0 0 1 0 1 Add a number to a variable
1 0 1 0 0 0 1 1 Move the AX reg to another reg
5/8/2022
Chuong 5 Nhap mon ASM
5
Leänh maùy (cont)
▪ Taäp leänh maùy ñöôïc ñònh nghóa tröôùc, khi CPU ñöôïc
saûn xuaát vaø noù ñaëc tröng cho kieåu CPU .
▪ Ex : B5 05 laø 1 leänh maùy vieát daïng soá hex, daøi 2 byte.
▪ Byte ñaàu B5 goïi laø Opcode
▪ Byte sau 05 goïi laø toaùn haïng Operand
YÙù nghóa cuûa leänh B5 05 : cheùp giaù trò 5 vaøo reg AL
5/8/2022
Chuong 5 Nhap mon ASM
6
Caùch vieát 1 chöông trình Assembly
Duøng 1 phaàn meàm soaïn thaûo VB baát kyø ñeå soan
CT Assembly nhö : NotePad, NC, maøn hình C,
Pascal ...
Soaïn CT
TenCT.ASM
CT coù phaàn môû roäng laø .ASM
Dòch CT
Lieân keát CT
Chaïy CT
duøng MASM ñeå dòch chöông trình nguoàn .ASM
➔ File Object.
duøng LINK ñeå lieân keát Object taïo taäp tin thöïc
hieän .EXE
Goû teân taäp tin thöïc hieän .EXE töø daáu nhaéc
DOS ñeå chaïy
5/8/2022
Chuong 5 Nhap mon ASM
7
Dòch vaø noái keát chöông trình
MASM.EXE
TenCT .ASM
TenCT .OBJ
LINK.EXE
TenCT .CRF
TenCT .MAP
TenCT .LIST
TenCT .EXE
5/8/2022
Chuong 5 Nhap mon ASM
8
Moät chöông trình minh hoaï
DOSSEG
MOV DX, OFFSET MES
MOV AH, 9
INT 21
.MODEL SMALL
.STACK 100h
.DATA
MES DB “HELLO WORD”,’$’
.CODE
MAIN PROC
MOV AH,4CH
INT 21
MAIN ENDP
END MAIN
MOV AX, @DATA
MOV DS, AX
5/8/2022
Chuong 5 Nhap mon ASM
9
Caùc file ñöôïc taïo
▪ Sau khi dòch thaønh coâng file nguoàn.ASM, ta coù caùc file :
▪ File listing : file VB , caùc doøng coù ñaùnh soá thöù töï maõ.
▪ File Cross reference
▪ File Map
▪ File Obj
▪ File EXE
5/8/2022
Chuong 5 Nhap mon ASM
10
File Listing
▪ Microsoft (R) Macro Assembler Version 5.10
10/11/4
▪
Page 1
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
▪
1
DOSSEG
2
.MODEL SMALL
.STACK 100H
.DATA
3
4
5 0000 48 45 4C 4C 4F 20
MES DB "HELLO WORD$"
6
7
57 4F 52 44 24
.CODE
MAIN PROC
MOV AX,@DATA
8 0000
9 0000 B8 ---R
10 0003 8E D8
11 0005 B4 09
12 0007 BA 0000 R
13 000A CD 21
14 000C B4 4C
15 000E CD 21
16 0010
MOV DS, AX
MOV AH,9
MOV DX, OFFSET MES
INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
17
▪ ♀Microsoft (R) Macro Assembler Version 5.10
10/11/4
5/8/2022
Chuong 5 Nhap mon ASM
11
Map File
▪ Start Stop Length Name
Class
▪ 00000H 0001FH 00020H _TEXT
▪ 00020H 0002AH 0000BH _DATA
▪ 00030H 0012FH 00100H STACK
CODE
DATA
STACK
▪ Origin Group
▪ 0002:0 DGROUP
▪ Program entry point at 0000:0010
5/8/2022
Chuong 5 Nhap mon ASM
12
Giaûi thích
▪ .model small : duøng kieåu caáu truùc <= 64 K boä nhôù cho
maõ , 64K cho döõ lieäu.
▪ .Stack 100h : daønh 256 bytes cho stack cuûa chöông
trình .
▪ .Data : ñaùnh daáu phaân ñoaïn döõ lieäu ôû ñoù caùc bieán
ñöôïc löu tröõ.
▪ .Code : ñaùnh daáu phaân ñoaïn maõ chöùa caùc leänh phaûi
thi haønh.
▪ Proc : khai baùo ñaàu 1 thuû tuïc, trong Ex naøy ta chæ coù 1
thuû tuïc Main.
5/8/2022
Chuong 5 Nhap mon ASM
13
Giaûi thích (cont)
▪ Cheùp ñòa chæ ñoaïn döõ lieäu vaøo thanh ghi AX.
▪ Sau ñoù cheùp vaøo thanh ghi DS
▪ Goïi haøm soá 9 cuûa Int 21h cuûa Dos ñeå xuaát
chuoåi kyù töï ra maøn hình.
▪ Thoaùt khoûi CT .
▪ Main endp : ñaùnh daáu keát thuùc thuû tuïc
▪ End main : chaám döùt chöông trình
5/8/2022
Chuong 5 Nhap mon ASM
14
Caáu truùc cuûa 1 CT ASM
DOSSEG
.MODEL kieåu boä nhôù
.STACK kích thöôùc
.DATA
khai baùo bieán, haèng
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS,AX
caùc leänh cuûa chöông trình chính
MOV AH,4CH ; Thoaùt khoûi chöông trình
INT 21H
MAIN ENDP
caùc chöông trình con khaùc neáu coù
END MAIN
5/8/2022
Chuong 5 Nhap mon ASM
15
Caùc cheá ñoä boä nhôù
Kieåu
Moâ taû
SMALL
Maõ leänh trong 1 ñoaïn.Döõ lieäu trong 1 ñoaïn
MEDIUM Maõ leänh nhieàu hôn 1 ñoaïn.Döõ lieäu trong 1 ñoaïn
COMPACT Maõ leänh trong 1 ñoaïn. Döõ lieäu nhieàu hôn 1 ñoaïn
LARGE
HUGE
Maõ leänh nhieàu hôn 1 ñoaïn
Döõ lieäu nhieàu hôn 1 ñoaïn,khoâng coù maûng naøo >
64K
Maõ leänh nhieàu hôn 1 ñoaïn
Döõ lieäu nhieàu hôn 1 ñoaïn, maûng coù theå > 64K
5/8/2022
Chuong 5 Nhap mon ASM
16
Daïng leänh
Chuù thích
▪ [name] [operator] [ operand] [comment]
Maõ leänh daïng
gôïi nhôù
Register, oâ nhôù
Trò, haèng
Nhaõn, teân bieán
Teân thuû tuïc
Ex : MOV CX , 0
Moãi doøng chæ chöùa 1 leänh vaø moãi leänh
phaûi naèm treân 1 doøng
LAP : MOV CX, 4
LIST DB 1,2,3,4
5/8/2022
Chuong 5 Nhap mon ASM
17
INT 21H
▪ Leänh INT sohieäu ngaét ñöôïc duøng ñeå goïi
chöông trình ngacuûa DOS vaBIO.
Ngaét 21h
Muoán söû duïng haøm naøo cuûa INT 21h ta ñaët
function_number vaøo thanh ghi AH, sau ñoù goïi INT 21h
Function_number
chöùc naêng
1
2
nhaäp 1 kyù töï töø baøn phím
Xuaát 1 kyù töï ra maø hình.
Xuaát 1 chuoåi kyù töï ra maøn
9
hình
5/8/2022
Chuong 5 Nhap mon ASM
18
INT 21h (cont)
Haøm 1 : Nhaäp 1 kyù töï
Input : AH =1
Output : AL = maõ ASCCI cuûa phím aán
= 0 neáu 1 phím ñieàu khieåân ñöôïc aán
Haøm 2 : Hieån thò 1 kyù töï ra maøn hình
Input : AH =2
DL = Maõ ASCII cuûa kyù töï hieån thò hay kyù töï ñieàu khieån
5/8/2022
Chuong 5 Nhap mon ASM
19
Thí duï minh hoïa
DOSSEG
MOV AH,2
.MODEL SMALL
.STACK 100H
.CODE
MOV DL, 0DH
INT 21H
MOV DL , 0AH
INT 21H
MAIN PROC
MOV AH , 2
MOV DL , ‘?’
INT 21H
MOV DL , BL
INT 21H
MOV AX , 4C00H
INT 21H
MOV AH ,1
INT 21H
MOV BL,AL
MAIN ENDP
END MAIN
? N
N
KEÁT QUAÛ
5/8/2022
Chuong 5 Nhap mon ASM
20
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hợp ngữ - Chương 5: Nhập môn ASM", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_lap_trinh_hop_ngu_chuong_5_nhap_mon_asm.ppt

