CHUONG 9 MACRO
CHUONG 9 MACRO
1
1
MACRO
MACRO
MACRO
nh ngh
nh ngh
a Macro v
a Macro v
g
g
i Macro
i Macro
Va
Va
ỏ
ỏ
n
n
ủ
ủ
e
e
truye
truye
n
n
thoõng
thoõng
so
so
ỏ
ỏ
trong
trong
Macro.
Macro.
Macro
Macro
lo
lo
ng
ng
nhau
nhau
.
.
S
S
ửỷ
ửỷ
du
du
ù
ù
ng
ng
Macro
Macro
ủ
ủ
e
e
ồ
ồ
go
go
ù
ù
i
i
ch
ch
ử
ử
ụng
ụng
tr
tr
ỡ
ỡ
nh
nh
con.
con.
Ca
Ca
ự
ự
c
c
toa
toa
ự
ự
n
n
t
t
ửỷ
ửỷ
Macro.
Macro.
Th
Th
ử
ử
vie
vie
ọ
ọ
n
n
Macro
Macro
So
So
sa
sa
ự
ự
nh
nh
vie
vie
ọ
ọ
c
c
du
du
ứ
ứ
ng
ng
Macro
Macro
vụ
vụ
ự
ự
i
i
Procedure
Procedure
Mo
Mo
ọ
ọ
t
t
so
so
ỏ
ỏ
Macro
Macro
maóu
maóu
.
.
CHUONG 9 MACRO
CHUONG 9 MACRO
2
2
ẹềNH NGHểA MACRO
ẹ
ẹ
ềNH NGH
ềNH NGH
ể
ể
A MACRO
A MACRO
Macro
Macro
la
la
ứ
ứ
1
1
ky
ky
ự
ự
hie
hie
ọ
ọ
u
u
ủử
ủử
ụ
ụ
ù
ù
c
c
ga
ga
ự
ự
n
n
cho
cho
1
1
nho
nho
ự
ự
m
m
le
le
ọ
ọ
nh
nh
ASM
ASM
Macro
Macro
la
la
ứ
ứ
teõn
teõn
thay
thay
the
the
ỏ
ỏ
cho
cho
1
1
nho
nho
ự
ự
m
m
le
le
ọ
ọ
nh
nh
.
.
Trong
Trong
la
la
ọ
ọ
p
p
tr
tr
ỡ
ỡ
nh
nh
nhie
nhie
u
u
lu
lu
ự
ự
c
c
ta
ta
ca
ca
n
n
pha
pha
ỷ
ỷ
i
i
vie
vie
ỏ
ỏ
t
t
nh
nh
ử
ử
ừng
ừng
le
le
ọ
ọ
nh
nh
na
na
na
na
ự
ự
nhau
nhau
nhie
nhie
u
u
la
la
n
n
ma
ma
ứ
ứ
ta
ta
khoõng
khoõng
muo
muo
ỏ
ỏ
n
n
vie
vie
ỏ
ỏ
t
t
d
d
ử
ử
ụ
ụ
ự
ự
i
i
da
da
ù
ù
ng
ng
ha
ha
ứ
ứ
m
m
v
v
ỡ
ỡ
du
du
ứ
ứ
ng
ng
ha
ha
ứ
ứ
m
m
to
to
ỏ
ỏ
n
n
thụ
thụ
ứ
ứ
i
i
gian
gian
th
th
ửù
ửù
c
c
thi
thi
,
,
thay
thay
v
v
ỡ
ỡ
ta
ta
pha
pha
ỷ
ỷ
i
i
vie
vie
ỏ
ỏ
t
t
ủ
ủ
a
a
y
y
ủ
ủ
u
u
ỷ
ỷ
nho
nho
ự
ự
m
m
le
le
ọ
ọ
nh
nh
na
na
ứ
ứ
y
y
va
va
ứ
ứ
o
o
CT,
CT,
ta
ta
ch
ch
ổ
ổ
ca
ca
n
n
vie
vie
ỏ
ỏ
t
t
Macro
Macro
ma
ma
ứ
ứ
ta
ta
ủ
ủ
aừ
aừ
ga
ga
ự
ự
n
n
cho
cho
chu
chu
ự
ự
ng
ng
.
.
Ta
Ta
ù
ù
i sao ca
i sao ca
n co
n co
ự
ự
Macro :
Macro :
CHUONG 9 MACRO
CHUONG 9 MACRO
3
3
LÀM QUEN VỚI MACRO
Khi ta có nhiều đoạn code giống nhau, chúng ta
có thể dùng macro để thay thế, giống như ta dùng
define trong C. Thí dụ chúng ta thay thế đọan lệnh
sau bằng macro để in dấu xuống dòng.
MOV DL,13 ; về đầu dòng
MOV AH,2
INT 21H
MOV DL,10 ; xuống dòng mới
MOV AH,2
INT 21H
CHUONG 9 MACRO
CHUONG 9 MACRO
4
4
Thay vì phải viết lại 6 dòng lệnh trên, ta
có thể tạo 1 macro có tên @Newline để
thay thế đoạn code này :
@NewLine Macro
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
MOV AH,2
INT 21H
ENDM
Sau đó, bất kỳ chỗ nào
cần xuống dòng, ta chỉ
cần gọi macro
@NewLine.
@NewLine
CHUONG 9 MACRO
CHUONG 9 MACRO
5
5
MACRO (tt)
MACRO (
MACRO (
tt
tt
)
)
Khi
Khi
hụ
hụ
ù
ù
p
p
dũch
dũch
no
no
ọ
ọ
i
i
dung
dung
nho
nho
ự
ự
m
m
le
le
ọ
ọ
nh
nh
na
na
ứ
ứ
y
y
ma
ma
ứ
ứ
ta
ta
ủ
ủ
aừ
aừ
ga
ga
ự
ự
n
n
cho
cho
macro
macro
seừ
seừ
ủử
ủử
ụ
ụ
ù
ù
c
c
thay
thay
the
the
ỏ
ỏ
va
va
ứ
ứ
o
o
nh
nh
ử
ử
ừng
ừng
nụi
nụi
co
co
ự
ự
teõn
teõn
macro
macro
tr
tr
ử
ử
ụ
ụ
ự
ự
c
c
khi
khi
CT
CT
ủử
ủử
ụ
ụ
ù
ù
c
c
hụ
hụ
ù
ù
p
p
dũch
dũch
tha
tha
ứ
ứ
nh
nh
file
file
OBJ.
OBJ.
Ex1 :
Ex1 :
nhie
nhie
u
u
khi
khi
ta
ta
pha
pha
ỷ
ỷ
i
i
vie
vie
ỏ
ỏ
t
t
la
la
ù
ù
i
i
nhie
nhie
u
u
la
la
n
n
ủ
ủ
oa
oa
ù
ù
n
n
le
le
ọ
ọ
nh
nh
xua
xua
ỏ
ỏ
t
t
ky
ky
ự
ự
t
t
ửù
ửù
trong
trong
DL
DL
ra
ra
ma
ma
ứ
ứ
n
n
h
h
ỡ
ỡ
nh
nh
.
.
MOV AH, 2
MOV AH, 2
INT 21H
INT 21H
Thay
Thay
v
v
ỡ
ỡ
pha
pha
ỷ
ỷ
i
i
vie
vie
ỏ
ỏ
t
t
ca
ca
ỷ
ỷ
1
1
ca
ca
ở
ở
p
p
le
le
ọ
ọ
nh
nh
treõn
treõn
moói
moói
khi
khi
ca
ca
n
n
xua
xua
ỏ
ỏ
t
t
ky
ky
ự
ự
t
t
ửù
ửù
trong
trong
DL,
DL,
ta
ta
co
co
ự
ự
the
the
ồ
ồ
vie
vie
ỏ
ỏ
t
t
Macro
Macro
PUTCHAR
PUTCHAR
nh
nh
ử
ử
sau
sau
:
:
PUTCHAR MACRO
MOV AH,2
INT 21H
ENDM
CHUONG 9 MACRO
CHUONG 9 MACRO
6
6
MƠ
MƠ
Û
Û
RO
RO
Ä
Ä
NG CU
NG CU
Û
Û
A MACRO CO
A MACRO CO
Ù
Ù
THE
THE
Å
Å
XEM
XEM
TRONG FILE.LIST.
TRONG FILE.LIST.
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYE
3 DIRECTIVE BIÊN DỊCH SAU SẼ QUYE
Á
Á
T
T
Đ
Đ
ỊNH MƠ
ỊNH MƠ
Û
Û
RO
RO
Ä
Ä
NG MACRO NH
NG MACRO NH
Ư
Ư
THE
THE
Á
Á
NA
NA
Ø
Ø
O.
O.
.SALL (SUPRESS ALL) PHA
.SALL (SUPRESS ALL) PHA
À
À
N MƠ
N MƠ
Û
Û
RO
RO
Ä
Ä
NG MACRO
NG MACRO
KHÔNG
KHÔNG
ĐƯ
ĐƯ
Ơ
Ơ
Ï
Ï
C IN. S
C IN. S
Ử
Ử
DU
DU
Ï
Ï
NG KHI MACRO LƠ
NG KHI MACRO LƠ
Ù
Ù
N HAY
N HAY
MACRO
MACRO
ĐƯ
ĐƯ
Ơ
Ơ
Ï
Ï
C THAM CHIE
C THAM CHIE
Á
Á
U NHIE
U NHIE
À
À
U LA
U LA
À
À
N TRONG CT.
N TRONG CT.
.XALL CH
.XALL CH
Ỉ
Ỉ
NH
NH
Ư
Ư
ÕNG DO
ÕNG DO
Ø
Ø
NG MACRO TA
NG MACRO TA
Ï
Ï
O MÃ NGUO
O MÃ NGUO
À
À
N
N
MƠ
MƠ
Ù
Ù
I
I
ĐƯ
ĐƯ
Ơ
Ơ
Ï
Ï
C IN RA.TH
C IN RA.TH
Í
Í
DU
DU
Ï
Ï
CA
CA
Ù
Ù
C DO
C DO
Ø
Ø
NG CHU
NG CHU
Ù
Ù
TH
TH
Í
Í
CH
CH
ĐƯ
ĐƯ
Ơ
Ơ
Ï
Ï
C BO
C BO
Û
Û
QUA.
QUA.
Đ
Đ
ÂY LA
ÂY LA
Ø
Ø
TUY
TUY
Ø
Ø
CHO
CHO
Ï
Ï
N DEFAULT.
N DEFAULT.
.LALL (LIST ALL) TOA
.LALL (LIST ALL) TOA
Ø
Ø
N BO
N BO
Ä
Ä
CA
CA
Ù
Ù
C DO
C DO
Ø
Ø
NG TRONG
NG TRONG
MACRO
MACRO
ĐƯ
ĐƯ
Ơ
Ơ
Ï
Ï
C IN RA TR
C IN RA TR
Ừ
Ừ
NH
NH
Ư
Ư
ÕNG CHU
ÕNG CHU
Ù
Ù
TH
TH
Í
Í
CH BA
CH BA
É
É
T
T
Đ
Đ
A
A
À
À
U BA
U BA
È
È
NG 2 DA
NG 2 DA
Á
Á
U ;;
U ;;
CHUONG 9 MACRO
CHUONG 9 MACRO
7
7
ĐỊNH NGHĨA MACRO
Đ
Đ
ỊNH NGH
ỊNH NGH
Ĩ
Ĩ
A MACRO
A MACRO
CU
CU
Ù
Ù
PHA
PHA
Ù
Ù
P KHAI BA
P KHAI BA
Ù
Ù
O MACRO :
O MACRO :
MACRO_NAME
MACRO_NAME
MACRO
MACRO
[ <THÔNG SO
[ <THÔNG SO
Á
Á
HÌNH TH
HÌNH TH
Ứ
Ứ
C>]
C>]
STATEMENTS
STATEMENTS
ENDM
ENDM
GO
GO
Ï
Ï
I MACRO :
I MACRO :
MACRO_NAME
MACRO_NAME
[<
[<
THÔNG SO
THÔNG SO
Á
Á
TH
TH
Ự
Ự
C>,
C>,
]
]
THÔNG SỐ HÌNH THỨC CHỈ CÓ TÁC DỤNG ĐÁNH DẤU VỊ TRÍ
CỦA THÔNG SỐ TRONG MACRO. QUAN TRỌNG NHẤT LÀ VỊ TRÍ
CÁC THÔNG SỐ.
CHUONG 9 MACRO
CHUONG 9 MACRO
8
8
MACRO
MACRO
TRUY
TRUY
Ề
Ề
N THAM S
N THAM S
Ố
Ố
.MODEL SMALL
.MODEL SMALL
.STACK 100H
.STACK 100H
PUTCHAR MACRO KT
MOV DL,KT
MOV AH,2
INT 21H
ENDM
.CODE
.CODE
MAIN PROC
MAIN PROC
MOV DL,
MOV DL,
‘
‘
A
A
’
’
PUTCHAR
PUTCHAR
MOV DL,
MOV DL,
‘
‘
*
*
”
”
PUTCHAR
PUTCHAR
MOV AH,4CH
MOV AH,4CH
INT 21H
INT 21H
MAIN ENDP
MAIN ENDP
END MAIN
END MAIN
CHUONG 9 MACRO
CHUONG 9 MACRO
9
9
SWAP MACRO BIE
SWAP MACRO BIE
Á
Á
N1, BIE
N1, BIE
Á
Á
N2
N2
MOV AX, BIEN1
MOV AX, BIEN1
XCHG AX, BIEN2
XCHG AX, BIEN2
MOV BIEN1, AX
MOV BIEN1, AX
ENDM
ENDM
GO
GO
Ï
Ï
I : SWAP TRI1, TRI2
I : SWAP TRI1, TRI2
CHUONG 9 MACRO
CHUONG 9 MACRO
10
10
TRAO
TRAO
Đ
Đ
O
O
Å
Å
I THAM SO
I THAM SO
Á
Á
CU
CU
Û
Û
A MACRO
A MACRO
MỘT MACRO CÓ THỂ CÓ THÔNG SỐ HOẶC KHÔNG CÓ THÔNG SỐ.
PUTCHAR MACRO
PUTCHAR MACRO
CHAR
CHAR
MOV AH, 2
MOV AH, 2
MOV DL, CHAR
MOV DL, CHAR
INT 21H
INT 21H
ENDM
ENDM
. CODE
PUTCHAR ‘A’
PUTCHAR ‘B’
PUTCHAR ‘C’
MACRO CÓ THÔNG SỐ
SỬ DỤNG MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
11
11
MACRO TRUYỀN THÔNG SỐ
Thí dụ : macro @Printstr
Viết chương trình in 2 chuổi ‘Hello’ và ‘Hi”.
.DATA
MSG1 DB ‘Hello’,13,10
MSG2 DB‘Hi’,13,10
.CODE
……….
MOV DX, OFFSET MSG1
MOV AH,9
INT 21H
MOV DX, OFFSET MSG2
MOV AH,9
INT 21H
……
Ta thấy đoạn 1
và đoạn 2 gần
giống nhau
có thể tạo macro
có tham số như
sau :
;1
;1
;1
;2
;2
;2
CHUONG 9 MACRO
CHUONG 9 MACRO
12
12
TH
TH
Í
Í
DU
DU
Ï
Ï
VE
VE
À
À
MACRO
MACRO
DISPLAY MACRO STRING
DISPLAY MACRO STRING
PUSH AX
PUSH AX
PUSH DX
PUSH DX
LEA DX, STRING
LEA DX, STRING
MOV AH,9
MOV AH,9
INT 21H
INT 21H
POP DX
POP DX
POP AX
POP AX
ENDM
ENDM
GOÏI : DISPLAY CHUOI
CHUONG 9 MACRO
CHUONG 9 MACRO
13
13
TRAO
TRAO
Đ
Đ
O
O
Å
Å
I THAM SO
I THAM SO
Á
Á
CU
CU
Û
Û
A MACRO
A MACRO
MACRO LOCATE : ĐỊNH VỊ CURSOR MÀN HÌNH
LOCATE MACRO ROW, COLUMN
LOCATE MACRO ROW, COLUMN
PUSH AX
PUSH AX
PUSH BX
PUSH BX
PUSH DX
PUSH DX
MOV BX, 0
MOV BX, 0
MOV AH, 2
MOV AH, 2
MOV DH, ROW
MOV DH, ROW
MOV DL, COLUMN
MOV DL, COLUMN
INT 10H
INT 10H
POP DX
POP DX
POP BX
POP BX
POP AX
POP AX
ENDM
ENDM
TA CÓ CÁC DẠNG SỬ DỤNG
SAU :
LOCATE 10,20
LOCATE ROW, COL
LOCATE CH, CL
SỬ DỤNG MACRO
CHÚ Ý : KHÔNG DÙNG CÁC
THANH GHI AH,AL,BH,BL VÌ
SẼ ĐỤNG ĐỘ VỚI CÁC
THANH GHI ĐÃ SỬ DỤNG
TRONG MACRO
CHUONG 9 MACRO
CHUONG 9 MACRO
14
14
MACRO LO
MACRO LO
À
À
NG NHAU
NG NHAU
MỘT CÁCH ĐƠN GIẢN ĐỂ XÂY DỰNG MACRO LÀ XÂY DỰNG 1
MACRO MỚI TỪ MACRO ĐÃ CÓ.
EX : HIE
EX : HIE
Å
Å
N THỊ 1 CHUO
N THỊ 1 CHUO
Å
Å
I TA
I TA
Ï
Ï
I 1 TOA
I 1 TOA
Ï
Ï
Đ
Đ
O
O
Ä
Ä
CHO TR
CHO TR
Ư
Ư
Ơ
Ơ
Ù
Ù
C
C
DISPLAY_AT MACRO ROW, COL, STRING
LOCATE ROW, COL ;Gọi macro đònh vò cursor
DISPLAY STRING ; Gọi Macro xuất string
ENDM
MỘT MACRO CÓ THỂ THAM CHIẾU ĐẾN CHÍNH NÓ,
NHỮNG MACRO NHƯ VẬY GỌI LÀ MACRO ĐỆ QUI.
CHUONG 9 MACRO
CHUONG 9 MACRO
15
15
Đ
Đ
ỊNH NGH
ỊNH NGH
Ĩ
Ĩ
A NHÃN BÊN TRONG MACRO
A NHÃN BÊN TRONG MACRO
TRONG MACRO CÓ THỂ CÓ NHÃN.
GỌI MACRO NHIỀU LẦN NHIỀU NHÃN ĐƯC TẠO RA
LÀM SAO GIẢI QUYẾT VẤN ĐỀ NHẢY ĐIỀU KHIỂN?
ASSEMBLY GIA
ÛI QUYẾT VẤN ĐỀ NÀY BẰNG CHỈ THỊ LOCAL
ỢNG B
ỨC MASM TẠO RA 1 TÊN DUY NHẤT CHO MỖI MỘT
LABEL KHI MACRO
ĐƯC GỌI
CÚ PHÁP : LOCAL LABEL_NAME
CHUONG 9 MACRO
CHUONG 9 MACRO
16
16
Một số Macro yêu cầu user đònh nghóa các thành phần dữ liệu
và các nhãn bên trong đònh nghóa của Macro.
Nếu sử dụng Macro này nhiều hơn 1 lần trong cùng một
chương trình, trình ASM đònh nghóa thành phần dữ liệu hoặc
nhãn cho mỗi lần sử dụng các tên giống nhau lặp lại khiến
cho ASM báo lỗi.
Để đảm bảo tên nhãn chỉ được tạo ra 1 lần, ta dùng chỉ thò
LOCAL ngay sau phát biểu Macro
Khi ASM thấy 1 biến được đònh nghóa là LOCAL nó sẽ thay
thế biến này bằng 1 ký hiệu có dạng ??n, trong đó n là 1 số
có 4 chữ số. Nếu có nhiều nhãn có thể là ??0000, ??0001,
??0002
Ta cần biết điều này để trong CT chính ta không sử dụng
các biến hay nhãn đưới cùng 1 dạng.
CHUONG 9 MACRO
CHUONG 9 MACRO
17
17
Th
Th
í
í
du
du
ï
ï
minh
minh
ho
ho
ï
ï
a
a
ch
ch
ỉ
ỉ
thò
thò
Local
Local
Xây dựng Macro REPEAT có nhiệm vụ xuất count lần số ký tự
char ra màn hình.
REPEAT MACRO CHAR, COUNT
LOCAL L1
MOV CX, COUNT
L1: MOV AH,2
MOV DL, CHAR
INT 21H
LOOP L1
ENDM
ASM SẼ DÙNG CƠ CHẾ
ĐÁNH SỐ CÁC NHÃN (TỪ
0000H ĐẾN FFFFH) ĐỂ
ĐÁNH DẤU CÁC NHÃN CÓ
CHỈ ĐỊNH LOCAL.
GIẢ SỬ GỌI :
REPEAT ‘A’, 10
REPEAT ‘*’, 20
SẼ ĐƯC DỊCH RA
CHUONG 9 MACRO
CHUONG 9 MACRO
18
18
Th
Th
í
í
du
du
ï
ï
minh
minh
ho
ho
ï
ï
a
a
ch
ch
æ
æ
thò
thò
Local
Local
MOV CX, 10
??0000 : MOV AH,2
MOV DL, ‘A’
INT 21H
LOOP ??0000
MOV CX, 20
??0001 : MOV AH,2
MOV DL, ‘*’
INT 21H
LOOP ??0001
G
I
A
Û
S
Ö
Û
G
O
Ï
I
:
R
E
P
E
A
T
‘
A
’
,
1
0
R
E
P
E
A
T
‘
*
’
,
2
0
CHUONG 9 MACRO
CHUONG 9 MACRO
19
19
Th
Th
í
í
du
du
ï
ï
minh
minh
ho
ho
ï
ï
a
a
Viết 1 macro đưa từ lớn hơn trong 2 từ vào
AX
GETMAX MACRO WORD1, WORD2
LOCAL EXIT
MOV AX, WORD1
CMP AX, WORD2
JG EXIT
MOV AX, WORD2
EXIT :
ENDM
GIẢ SỬ FIRST,SECOND, THIRD LÀ
CÁC BIẾN WORD.
SỰ THAM CHIẾU MACRO ĐƯC
MỞ RỘNG NHƯ SAU :
MOV AX, FIRST
CMP AX, SECOND
JG ??0000
MOV AX, SECOND
??0000:
CHUONG 9 MACRO
CHUONG 9 MACRO
20
20
Th
Th
í
í
du
du
ï
ï
minh
minh
ho
ho
ï
ï
a
a
Viết 1 macro đưa từ lớn hơn trong 2 vào AX
LỜI GỌI MACRO TIẾP THEO :
GETMAX SECOND, THIRD
ĐƯC MỞ RỘNG NHƯ SAU :
MOV AX, SECOND
CMP AX, THIRD
JG ??0001
??0001 :
SỰ THAM CHIẾU LIÊN TIẾP
MACRO NÀY HAY ĐẾN MACRO
KHÁC KHIẾN TRÌNH BIÊN DỊCH
CHÈN CÁC NHÃN ??0002, ??0003
VÀ CỨ NHƯ VẬY TRONG CHƯƠNG
TRÌNH CÁC NHÃN NÀY LÀ DUY
NHẤT.
CHUONG 9 MACRO
CHUONG 9 MACRO
21
21
TH
TH
Ư
Ư
VIE
VIE
Ä
Ä
N MACRO
N MACRO
CÁC MACRO MÀ CHƯƠNG TRÌNH THAM CHIẾU CÓ THỂ ĐẶT Ở FILE
RIÊNG TA CÓ THỂ TẠO 1 FILE THƯ VIỆN CÁC MACRO.
DÙNG 1 EDITOR ĐỂ SOẠN THẢO MACRO
LƯU TRỮ TÊN FILE MACRO.LIB
KHI CẦN THAM CHIẾU ĐẾN MACRO TA DÙNG CHỈ THò INCLUDE
TÊN FILE THƯ VIỆN
MỘT CÔNG DỤNG QUAN TRỌNG CỦA MACRO LÀ TẠO RA
CÁC LỆNH MỚI.
CHUONG 9 MACRO
CHUONG 9 MACRO
22
22
SO SA
SO SA
Ù
Ù
NH GI
NH GI
Ö
Ö
ÕA MACRO & THU
ÕA MACRO & THU
Û
Û
TU
TU
Ï
Ï
C
C
THÔ
THÔ
Ø
Ø
I GIAN BIEÂN DÒCH.
I GIAN BIEÂN DÒCH.
MACRO
MACRO
Í
Í
T TO
T TO
Á
Á
N THÔ
N THÔ
Ø
Ø
I GIAN BIEÂN DÒCH
I GIAN BIEÂN DÒCH
HÔN PROCEDURE
HÔN PROCEDURE
THÔ
THÔ
Ø
Ø
I GIAN TH
I GIAN TH
ÖÏ
ÖÏ
C HIE
C HIE
Ä
Ä
N : NHANH HÔN
N : NHANH HÔN
PROCEDURE VÌ KHOÂNG TO
PROCEDURE VÌ KHOÂNG TO
Á
Á
N THÔ
N THÔ
Ø
Ø
I GIAN
I GIAN
KHOÂI PHU
KHOÂI PHU
Ï
Ï
C TRA
C TRA
Ï
Ï
NG THA
NG THA
Ù
Ù
I THOÂNG TIN
I THOÂNG TIN
KHI
KHI
ÑÖ
ÑÖ
Ô
Ô
Ï
Ï
C GO
C GO
Ï
Ï
I
I
TO
TO
Á
Á
C
C
Ñ
Ñ
O
O
Ä
Ä
NHANH
NHANH
HÔN.
HÔN.
K
K
Í
Í
CH TH
CH TH
Ö
Ö
Ô
Ô
Ù
Ù
C : K
C : K
Í
Í
CH TH
CH TH
Ö
Ö
Ô
Ô
Ù
Ù
C CT DA
C CT DA
Ø
Ø
I
I
HÔN
HÔN
CHUONG 9 MACRO
CHUONG 9 MACRO
23
23
CÁC LỆNH LẶP TRONG
MACRO
CA
CA
Ù
Ù
C LE
C LE
Ä
Ä
NH LA
NH LA
Ë
Ë
P TRONG
P TRONG
MACRO
MACRO
REP <BIE
REP <BIE
Å
Å
U TH
U TH
Ứ
Ứ
C> :
C> :
ENDM
ENDM
TA
TA
Ù
Ù
C DU
C DU
Ï
Ï
NG : LA
NG : LA
Ë
Ë
P LA
P LA
Ï
Ï
I CA
I CA
Ù
Ù
C KHO
C KHO
Á
Á
I LE
I LE
Ä
Ä
NH TRONG MACRO
NH TRONG MACRO
VƠ
VƠ
Ù
Ù
I SO
I SO
Á
Á
LA
LA
À
À
N LA
N LA
Ø
Ø
<BIE
<BIE
Å
Å
U TH
U TH
Ứ
Ứ
C>
C>
EX : MSHL MACRO OPER, BITS
REPT BITS
SHL DEST, 1
ENDM
ENDM
GỌI MSHL BX, 3
SẼ ĐƯC THAY THẾ BẰNG :
SHL BX, 1
SHL BX, 1
SHL BX, 1
CHUONG 9 MACRO
CHUONG 9 MACRO
24
24
CÁC LỆNH LẶP TRONG
MACRO
CA
CA
Ù
Ù
C LE
C LE
Ä
Ä
NH LA
NH LA
Ë
Ë
P TRONG
P TRONG
MACRO
MACRO
IRP <THÔNG SO
IRP <THÔNG SO
Á
Á
>, <DANH SA
>, <DANH SA
Ù
Ù
CH CA
CH CA
Ù
Ù
C TRỊ TRONG NGOA
C TRỊ TRONG NGOA
Ë
Ë
C NHO
C NHO
Ï
Ï
N> :
N> :
ENDM
ENDM
TA
TA
Ù
Ù
C DU
C DU
Ï
Ï
NG :
NG :
LA
LA
Ë
Ë
P LA
P LA
Ï
Ï
I KHO
I KHO
Á
Á
I LE
I LE
Ä
Ä
NH TU
NH TU
Ø
Ø
Y THEO DANH SA
Y THEO DANH SA
Ù
Ù
CH TRỊ.
CH TRỊ.
SO
SO
Á
Á
LA
LA
À
À
N LA
N LA
Ë
Ë
P CH
P CH
Í
Í
NH LA
NH LA
Ø
Ø
SO
SO
Á
Á
TRỊ TRONG DANH SA
TRỊ TRONG DANH SA
Ù
Ù
CH
CH
MỖI LA
MỖI LA
À
À
N LA
N LA
Ë
Ë
P LA
P LA
Ï
Ï
I SẼ THAY <THÔNG SO
I SẼ THAY <THÔNG SO
Á
Á
> BA
> BA
È
È
NG 1 TRỊ TRONG
NG 1 TRỊ TRONG
DANH SA
DANH SA
Ù
Ù
CH VA
CH VA
Ø
Ø
SẼ LA
SẼ LA
À
À
N L
N L
Ư
Ư
Ơ
Ơ
Ï
Ï
T LA
T LA
Á
Á
Y HE
Y HE
Á
Á
T CA
T CA
Ù
Ù
C TRỊ TRONG DANH
C TRỊ TRONG DANH
SA
SA
Ù
Ù
CH.
CH.
EX : PROCTABLE LABEL WORD
IRP PROCNAME, <MOVEUP, MOVDOWN,MOVLEFT,MOVRGHT>
DW PROCNAME
ENDM
CHUONG 9 MACRO
CHUONG 9 MACRO
25
25
CÁC LỆNH LẶP TRONG
MACRO
CA
CA
Ù
Ù
C LE
C LE
Ä
Ä
NH LA
NH LA
Ë
Ë
P TRONG
P TRONG
MACRO
MACRO
TUY NHIÊN CA
TUY NHIÊN CA
Ù
Ù
CH KHAI BA
CH KHAI BA
Ù
Ù
O NA
O NA
Ø
Ø
Y R
Y R
Ư
Ư
Ơ
Ơ
Ø
Ø
M RA
M RA
Ø
Ø
HƠN LA
HƠN LA
Ø
Ø
DU
DU
Ø
Ø
NG :
NG :
PROCTABLE DW MOVUP,
PROCTABLE DW MOVUP,
MOVDOWN,MOVLEFT,MOVRIGHT
MOVDOWN,MOVLEFT,MOVRIGHT
VIỆC SỬ DỤNG CÁC MACRO LẶP VÒNG NÀY CHO CÓ HIỆU
QUẢ LÀ ĐIỀU KHÓ, ĐÒI HỎI PHẢI CÓ NHIỀU KINH NGHIỆM