1. Ngôn ng máy ữ
2. H p ngợ ữ
3. H p ng MASMợ ữ
4. C u trúc ch ng trìnhấ ươ
5. Cách t o ch ng trình H p ngạ ươ ợ ữ
Ch ng 2ươ
H p Ng (Assembly)ợ ữ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 2
Ngôn ng máyữ
Th tứ ự
l nhệ
Giá tr th pị ậ
l c phânụ
Mã l nh nh phânệ ị
(CPU thi hành)
1
B4 09
10110100 00001001
2
BA 03 01
10111010 00000011 00000001
3 40 01000000
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 3
H p ngợ ữ
Th tứ ự
l nhệ
Giá tr th pị ậ
l c phânụ
H p Ngợ ữ
Ý nghĩa
1 B4 09
MOV AH, 09h
AH ← 09h
2
BA 03 01
MOV DX, 0103h
DX ← 0103h
3 40 INC AX
AX ← AX + 1
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 4
Ngôn ng Máy và H p Ngữ ợ ữ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 5
H p ng MASMợ ữ
•
Dòng l nhệ
•
Ví d :ụ
BDAU: MOV DX, 3F8h ; 3F8H là đ a ch c ng vào ra n i ti pị ỉ ổ ố ế
BDAU – Tên v i vai trò là nhãnớ
: – (D u 2 ch m) phân cách Tên và T g i nhấ ấ ừ ợ ớ
MOV – T g i nh mã l nhừ ợ ớ ệ
DX, 3F8h – Hai toán h ng, phân cách b ng d u ph yạ ằ ấ ẩ
3F8H là đ a ch c ng vào ra n i ti pị ỉ ổ ố ế – Câu chú thích
; – (D u ; ) Phân cách Toán h ng và Chú thích ấ ạ
Tên
T g i nh mã l nh ừ ợ ớ ệ
ho c l nh giặ ệ ả
Toán h ng ho c ạ ặ
bi u th cể ứ
Ghi chú
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 6
Tên
•
3 lo i: Nhãn, H ng, Bi nạ ằ ế
•
Qui cách đ t tên:ặ
–
Dài t i đa 32 ký tố ự
–
Ký t đ u tiên ph i là ch cáiự ầ ả ữ
–
Các ký t không đ c phép s d ng:ự ượ ử ụ
Kho ng tr ng, + - * / & % ^ & ! @ # ả ố
$ : , . ; ‘ ?
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 7
Nhãn
•
Ví d :ụ
NH: MOV AX, DS ; NH là nhãn đánh d u m t đ a ch ô ấ ộ ị ỉ
nh ớ
FOO LABEL near ; đ t tên cho đ a ch ô nh sau l nh ặ ị ỉ ớ ệ
gi nàyả
CTCON PROC FAR ; đ a ch b t đ u c a ch ng ị ỉ ắ ầ ủ ươ
trình con
EXTRN NH near ; NH là nhãn ngoài ch ng trình ươ
g c n yố ầ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 8
Bi n – Ký hi u (H ng)ế ệ ằ
•
Ví d :ụ
TWO DB 2 ; khai báo bi n TWO có giá tr là 2ế ị
FOO EQU 7h; ký hi u FOO thay th giá tr 07hệ ế ị
TOTO = 0Fh ; ký hi u TOTO thay th giá tr 0Fhệ ế ị
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 9
L nh giệ ả
•
Là l nh c a trình h p d ch, không có mã máy t ng ngệ ủ ợ ị ươ ứ
•
Không đi u khi n CPU ho t đ ng.ề ể ạ ộ
•
Ch h ng d n trình h p d ch.ỉ ướ ẫ ợ ị
•
B n nhóm l nh gi :ố ệ ả
–
C u trúc ch ng trìnhấ ươ
–
B nhộ ớ
–
Toán h ng, Toán tạ ử
–
D ch có đi u ki nị ề ệ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 10
L nh gi c u trúc ch ng trìnhệ ả ấ ươ
•
SEGMENT – ENDS: Khai báo đo nạ
•
Cú pháp: <tên đo n> ạ SEGMENT
… ; n i dung c a đo nộ ủ ạ
<tên đo n>ạ ENDS
•
Ví d :ụ Khai báo hai đo n có tên là DSEG và CSEG:ạ
DSEG SEGMENT
bienA DB 12 ; Khai báo d li uữ ệ
DSEG ENDS
CSEG SEGMENT
MOV AH, bienA ; Các l nh trong đo nệ ạ
CSEG ENDS
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 11
ASSUME: Ch đ nh lo i c a m t đo n ỉ ị ạ ủ ộ ạ
•
Cú pháp: ASSUME <SegRes>:<Tên1>,<SegRes>:<Tên2>
•
Ví d : ụ Ch đ nh đo n có tên DSEG là đo n d li u (DS) và ỉ ị ạ ạ ữ ệ
đo n có tên CSEG là đo n l nh (CS):ạ ạ ệ
ASSUME DS: DSEG, CS: CSEG
Chú ý: L nh ASSUME ph i đ c vi t trong đo n l nhệ ả ượ ế ạ ệ
END : Cu i file ch ng trình ngu nố ươ ồ
•
Cú pháp: END <Nhãn>
•
Ví d :ụ END begin ; đi m b t đ u ch y CT là nhãn begin ể ắ ầ ạ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 12
Macro – Ch ng trình conươ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 13
Cách vi t S - Ký t - Chu iế ố ự ỗ
•
Cách vi t s : 4 d ngế ố ạ
–
Th p phân: 10, 2456, 78901, -123ậ
–
Th p l c phân: 10ậ ụ h, 0A1Fh, 3AH, 1DECh
–
Nh phân: 1ị b, 10101010b, 10110100B
–
Bát phân: 10o, 35O, 1230O
•
Ký t : ‘A’, “B”, ‘x’, “w”ự
•
Chu i: ‘Hello Word’, “Welcome to Assembly”ỗ
•
M i ký t là 1 BYTE và đ c qu n lý b ng mã ASCIIỗ ự ượ ả ằ
•
Chu i là mãng v i m i ph n t là 1 ký tỗ ớ ỗ ầ ử ự
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 14
Khai báo d li u (Bi n)ữ ệ ế
•
Bi n là Tên đ i di n cho đ a ế ạ ệ ị
ch ô nh => Truy xu t n i ỉ ớ ấ ộ
dung ô nh b ng Tên Bi nớ ằ ế
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 15
Khai báo d li u (Bi n)ữ ệ ế
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 16
Ví dụ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 17
Ví dụ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 18
Toán h ngạ
•
Toán h ng là thành ph n trong dòng l nh: 3 lo iạ ầ ệ ạ
•
Toán h ng t c thì (Immed): H ng Sạ ứ ằ ố
•
Cách vi t:ế 10, ‘B’, 10b, 10h
•
Ký hi u t ng quát đ i di n cho toán h ng t c thì: ệ ổ ạ ệ ạ ứ
Immed : Toán h ng t c thì nói chungạ ứ
Immed8 : Toán h ng t c thì 8 bitạ ứ
Immed16 : Toán h ng t c thì 16 bitạ ứ
Immed32 : Toán h ng t c thì 32 bitạ ứ
MOV AX, 1AF8h ; AX 1AF8h (là TH. T c thì)ứ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 19
Toán h ng Thanh Ghiạ
•
Toán h ng Thanh ghi (Reg): Tên thanh ghi ạ
Truy xu t n i dung thanh ghiấ ộ
•
Cách vi t:ế AX, BX, CX, DX, AL, AH, SI, DS,
•
Ký hi u t ng quát đ i di n cho toán h ng thanh ghi: ệ ổ ạ ệ ạ
Reg : Toán h ng thanh ghi đa d ng nói chungạ ụ
Reg8 : Toán h ng thanh ghi đa d ng 8 bitạ ụ
Reg16 : Toán h ng thanh ghi đa d ng 16 bitạ ụ
SegRes : Toán h ng thanh ghi đo nạ ạ
MOV AX, SI ; AX SI (là thanh ghi)
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 20
Toán h ng Ô nhạ ớ
•
Toán h ng Ô nh (Mem): Đ a ch ô nh (Tên bi n) ạ ớ ị ỉ ớ ế
Truy xu t n i dung ô nh (giá tr Bi n)ấ ộ ớ ị ế
•
Các cách vi t c b n: ế ơ ả
Tên_Bi nế : Truy xu t đ n n i dung c a Bi n.ấ ế ộ ủ ế
[Immed16]: Truy xu t n i dung c a ô nh trong đo n ấ ộ ủ ớ ạ
DS, ô nh đó có đ a ch đ d i là ớ ị ỉ ộ ờ Immed16 . Còn g i là ọ
tr c ti p ô nh .ự ế ớ
[Reg16]: Truy xu t n i dung c a ô nh trong đo n DS, ấ ộ ủ ớ ạ
mà ô nh đó có đ a ch đ d i l u trong ớ ị ỉ ộ ờ ư Reg16. Còn g i ọ
là gián ti p thanh ghi.ế
MOV AX, FOO ; AX M[FOO] (Tên bi n)ế
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 21
Toán tử
•
Toán t tác đ ng lên toán h ng trong dòng l nhử ộ ạ ệ
Toán_t <toán h ng>ử ạ
•
Các toán t : ử type, length, size
•
Ví d :ụ
FOO DW 100 DUP (?)
MOV AX, type FOO ; AX = 2
MOV CX, length FOO ; CX = 100
MOV BX, size FOO ; BX = 200
MOV DX, type FOO * length FOO ; DX = 200
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 22
C u trúc ch ng trình d ng EXEấ ươ ạ
…. ; Khai báo h ng s (n u có)ằ ố ế
MNAME MACRO ; (N u có)ế
… ; Vi t l nh Macroế ệ
ENDM
DSEG SEGMENT (N u có khai báo Bi n)ế ế
… ; Khai báo d li uữ ệ
DSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, DS: DSEG
Start: MOV AX, DSEG
MOV DS, AX ; kh i đ ng DS: đ a ch Đo n d li u (DSEG)ở ộ ị ỉ ạ ữ ệ
…
… ; (Ch ng trình chính)ươ
…
MOV AH, 4Ch ; hàm 4Ch c a ng t 21hủ ắ
INT 21h ; thoát kh i ch ng trìnhỏ ươ
CTCON PROC
… ; Vi t các Th t c (N u có)ế ủ ụ ế
RET
CTCON ENDP
CSEG ENDS
END Start
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 23
Ví d : Vi t CT in ra màn hình ký t ‘B’ụ ế ự
CSEG SEGMENT
ASSUME CS: CSEG
BD:
MOV AH, 02h ; hàm in ký t c a ng t 21hự ủ ắ
MOV DL, ‘B’ ; DL ch a ký t c n inứ ự ầ
INT 21h ; G i ng t đ th c công vi cọ ắ ể ự ệ
MOV AH, 4Ch
INT 21h
CSEG ENDS
END BD
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 24
Cách t o ch ng trình h p ngạ ươ ợ ữ
Assembly: Chapter 2 - MEng. Nguyen Hua Duy Khang, 2010 25
S d ng RadASMử ụ
•
Giao di n ph n m mệ ầ ề
S th t ố ứ ự
dòng l nhệ
Vùng so n ạ
th oả
Vùng thông báo k t qu ế ả
D ch ch ng trìnhị ươ