ậ ChChươương 5 : Nh p môn Assembly ng 5 : Nh p môn Assembly ậ
ụ
M c tiêu
ể ể
ữ ữ
ợ ị ợ ị
ứ ứ
ả ủ ả ủ
ể ể
ế ế
ự ự
ữ ữ Hi u ngôn ng máy và ngôn ng Assembly. Hi u ngôn ng máy và ngôn ng Assembly. Trình h p d ch Assembler. Trình h p d ch Assembler. Lý do nghiên c u Assembly. Lý do nghiên c u Assembly. ầ ơơ b n c a Assembly ầ Hi u các thành ph n c Hi u các thành ph n c b n c a Assembly ủ ợ ấ N m ắN m ắ đưđư c c u trúc c a 1 CT Assembly. ủ ợ ấ c c u trúc c a 1 CT Assembly. ươương trình Assembly. Bi ng trình Assembly. t 1 ch Bi t 1 ch ị ị Bi Bi
t vi t vi ế ế t cách d ch, liên k t và th c thi 1 ch t cách d ch, liên k t và th c thi 1 ch
ươương trình ng trình
ế ế ế ế Assembly. Assembly.
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 11
ớ ớ
ữ ữ
ệ ệ
Gi Gi
i thi u ngôn ng Assembly i thi u ngôn ng Assembly
ầ ứ ầ ứ
ưư ph n ầ ph n ầ
ề
Giúp khám phá bí m t ph n c ng cũng nh ậ ậ Giúp khám phá bí m t ph n c ng cũng nh ềm m máy tính. m m máy tính.
ụ ụ
N m ắN m ắ đưđư c cách ph n c ng MT làm vi c v i h ệ ớ ệ ầ ứ ợ ệ ớ ệ ầ ứ ợ c cách ph n c ng MT làm vi c v i h ợ ằ ể đưđư c b ng cách nào 1 trình ề ợ ằc b ng cách nào 1 trình ể ề i u hành và hi u đđi u hành và hi u ề ế ớ ệ đđi u hành. ứ ềi u hành. ế ớ ệ ứ ng d ng giao ti p v i h ng d ng giao ti p v i h
ộ ộ
ộ ọ ộ ọ
ậ ệ ậ ệ
ử ụ ử ụ ữ ữ
M t MT hay m t h MT s d ng 1 t p l nh mã M t MT hay m t h MT s d ng 1 t p l nh mã máy riêng cũng nhưư 1 ngôn ng Assembly riêng. 1 ngôn ng Assembly riêng. máy riêng cũng nh
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 22
Assembler Assembler ế ằ ế ằ ợ ợ
M t chộM t chộ ố ố
ể ể
ươương trình vi ữ ữ ng trình vi t b ng ngôn ng Assembly t b ng ngôn ng Assembly ả ệ đưđư c ta ph i chuy n thành ự ả ệ ự c ta ph i chuy n thành mu n MT th c hi n mu n MT th c hi n ữ ngônngôn ng máy. ững máy.
ể ị ể ị
ế ằ ế ằ
t b ng Assembly t b ng Assembly
ChChươương trình dùng d ch 1 file vi ng trình dùng đđ d ch 1 file vi ngôn ng máy , g i là Assembler ọ ữ .. ngôn ng máy , g i là Assembler ọ ữ
ị
Có 2 chương trình d ch:
MASM và TASM
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 33
ứ ứ
Lý do nghiên c u Assembly Lý do nghiên c u Assembly
ể ọ ể ọ
t nh t t nh t
ầ ứ ấ đđ h c ph n c ng MT ầ ứ ấ h c ph n c ng MT
Đó là cách t ố ố Đó là cách t ề và h ệ đđi u hành. ềi u hành. và h ệ
ủ ủ
ệ ệ
Vì các ti n ích c a nó . Vì các ti n ích c a nó .
ể ể
ươương trình con vi ng trình con vi
t ế t ế ươương trình vi ng trình vi
t ế t ế
ữ ấ ữ ấ
ằ ằ ằ
Có th nhúng các ch Có th nhúng các ch ằb ng ASM vào trong cácch b ng ASM vào trong cácch b ng ngôn ng c p cao . b ng ngôn ng c p cao .
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 44
ệ
ổ ổ
ệ ệc bi
ặ ặ đđ c bi
t – nó ra t – nó ra
ệ ệ
ớ ớ
ị ị
v trí nh này sang v trí nh khác. v trí nh này sang v trí nh khác.
ộ ộ
ố ố
ệL nh máy L nh máy Là 1 chu i nh phân có ý nghĩa ị ị Là 1 chu i nh phân có ý nghĩa ụ ự ệ ụ ự ệ l nh cho CPU th c hi n tác v . l nh cho CPU th c hi n tác v . Tác v ụ ó có th là :ể Tác v ụ đđó có th là :ể ớ ố ừ ị ể ớ ố ừ ị ể di chuy n 1 s t di chuy n 1 s t ố ố C ng 2 s hay so sánh 2 s . C ng 2 s hay so sánh 2 s .
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
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 55
ệ
ệL nh máy (cont) L nh máy (cont)
ớ ưư c, khi CPU ớc, khi CPU
đưđư c ợc ợ
T p l nh máy ậ ệ ậ ệ T p l nh máy ấ ả ấ ả s n xu t và nó s n xu t và nó
ị đưđư c ợc ợ đđ nh nghĩa tr ịnh nghĩa tr ể ưưng cho ki u CPU . đđ c trặc trặ ể ng cho ki u CPU .
ế ạ ế ạ
ố ố
t d ng s hex, dài 2 byte. t d ng s hex, dài 2 byte.
ệ ệ ọ ọ
ầ ầ
ạ ạ
Ex : B5 05 là 1 l nh máy vi Ex : B5 05 là 1 l nh máy vi Byte Byte đđ u B5 g i là Opcode u B5 g i là Opcode Byte sau 05 g i là toán h ng Operand ọ ọ Byte sau 05 g i là toán h ng Operand
ủ ệ
ị
Ýù nghĩa c a l nh B5 05 : chép giá tr 5 vào reg AL
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 66
ế ế
Cách vi Cách vi
t 1 ch t 1 ch
ươương trình Assembly ng trình Assembly
ầ
ề
ạ
ả
ấ ỳ đ ể
ạ
So n CT TenCT.ASM
Dùng 1 ph n m m so n th o VB b t k soan CT Assembly như : NotePad, NC, màn hình C, Pascal ...
ầ
ở ộ
D chị
CT
CT có ph n m r ng là .ASM ể ị
ương trình ngu n ồ
dùng MASM đ d ch ch .ASM File Object.
ạ ậ
ự
ế
ể
ế Liên k t CT
ệ
dùng LINK đ liên k t Object t o t p tin th c hi n .EXE
ỏ
ự
ệ
ừ ấ
ắ
d u nh c
ạ
Ch y CT
ậ G tên t p tin th c hi n .EXE t ể ạ DOS đ ch y
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 77
ố ế ố ế
ị ị
D ch và n i k t ch D ch và n i k t ch
ươương trình ng trình
MASM.EXE
TenCT .ASM
TenCT .OBJ
LINK.EXE
TenCT .CRF
TenCT .MAP
TenCT .LIST
TenCT .EXE
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 88
M t chộM t chộ
ng trình minh hoạ ươương trình minh hoạ
MOV DX, OFFSET MES
MOV AH, 9
INT 21
MOV AH,4CH
INT 21
MAIN ENDP
DOSSEG DOSSEG .MODEL SMALL .MODEL SMALL .STACK 100h .STACK 100h .DATA .DATA MES DB “HELLO WORD”,’$’ MES DB “HELLO WORD”,’$’ .CODE .CODE MAIN PROC MAIN PROC MOV AX, @DATA MOV AX, @DATA MOV DS, AX MOV DS, AX
END MAIN
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 99
ợ ạ Các file đưđư c t o ợ ạc t o Các file
ị ị
ố ứ ự ố ứ ự
mã. mã.
Sau khi d ch thành công file ngu n.ASM, ta có các file : ồ Sau khi d ch thành công file ngu n.ASM, ta có các file : ồ File listing : file VB , các dòng có ánh s th t File listing : file VB , các dòng có đđánh s th t File Cross reference File Cross reference File Map File Map File Obj File Obj File EXE File EXE
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1010
File Listing File Listing
Microsoft (R) Macro Assembler Version 5.10 10/11/4 Microsoft (R) Macro Assembler Version 5.10 10/11/4 Page 1-1 Page 1-1
1 DOSSEG 1 DOSSEG 2 .MODEL SMALL 2 .MODEL SMALL 3 .STACK 100H 3 .STACK 100H 4 .DATA 4 .DATA 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" 6 57 4F 52 44 24 6 57 4F 52 44 24 7 .CODE 7 .CODE 8 0000 MAIN PROC 8 0000 MAIN PROC 9 0000 B8 ---- R MOV AX,@DATA 9 0000 B8 ---- R MOV AX,@DATA 10 0003 8E D8 MOV DS, AX 10 0003 8E D8 MOV DS, AX 11 0005 B4 09 MOV AH,9 11 0005 B4 09 MOV AH,9 12 0007 BA 0000 R MOV DX, OFFSET MES 12 0007 BA 0000 R MOV DX, OFFSET MES 13 000A CD 21 INT 21H 13 000A CD 21 INT 21H 14 000C B4 4C MOV AH,4CH 14 000C B4 4C MOV AH,4CH 15 000E CD 21 INT 21H 15 000E CD 21 INT 21H 16 0010 MAIN ENDP 16 0010 MAIN ENDP 17 END MAIN 17 END MAIN ♀◘♀◘Microsoft (R) Macro Assembler Version 5.10 10/11/4 Microsoft (R) Macro Assembler Version 5.10 10/11/4
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1111
Map File Map File
Start Stop Length Name Class Start Stop Length Name Class 00000H 0001FH 00020H _TEXT CODE 00000H 0001FH 00020H _TEXT CODE 00020H 0002AH 0000BH _DATA DATA 00020H 0002AH 0000BH _DATA DATA 00030H 0012FH 00100H STACK STACK 00030H 0012FH 00100H STACK STACK
Origin Group Origin Group 0002:0 DGROUP 0002:0 DGROUP
Program entry point at 0000:0010 Program entry point at 0000:0010
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1212
ớ ớ
ộ ộ
ữ ệ ữ ệ
ươương ng
ó các bi n ế ạ ữ ệ ở đđó các bi n ế o n d li u đđo n d li u ạ ữ ệ ở
ứ ứ
ệ ệ
ả ạ o n mã ch a các l nh ph i đđo n mã ch a các l nh ph i ả ạ
ầ ầ
ỉ ỉ
ủ ụ ủ ụ
ả ảGi i thích Gi i thích .model small : dùng ki u c u trúc <= 64 K b nh cho ể ấ .model small : dùng ki u c u trúc <= 64 K b nh cho ể ấ mã , 64K cho d li u. mã , 64K cho d li u. .Stack 100h : dành 256 bytes cho stack c a chủ .Stack 100h : dành 256 bytes cho stack c a chủ trình . trình . .Data : ấ .Data : đđánh d u phân ánh d u phân ấ đưđư c lợc lợ ưưu tr .ữu tr .ữ .Code : ấ ánh d u phân .Code : đđánh d u phân ấ thi hành. thi hành. Proc : khai báo ủ ụ u 1 th t c, trong Ex này ta ch có 1 Proc : khai báo đđ u 1 th t c, trong Ex này ta ch có 1 ủ ụ th t c Main. th t c Main.
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1313
ả ảGi Gi
i thích (cont) i thích (cont)
ạ ữ ệ ạ ữ ệ
ọ ọ
ể ấ ể ấ xu t đđ xu t
Chép ỉ đđo n d li u vào thanh ghi AX. ị ỉ ị o n d li u vào thanh ghi AX. Chép đđ a ch a ch Sau Sau đđó chép vào thanh ghi DS ó chép vào thanh ghi DS G i hàm s 9 c a Int 21h c a Dos ố ủ ủ ố ủ ủ G i hàm s 9 c a Int 21h c a Dos ự ổ ự ổ ra màn hình. chu i ký t chu i ký t ra màn hình. Thoát kh i CT . ỏ ỏ Thoát kh i CT . Main endp : ủ ụ ế ấ ế ủ ụ ấ Main endp : đđánh d u k t thúc th t c ánh d u k t thúc th t c End main : ch m d t ch ươương trình ứ ấ ứ ấ ng trình End main : ch m d t ch
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1414
ấ ấ
ủ ủ C u trúc c a 1 CT ASM C u trúc c a 1 CT ASM
DOSSEG DOSSEG .MODEL kieåu boä nhôù .MODEL kieåu boä nhôù .STACK kích thöôùc .STACK kích thöôùc .DATA .DATA khai baùo bieán, haèng khai baùo bieán, haèng .CODE .CODE MAIN PROC MAIN PROC MOV AX, @DATA MOV AX, @DATA MOV DS,AX MOV DS,AX caùc leänh cuûa chöông trình chính caùc leänh cuûa chöông trình chính MOV AH,4CH ; Thoaùt khoûi chöông trình MOV AH,4CH ; Thoaùt khoûi chöông trình INT 21H INT 21H MAIN ENDP MAIN ENDP caùc chöông trình con khaùc neáu coù caùc chöông trình con khaùc neáu coù END MAIN END MAIN
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1515
ộ ộ ớ Các ch ế đđ b nh ộ ộ ớ Các ch ế b nh Moâ taû Moâ taû
KieåuKieåu Maõ leänh trong 1 ñoaïn.Döõ lieäu trong 1 ñoaïn SMALL Maõ leänh trong 1 ñoaïn.Döõ lieäu trong 1 ñoaïn SMALL Maõ leänh nhieàu hôn 1 ñoaïn.Döõ lieäu trong 1 MEDIUM Maõ leänh nhieàu hôn 1 ñoaïn.Döõ lieäu trong 1 MEDIUM ñoaïn ñoaïn Maõ leänh trong 1 ñoaïn. Döõ lieäu nhieàu hôn 1 COMPACT Maõ leänh trong 1 ñoaïn. Döõ lieäu nhieàu hôn 1 COMPACT ñoaïn ñoaïn Maõ leänh nhieàu hôn 1 ñoaïn Maõ leänh nhieàu hôn 1 ñoaïn
LARGE LARGE
HUGEHUGE
Döõ lieäu nhieàu hôn 1 ñoaïn,khoâng coù maûng Döõ lieäu nhieàu hôn 1 ñoaïn,khoâng coù maûng naøo > 64K naøo > 64K Maõ leänh nhieàu hôn 1 ñoaïn Maõ leänh nhieàu hôn 1 ñoaïn
Döõ lieäu nhieàu hôn 1 ñoaïn, maûng coù theå > Döõ lieäu nhieàu hôn 1 ñoaïn, maûng coù theå > 64K64K
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1616
ệ ệ
ạ ạ
D ng l nh D ng l nh
Chú thích
[name] [operator] [ operand] [comment] [name] [operator] [ operand] [comment]
ạ ớ
ệ Mã l nh d ng g i nhợ
Register, ô nhớ ị ằ Tr , h ng
Nhãn, tên bi nế Tên th t củ ụ
Ex : MOV CX , 0
ỉ ứ
ỗ ệ
ệ
LAP : MOV CX, 4
ỗ ả ằ
M i dòng ch ch a 1 l nh và m i l nh ph i n m trên 1 dòng
LIST DB 1,2,3,4
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1717
ệ ệ
ể ọ đđ g i ể ọ g i
INT 21H INT 21H L nh INT s hi u ng t ợ ắ đưđư c dùng ệ ố ợc dùng L nh INT s hi u ng t ắ ố ệ ắ ủ chchươương trình ng t c a DOS và BIOS. ng trình ng t c a DOS và BIOS. ắ ủ
ố ử ụ
đ t ặ
ắ Ng t 21h ủ Mu n s d ng hàm nào c a INT 21h ta ọ
function_number vào thanh ghi AH, sau đó g i INT 21h
Function_number
ch c nứ ăng
ậ
1 nh p 1 ký t
ự ừ t
bàn phím
ấ
ự
2 Xu t 1 ký t
ra mà hình.
ổ
ấ
ự
9 Xu t 1 chu i ký t
ra màn
hình Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM
10/04/16 10/04/16 1818
INT 21h (cont) INT 21h (cont)
ậ
ự
Hàm 1 : Nh p 1 ký t
ế
ề
Input : AH =1 ủ Output : AL = mã ASCCI c a phím n đi u khi ân = 0 n u 1 phím
ấ ể đư c nợ ấ
ị
ự
ể Hàm 2 : Hi n th 1 ký t
ra màn hình
ủ
ự ể
ề
Input : AH =2 DL = Mã ASCII c a ký t
ị hi n th hay ký t
ể ự đi u khi n
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1919
ụ ụ
ọ ọ Thí d minh h a Thí d minh h a
DOSSEG .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH , 2 MOV DL , ‘?’ INT 21H MOV AH ,1 INT 21H MOV BL,AL
MOV AH,2 MOV DL, 0DH INT 21H MOV DL , 0AH INT 21H MOV DL , BL INT 21H MOV AX , 4C00H INT 21H MAIN ENDP END MAIN
Ế
Ả
K T QU
? N N
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2020
ụ ụ
ủ ủ
ọ ọ
Thí d minh h a các hàm c a INT 21 Thí d minh h a các hàm c a INT 21
ự ừ ự ừ t t
bàn phím : bàn phím :
In d u ? ra màn hình : ấ ấ In d u ? ra màn hình : MOV AH, 2 MOV AH, 2 MOV DL, ‘?’ MOV DL, ‘?’ INT 21H INT 21H Nh p 1 ký t ậ ậ Nh p 1 ký t MOV AH, 1 MOV AH, 1 INT 21H INT 21H
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2121
ộ ộ
ầ ừ đđ u phân ầu phân ừ
đđo n ạo n ạ
ế ế
ớ ỉ ở đđ a ch 100 v i ị ớ ị ỉ ở a ch 100 v i
ộ
Bi nếBi nế Cú pháp : ị ở ạ ế ị ở ạ ế [tên bi n] DB | DW |.... [tr kh i t o] Cú pháp : [tên bi n] DB | DW |.... [tr kh i t o] Là m t tên ký hi u dành riêng cho 1 v trí trong b ộ ị ệ ị ộ ệ Là m t tên ký hi u dành riêng cho 1 v trí trong b ữ ữ ệ nh nớnh nớ ơơi li lưưu tr d li u. ữ ữ ệ u tr d li u. Offset c a bi n là kho ng cách t ả ế ủ ủ ả ế Offset c a bi n là kho ng cách t ế đđó.ó. ến bi n đđ n bi n Ex : khai báo 1 danh sách aList Ex : khai báo 1 danh sách aList ộn i dung sau : n i dung sau : .data .data aList db “ABCD” aList db “ABCD”
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2222
ế
ếBi n (cont) Bi n (cont)
Lúc Lúc đđó :ó : OffsetOffset 0000 0000 0001 0001 0002 0002 0003 0003
Bi nếBi nế AA BB CC DD
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2323
Khai báo bi nế Khai báo bi nế
Moâ taû Töø gôïi nhôù Moâ taû Töø gôïi nhôù DBDB
Soá byte Soá byte 11
Thuoäc tính Thuoäc tính ByteByte
Ñònh Ñònh nghóa byte nghóa byte TöøTöø Töø keùp Töø keùp
DWDW DDDD
22 44
Töø töù Töø töù 10 bytes 10 bytes
DQDQ DTDT
88 1010
WordWord Doublewor Doublewor dd Quardword Quardword tenbyte tenbyte
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2424
ọ ọ
ế Minh h a khai báo bi n ế Minh h a khai báo bi n
Ể
KI U BYTE
Char db ‘A’ Char db ‘A’ Num db 41h Num db 41h Mes db “Hello Word”,’$’ Mes db “Hello Word”,’$’ Array_1 db 10, 32, 41h, 00100101b Array_1 db 10, 32, 41h, 00100101b Array_2 db 2,3,4,6,9 Array_2 db 2,3,4,6,9 Myvar db ? ; bi n không kh i t o ở ạ ế ở ạ ế Myvar db ? ; bi n không kh i t o Btable db 1,2,3,4,5 Btable db 1,2,3,4,5 db 6,7,8,9,10 db 6,7,8,9,10
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2525
ọ ọ
ế Minh h a khai báo bi n ế Minh h a khai báo bi n
Ể
KI U WORD
DW 3 DUP (?) DW 3 DUP (?) DW 1000h, ‘AB’, 1024 DW 1000h, ‘AB’, 1024 DW ? DW ? DW 5 DUP (1000h) DW 5 DUP (1000h) DW 256*2 DW 256*2
Ạ
Ữ Ữ Ệ
Ể
D NG L
ƯU TR D LI U KI U WORD :
ị ể
đ o ngả
ư c các byte trong 1 giá tr ki u WORD
ợ ị ữ
ợ Trình h p d ch ộ ớ khi lưu tr trong b nh :
ị
ỉ ấ
ị
ỉ
ưu
ở đ a ch cao
Byte th p lấ ưu 10/04/16 10/04/16
ở đ a ch th p Byte cao l Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM
2626
ọ ọ
ế Minh h a khai báo bi n ế Minh h a khai báo bi n
Ể
KI U WORD
ữ
Ex : 1234h đư c lợ ưu tr trong b nh nh
ộ ớ ư sau :
Ị
Ỉ Đ A CH
1000h
1001h
BỘ
NHỚ
12
34
Ữ Ệ D LI U
1234H
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2727
ử ử
Toán t Toán t
DUP DUP
ở ạ ở ạ
ề ề
ị ị
i 1 hay nhi u giá tr kh i t o. i 1 hay nhi u giá tr kh i t o.
ấ ả ằ ấ ả ằ
L p l ặ ạ L p l ặ ạ Ex :Ex : Bmem DB 50 Dup(?) Bmem DB 50 Dup(?) ớ ồ ; khai báo vùng nh g m 50 bytes. ớ ồ ; khai báo vùng nh g m 50 bytes. db 4 dup (“ABC”) db 4 dup (“ABC”) ;12 bytes “ABCABCABCABC” ;12 bytes “ABCABCABCABC” db 4096 dup (0) db 4096 dup (0) ệ m 4096 bytes t ; Vùng đđ m 4096 bytes t ệ ; Vùng
t c b ng 0 t c b ng 0
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2828
ở ạ ở ạ
ế ế
Kh i t o bi n Kh i t o bi n
ố ố
ế ế
0 0
LLưưu ý : u ý : ị ố ở ạ ị Khi kh i t o tr là 1 s hex thì giá tr s luôn luôn ị ố ở ạ ị Khi kh i t o tr là 1 s hex thì giá tr s luôn luôn ố ố ừ đđ n 9. N u ký s ế ằ b t ắb t ắ đđ u b ng 1 ký s t ầ n 9. N u ký s u b ng 1 ký s t ế ố ố ừ ầ ằ ố ở đđ u.ầu.ầ ả ầ b t ắb t ắ đđ u là A.. F thì ph i thêm s 0 u là A.. F thì ph i thêm s 0 ố ở ả ầ Ex :Ex :
Db A6H ; sai Db A6H ; sai Db 0A6h ; đđúngúng Db 0A6h ;
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2929
ử ử
Toán t Toán t
DUP (cont) DUP (cont)
Amtrix dw 3 dup (4 dup (0) ) Amtrix dw 3 dup (4 dup (0) ) ậ
ạ
T o 1 ma tr n 3x4
Atable db 4 dup (3 dup (0), 2 dup (‘X’))
ứ
ớ
ạ
T o 1 vùng nh ch a 000XX 000XX 000XX 000XX
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3030
ử ử
Toán t Toán t
DUP DUP
ỉ ấ ỉ ấ
ị ị
ớ ớ
ề ề
ị ị i 1 hay nhi u tr i 1 hay nhi u tr
ệ ớ ả ệ ớ ả
ổ ổ
ấ ấ
Ch xu t hi n sau 1 ch th DB hay DW ỉ ệ ỉ ệ Ch xu t hi n sau 1 ch th DB hay DW V i DUP ta có th l p l ể ặ ạ ể ặ ạ V i DUP ta có th l p l cho vùng nh .ớ cho vùng nh .ớ R t có ích khi làm vi c v i m ng hay chu i. R t có ích khi làm vi c v i m ng hay chu i.
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3131
Toán t Toán t
?ử ?ử
ố ố
ở ạ ở ạ
Mu n khai báo 1 bi n hay 1 m ng mà không ế Mu n khai báo 1 bi n hay 1 m ng mà không ế ị ầ c n kh i t o tr ta dùng toán t ị ầ c n kh i t o tr ta dùng toán t
ả ả ử ? ử ?
ộ ớ
ố
Ex : MEM8 DB ? ; khai báo 1 byte tr ng trong b nh
ộ ớ
ố
MEM16 DW ? ; khai báo 2 byte tr ng trong b nh
BMEM DB 50 DUP(?)
ộ ớ
ố
; khai báo 50 byte tr ng trong b nh
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3232
ạ ChChươương trình d ng .COM ng trình d ng .COM ạ
ệ ệ
ị ạ ị ạ
ợ ạ đưđư c n p ợ ạc n p
CODE SEGMENT CODE SEGMENT ASSUME CS:CODE , DS:CODE, SS:CODE ASSUME CS:CODE , DS:CODE, SS:CODE ỉ ằ ; toàn b chộ ươương trình ch n m trong 1 segment ng trình ch n m trong 1 segment ỉ ằ ; toàn b chộ ỉ Org 100h ;; ch th n p thanh ghi l nh IP=100h khi CT ỉ Org 100h ;; ch th n p thanh ghi l nh IP=100h khi CT Main proc Main proc mov ax,bx mov ax,bx …………….. …………… Main endp Main endp Count db 10 Count db 10 ……………………… ……………………… Code ends Code ends End main End main
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3333
SUMMARY SUMMARY
ệ ệ
ề ề
ặ ặ
ể ể ể ể
ự ế ự ế
ấ ấ
ạ ạ ụ ụ ắ ủ ụ ụ ắ ủ
chchươương trình Assembly g m nhi u dòng l nh. ồ ng trình Assembly g m nhi u dòng l nh. ồ M i l nh ph i vi ả ỗ ệ ế t trên 1 dòng M i l nh ph i vi ả ỗ ệ ế t trên 1 dòng L nh có th g m [tên] [toán t ] [toán h ng] ể ồ ử ệ ạ L nh có th g m [tên] [toán t ] [toán h ng] ể ồ ử ệ ạ Các ký t ấ ự ả đđ t trong d u ‘ ‘ hay “ “ Các ký t t trong d u ‘ ‘ hay “ “ ph i ấ ự ả ph i DB dùng ế ị DB dùng đđ ể ể đđ nh nghĩa bi n ki u BYTE nh nghĩa bi n ki u BYTE ế ị DW dùng ế ị DW dùng đđ ể ể đđ nh nghĩa bi n ki u WORD. nh nghĩa bi n ki u WORD. ế ị Có 2 cách xu t nh p d li u : liên l c tr c ti p qua ậ ữ ệ Có 2 cách xu t nh p d li u : liên l c tr c ti p qua ậ ữ ệ ổ c ng hay dùng các ph c v ng t c a DOS và BIOS. ổ c ng hay dùng các ph c v ng t c a DOS và BIOS.
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3434
Trong mã máy d
t p tin t p tin
ệ ệ
ủ ủ
ế ế
ưư i ới ớ
ệ ệ
ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p ợ ấ ừ ậ Trong mã máy dưư i ới ớ đđây ây đưđư c l y t c l y t ợ ấ ừ ậ t kê, hãy nêu ý nghĩa c a R li t kê, hãy nêu ý nghĩa c a R li 5B 0021 R ADD BX, VAL1 5B 0021 R ADD BX, VAL1 Nêu ý nghĩa c a ký hi u ỉ ủ ệ đđ a ch c a bi n d ị ủ Nêu ý nghĩa c a ký hi u a ch c a bi n d ị ỉ ủ ệ ủ ậ t kê. ây trong 1 t p tin li đđây trong 1 t p tin li ậ t kê. 5B 0021 R ADD BX, VAL1 5B 0021 R ADD BX, VAL1
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3535
ỗ ỗ
ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p ệ i. Hãy tìm câu l nh nào gây ra l ệ i. Hãy tìm câu l nh nào gây ra l
i, gi i, gi
ả i ả i
ChChươương trình sau có l ỗ ng trình sau có l ỗ úng. đđúng. i cho i cho
ử ạ thích và s a l ử ạ thích và s a l ..MODEL SMALL MODEL SMALL .STACK 100H .STACK 100H .DATA .DATA MOV AX, VALUE1 MOV AX, VALUE1 MOV BX, VALUE2 MOV BX, VALUE2 INC BX, 1 INC BX, 1 INT 21H INT 21H MOV 4C00H, AX MOV 4C00H, AX
MAIN ENDP
VALUE1 0AH
VALUE2 1000H
END MAIN
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3636
ỗ ỗ
ệ i. Hãy tìm câu l nh nào gây ra l ệ i. Hãy tìm câu l nh nào gây ra l
i, gi i, gi
ả i ả i
ChChươương trình sau có l ỗ ng trình sau có l ỗ úng. đđúng. i cho i cho
ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p
ử ạ thích và s a l ử ạ thích và s a l ..MODEL SMALL MODEL SMALL .STACK 100H .STACK 100H .CODE .CODE MAIN PROC MAIN PROC MOV AX, @DATA MOV AX, @DATA MOV DS , AX MOV DS , AX MOV AX, VALUE1 MOV AX, VALUE1 MOV AX, VALUE2 MOV AX, VALUE2 MOV AX, 4C00H MOV AX, 4C00H INT 21H INT 21H MAIN ENDP
VALUE1 DB 0AH
VALUE2 DB 1000H
END MAIN 10/04/16 10/04/16
Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3737
ậ ậ Bài t p l p trình ậ ậ Bài t p l p trình
th th
ờ ự ưư ng , ờng , ự
hoa t hoa t
ế ế
ể ể
ạ ạ
ầ ầ
ươương trình nh p 1 ký t ậ t chế ng trình nh p 1 ký t Bài 1 : Vi ậ t chế Bài 1 : Vi ươương ng.ứng ng.ứ ự in ra ký t ự in ra ký t ị ươương trình hoán v 2 bi n ki u t chế ng trình hoán v 2 bi n ki u Bài 2 : Vi ị t chế Bài 2 : Vi ị byte đưđư c gán s n tr . ẵ ợ c gán s n tr . ẵ ợ ị byte ươương trình t o 1 array có các ph n t chế ng trình t o 1 array có các ph n Bài 3 : Vi t chế Bài 3 : Vi 31h,32h,33h,34h. 31h,32h,33h,34h.
ấ ấ
vào thanh ghi DL và xu t nó ra vào thanh ghi DL và xu t nó ra
ạ ạ
ế ế
i thích t i thích t
ấ i sao k t xu t trên màn ấ i sao k t xu t trên màn
ử ửt t ầ ử ạ ừ N p t ng ph n t ầ ử ạ ừ N p t ng ph n t ả màn hình. Gi ả màn hình. Gi hình là 1234. hình là 1234.
10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3838