Ế
KI N TRÚC MÁY TÍNH
ả
ạ
ậ
ạ
Ths Ph m Thanh Bình Gi ng viên: ỹ ộ B môn K thu t máy tính & m ng http://vn.myblog.yahoo.com/CNTTwru http://ktmt.wru.googlepages.com
ậ
ạ
ộ
ỹ
ế
B môn K thu t máy tính & m ng – Khoa CNTT
Ki n trúc máy tính 2
1
ơ ệ Bài 2.6 – Các l nh Assembly c b nả
ng dùng
ươ
ặ
ế
ả
ỉ
ươ ấ ng trình C u trúc ch ườ ộ ố ệ M t s l nh th ấ ữ ệ ậ Nh p/xu t d li u ạ Cách ch y ch ả ệ Các l nh nh y, c u trúc r nhánh và l p ệ Các l nh logic, d ch, và quay Ngăn x p và th t c M ng và các ch đ đ a ch
ng trình Assembly ẽ ấ ị ủ ụ ế ộ ị ạ
ế
Ki n trúc máy tính 2
2
ộ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ 2.6.1 C u trúc ch
ng trình
ộ ậ
ươ TITLE VI DU 1 .MODEL SMALL .STACK 100H .DATA A DB 4 B DB 6 C DB ? .CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV AL, A ADD AL, B MOV C, AL MOV AX, 4C00H INT 21H MAIN ENDP ạ END MAIN
ế
Ki n trúc máy tính 2
3
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ả
Gi
i thích:
ế
ượ
c vi
ở ừ t sau t ng trình đ khoá TITLE ể ứ ấ ng trình. Tên có th ch a d u cách và ầ ườ ng ph n tên ụ ặ ộ
ươ
ng trình.
Ví d : TITLE VI DU 1
ầ Ph n tên ươ Tên ch ươ ầ đ u ch ệ ự ặ t khác. Thông th các kí t đ c bi ế ệ ụ ẽ t m c đích, nhi m v ho c n i s cho ta bi ắ ủ dung tóm t t c a ch ụ ầ
ả
ộ
ầ ế
ằ
ộ
ớ
ế
Ki n trúc máy tính 2
4
Ph n khai báo ề ữ ợ Trong h p ng có nhi u n i dung c n ph i khái ế ư ể báo nh ki u b nh , ngăn x p, bi n, h ng... ỹ ậ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ạ
ừ
t sau t
ớ Khai báo ki u b nh ế c vi ị
ể ể ạ
.MODEL. ướ ủ c c a ng trình
ệ
ụ ể ạ
ằ
ạ ề
ộ
ớ ể ậ
ế
Ki n trúc máy tính 2
5
ộ ể ớ ượ ộ Ki u b nh đ ớ ẽ ộ Ki u b nh s quy đ nh kích th ươ ữ ệ đo n mã và d li u trong ch ộ ớ ể Trong ví d trên, ki u b nh là SMALL, ẽ ằ ỏ ớ ộ nghĩa là ki u b nh nh , mã l nh s n m ớ ữ ệ trong 1 đo n nh , d li u n m trong 1 ể đo n nh . Ngoài ki u SMALL còn có ớ nhi u ki u b nh khác ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ộ
ộ ố ể
ộ
ớ
M t s ki u b nh
ế
ạ
ơ
MEDIUM
ệ ữ ệ
ề Mã l nh chi m nhi u h n 1 đo n ạ D li u trong 1 đo n
COMPACT
ệ ữ ệ
ế
ạ
ơ
ạ Mã l nh trong 1 đo n ề D li u chi m nhi u h n 1 đo n
LARGE
ệ ữ ệ
ề ề
ơ ơ
ế ế ả
ớ
ơ
ạ Mã l nh chi m nhi u h n 1 đo n ạ D li u chi m nhi u h n 1 đo n Không có m ng nào l n h n 64 KB
HUGE
ế ế
ệ ữ ệ ả
ơ ơ ơ
ề ạ Mã l nh chi m nhi u h n 1 đo n ạ ề D li u chi m nhi u h n 1 đo n ể ớ Các m ng có th l n h n 64 KB
ế
Ki n trúc máy tính 2
6
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ướ ế ượ
ừ
Khai báo kích th ướ
ế c ngăn x p ế c vi
t sau t
c ngăn x p đ
ướ
ớ
c vùng b nh dùng làm
Kích th .STACK ụ Ví d : .STACK 100H ộ Khi đó kích th ế
ngăn x p là 100H Bytes
ế
Ki n trúc máy tính 2
7
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế ủ .DATA. Các bi n c a
t sau t ở ầ ữ ệ ữ ệ ượ ẽ ượ ế c vi c khai báo ừ ph n này. ch
Khai báo d li u Khai báo d li u đ ươ ng trình s đ ụ
ể ữ ệ
ế ầ ủ ướ ị Ví d 1: A DB 4 ể ế Trong đó: A là tên bi n, DB là ki u d li u (bi n ki u c 1 byte), 4 là giá tr ban đ u c a
ẽ DB s có kích th bi nế . ụ
ể Ví d 2: B DW ? ẽ ụ Trong ví d này, bi n B s có ki u là DW (1 Word) và
ị ế ở ạ không có giá tr kh i t o.
ụ
ế
Ki n trúc máy tính 2
8
ạ
Khai báo h ng:ằ Ví d : H EQU 2Bh ậ ỹ ộ B môn K thu t máy tính & m ng – ị ằ ậ ẽ ằ H ng H s nh n giá tr b ng 2Bh Khoa CNTT
ắ ặ
ằ
ủ ế Quy t c đ t tên (Bi n, h ng, nhãn, th t c):ụ
ự
.
i đa 31 kí t
ữ ố
ự
ằ
t (? . @ _ $ %). ượ ắ ầ ấ
ả ứ
ầ
ứ ấ
ượ
ố ề Tên có chi u dài t ữ ể ứ Có th ch a ch cái, ch s và các kí t ệ ặ đ c bi ố c b t đ u b ng s . Không đ ấ ế N u dùng d u ch m thì nó ph i đ ng đ u tiên. Tên không đ
c ch a d u cách.
ế
Ki n trúc máy tính 2
9
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ Ph n mã l nh
ầ ầ ế ủ ụ ượ ừ Ph n này bao g m các th t c đ .CODE.
ố ả ồ ủ ụ
ượ ừ t sau t ủ ụ ế c vi
ươ ng trình chính
ươ ể ọ ộ c vi ộ ng trình chính, tên c a th t c đó đ ở ố cu i ch ặ ng đ t là MAIN, cũng có th ch n m t tên khác.
ọ
Trong s các th t c này ph i ch n m t th t c làm
ủ ụ
ủ
ươ
t sau t
ch
END
ng trình. Tên ch
ườ
th
ủ ụ
ộ
ấ
C u trúc m t th t c:
ủ ụ ệ L nh 1 ệ L nh 2 ệ L nh 3 ...
ế
Ki n trúc máy tính 2
10
ộ ủ ụ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ầ
ệ
ng trình chính> PROC
ng trình chính> ENDP
ủ
ấ
C u trúc chung c a ph n mã l nh:
.CODE
ươ
ng trình chính>
ạ
ế
Ki n trúc máy tính 2
11
ộ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ộ ố ệ
ườ
2.6.2 M t s l nh th
ng dùng
ấ
ệ
ệ
ệ
ệ
ệ
ệ
C u trúc câu l nh Assembly
L nh MOV (Move)
L nh XCHG (Exchange)
L nh ADD và SUB (Subtract)
L nh INC (Increment) và DEC (Decrement)
L nh NEG (Negartive)
ế
Ki n trúc máy tính 2
12
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ấ
ệ
C u trúc câu l nh Assembly
ộ
ầ
ệ
ợ
ạ
ữ ồ
ầ
ế
c
ề
ớ
ạ
ằ
ấ
ả
ạ
ạ
ờ
M t câu l nh h p ng g m 3 ph n: Tên
ệ
l nh, các toán h ng, ph n chú thích.
ượ
N u có nhi u toán h ng thì chúng đ
phân cách v i nhau b ng d u ph y (,).
[, ...] [;L i chú
ệ
thích]
Ví du:
ủ
ể
ộ
ế
Ki n trúc máy tính 2
13
MOV DS, AX ;Chuy n n i dung c a thanh ghi AX vào thanh ghi
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ ậ ộ
DS
ệ
L nh MOV (Move)
ể ữ ệ
ữ
ể
ệ
ượ ử ụ
c s d ng đ chuy n d li u gi a
L nh này đ
các thanh ghi hay ô nh .ớ
Cú pháp l nh:ệ
ớ
ộ
ộ
ộ
ặ
ộ
MOV <Đích>, ồ
<Đích>: là m t thanh ghi hay m t ô nh
ớ
: là m t thanh ghi, m t ô nh , ho c
ồ
c chuy n t
ể
ổ
ế
Ki n trúc máy tính 2
14
ồ
ộ ằ
ố
m t h ng s
ộ
ể ừ
ữ ệ ẽ ượ
Ngu n vào Đích (n i
D li u s đ
ồ
ủ
dung c a Ngu n không thay đ i sau khi chuy n)
ỹ
ạ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ ộ
Ví d 1: ụ
ể
ệ
MOV AX, 4C00h
ị
L nh trên chuy n giá tr 4C00h vào thanh
ghi AX.
Ví d 2: ụ
ị ủ
ể
ệ
ế
MOV AL, A
L nh trên chuy n giá tr c a bi n A vào
thanh ghi AL.
ế
Ki n trúc máy tính 2
15
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Chú ý:
ể
ượ
ự ế
c chuy n tr c ti p n i dung
ạ
ể
ự ế
c chuy n tr c ti p n i dung
ộ ằ
ể
ự ế
c chuy n tr c ti p m t h ng
ạ
ộ
Không đ
ủ
c a hai thanh ghi đo n cho nhau
ộ
ượ
Không đ
ế
ủ
c a hai bi n cho nhau
ượ
Không đ
ộ
ố
s vào m t thanh ghi đo n
ế
Ki n trúc máy tính 2
16
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d :ụ
ệ
ề
Các l nh sau đ u sai:
MOV CS, DS
MOV A, B
MOV DS, 2000h
ử ụ
ụ
ể
ắ
Đ kh c ph c: s d ng trung gian:
MOV AX, DS ; dùng AX làm trung gian
MOV CS, AX
ế
Ki n trúc máy tính 2
17
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
L nh XCHG (Exchange)
ể
ệ
ệ
ổ ữ ệ ữ
L nh này dùng đ hoán đ i d li u d
ạ
ữ
li u gi a hai toán h ng.
Cú pháp l nh:ệ
ạ
ạ
ặ
ộ
ớ
ạ
XCHG ,
ể
Các toán h ng có th là thanh ghi công
ộ
ụ
d ng chung, ho c m t thanh ghi công
ụ
d ng chung và m t ô nh .
ế
Ki n trúc máy tính 2
18
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d : ụ
ổ ộ
XCHG AX, BX ;hoán đ i n i dung
c aủ
; AX và BX
ế
Ki n trúc máy tính 2
19
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
L nh ADD và SUB (Subtract)
Cú pháp l nh:ệ
ộ
ộ
ớ
ặ
ộ
ộ
ADD <Đích>, ồ
SUB <Đích>, ồ
<Đích>: là m t thanh ghi hay m t ô nh
ớ
: là m t thanh ghi, m t ô nh , ho c
ố
ồ
ộ ằ
m t h ng s
ồ
ệ
ớ
ế
ồ
ừ
ế
ồ
ệ
ứ
ờ
ồ
ớ
<Đích>, không đ ng th i là hai ô nh .
ộ
ệ
ẽ ự
L nh ADD s th c hi n phép c ng Đích v i
ả ứ
Ngu n, k t qu ch a trong Đích.
ả
ẽ ấ
L nh SUB s l y Đích tr đi Ngu n, k t qu
ch a trong Đích.
ế
Ki n trúc máy tính 2
20
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d :ụ
ộ
ộ
ấ
ổ
ừ ộ
ế
ADD AX, 10 ;Tăng n i dung c a
ủ
; thanh ghi AX lên 10
ộ
ADD BX, AX ;C ng n i dung 2 thanh ghi
; AX và BX, t ng c t vào BX
SUB AX, B ;Tr n i dung thanh ghi AX
; cho bi n B
ế
Ki n trúc máy tính 2
21
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
L nh INC (Increment) và DEC (Decrement)
Cú pháp l nh:ệ
ớ
INC <Đích>
DEC <Đích>
<Đích>: là m t thanh ghi hay m t ô nh
ộ
ẽ
ộ
ộ
ẽ ả
ừ
ệ
L nh INC s tăng Đích lên 1 (c ng Đích
ớ
v i 1).
ệ
L nh DEC s gi m Đích đi 1 (tr Đích
cho 1).
ế
Ki n trúc máy tính 2
22
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d :ụ
ộ
ộ
ủ
ị ủ
ừ
ế
INC AH ;C ng n i dung c a
; thanh ghi AH v i 1ớ
DEC B ;Tr giá tr c a bi n B
; cho 1
ế
Ki n trúc máy tính 2
23
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
L nh NEG (Negartive)
Cú pháp l nh:ệ
ộ
ộ
ổ ấ
ạ
NEG <Đích>
ớ
<Đích>: là m t thanh ghi hay m t ô nh .
ụ
ệ
L nh này có tác d ng đ i d u toán h ng
Đích.
Ví d :ụ
ế
Ki n trúc máy tính 2
24
NEG AL
ạ
ậ
ỹ
ộ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
ấ ữ ệ
2.6.3 Nh p/xu t d li u
ươ
ứ
ấ ủ
ậ
ắ
ắ
ng trình ng t
Ch
Ch c năng nh p/xu t c a ng t 21h
ế
Ki n trúc máy tính 2
25
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ch
ự
ế ẵ
ươ
ng trình con đã
ứ
ữ
ệ
t s n nh m th c hi n nh ng ch c năng
ớ
ươ
ố
c phân ph i kèm
ượ
ể
ệ ố
ề
ể ử ụ
ng
ệ
ẵ
ắ
ươ
ng trình ng t
ươ
ữ
ắ
ng trình ng t là nh ng ch
Ch
ằ
ượ
c vi
đ
ơ ả
c b n khi thao tác v i máy tính.
ng trình con này đ
Các ch
ư
ề
ầ
theo các ph n m m đi u khi n h th ng nh
ệ ề
BIOS, H đi u hành.
ộ ố ệ
ươ
ỗ
ng trình có m t s hi u riêng (0, 1,
M i ch
ươ
ậ
2, ...). Khi l p trình ta có th s d ng các ch
ằ
trình con có s n này b ng cách dùng l nh INT
(interrupt).
ệ
Cú pháp l nh:
ố ệ
ạ
ế
Ki n trúc máy tính 2
26
ắ
INT
ỹ
ộ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
Ví d 1:ụ
ự
ệ
ệ
ắ ố
ng trình ng t s
INT 21h
ẽ ọ
L nh trên s g i th c hi n ch
ố ệ
ươ
ử ụ
ấ ủ
ắ
21h (đây là s hi u ng t hay s d ng nh t c a
DOS).
Ví d 2:ụ
ệ
ươ
INT 13h
ẽ ọ
ự
L nh trên s g i th c hi n ch
ố ệ
ừ
ớ
ệ
ắ ố
ng trình ng t s
ể
ắ ủ
13h (đây là s hi u ng t c a BIOS, dùng đ thao
tác v i đĩa t ).
ế
Ki n trúc máy tính 2
27
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ấ ủ
ứ
ậ
ắ
Ch c năng nh p/xu t c a ng t 21h
ắ
ề
ủ
ấ ấ
ỗ
ứ
ầ
ớ
ậ
ứ
ấ ữ
i ch c năng nh p xu t d
ọ
ứ
ị
ượ ặ
ầ
ươ
ố
ị ủ
ế
Ki n trúc máy tính 2
28
ứ
Ng t 21h c a DOS cung c p r t nhi u ch c
ộ
năng khác nhau, m i ch c năng cũng có m t
ố ệ
s hi u riêng (0, 1, 2, ...). Trong ph n này ta
ỉ
ch quan tâm t
li u. ệ
ướ
ượ ố
ắ ầ
Tr
c s
c khi g i ng t c n xác đ nh đ
ố ệ
ệ
c đ t vào
hi u ch c năng, s hi u đó đ
thanh ghi AH. Ngoài ra cũng c n quan tâm
ắ ẽ
ớ
ng trình ng t s
t
i các tham s khác (ch
ử ụ
s d ng thanh ghi nào? Giá tr c a chúng
ậ
ỹ
B môn K thu t máy tính & m ng –
ằ
b ng bao nhiêu?...)
Khoa CNTT
ạ ộ
ệ
ộ
ự
Hi n m t kí t
ra màn hình
ủ
ắ
ư
ố
ứ
Đây là ch c năng s 2 c a ng t 21h. Các
ế ể ọ
ố ầ
tham s c n thi
ắ
t đ g i ng t nh sau:
Vào:
ủ
ự ầ
ể
ị
AH = 2
DL = Mã ASCII c a kí t
c n hi n th
ủ
ứ
ự ể
Ra:
AL ch a mã ASCII c a kí t
ị
hi n th
ế
Ki n trúc máy tính 2
29
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ụ
ệ
ự
Ví d 2: Hi n kí t
‘M’ ra màn hình
MOV AH, 2
MOV DL, ‘M’
INT 21h
ế
Ki n trúc máy tính 2
30
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ươ
ầ ủ
Ch
ng trình đ y đ
TITLE HIEN KI TU
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 2 ;Ch c ứ
năng s 2ố
ự ầ
c n
hi n thể
ắ
ọ
ế
MOV DL, ’M’ ;Kí t
ị
INT 21h ;G i ng t
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ậ
END MAIN
ế
Ki n trúc máy tính 2
31
ộ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Chú ý:
ươ
ứ
ng trình trên có s d ng ch c năng
ử ụ
ứ
ắ
ng trình và tr l
ệ ề
ụ
ề
ể
Ch
ủ
ố
s 4Ch c a ng t 21h. Ch c năng này có
ả ạ
ươ
ế
tác d ng k t thúc ch
i
ề
quy n đi u khi n cho h đi u hành DOS.
ế
Ki n trúc máy tính 2
32
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
ỗ
ộ
ự
Hi n m t chu i kí t
ra màn hình
ủ
ắ
ố
ứ
ế ể ọ
ư
Đây là ch c năng s 9 c a ng t 21h. Các tham
ắ
ố ầ
t đ g i ng t nh sau:
s c n thi
Vào:
ứ
ủ
ớ
ị
AH = 9
DX = Đ a ch offset c a vùng nh ch a
ỉ
ự
ỗ
chu i kí t
ế
Ki n trúc máy tính 2
33
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d : ụ
ệ
ữ
Hi n ra màn hình dòng ch :
KHOA CONG NGHE THONG TIN
ế
Ki n trúc máy tính 2
34
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ố
ự ặ ứ
ấ ỗ ị ỉ đ t vào
ắ
ọ
ế
ế
Ki n trúc máy tính 2
35
ậ ạ ộ
TITLE HIEN CHUOI KT
.MODEL SMALL
.STACK 100H
.DATA
ChuoiKT DB ’KHOA CONG NGHE THONG TIN$’
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 9 ;Ch c năng s 9
LEA DX, ChuoiKT ;L y đ a ch chu i kí t
DX
INT 21h ;G i ng t
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ỹ
B môn K thu t máy tính & m ng –
END MAIN
Khoa CNTT
Chú ý:
ự ầ
ả ượ ế
ể
ị
c n hi n th ph i đ
c k t thúc
ử ụ
ươ
ữ
ng trình có s d ng khai báo d
ở ầ ủ
đ u c a ch
ng trình chính
ệ
ỗ
Chu i kí t
ấ
ằ
b ng d u $.
ế
ươ
N u trong ch
ệ
li u .DATA thì
ả
ph i có các l nh:
ủ
ỉ
MOV AX, @DATA
MOV DS, AX
ạ ữ
M c đích là đ đ t đ a ch segment c a đo n d
ụ
ệ
ể ặ ị
li u vào thanh ghi DS.
ế
Ki n trúc máy tính 2
36
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Chú ý:
ệ
ươ
ử ụ
ng trình trên có s d ng l nh LEA (Load
ư
Ch
Effective Address). Cú pháp l nh nh sau:
ụ
ặ
ồ
ỏ
ộ
ẽ ấ
ủ
ệ
ặ
ồ
ị
ệ
LEA <Đích>, ồ
ộ
<Đích>: là m t thanh ghi công d ng chung ho c
ỉ ố
thanh ghi con tr ch s .
ớ
: là m t ô nh .
ỉ
L nh này s l y đ a ch offset c a Ngu n đ t
vào Đích.
ế
Ki n trúc máy tính 2
37
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
ộ
Nh p m t kí t
ự ừ
t
bàn phím
ủ
ắ
ố
ứ
ế ể ọ
ư
Đây là ch c năng s 1 c a ng t 21h. Các tham
ắ
ố ầ
t đ g i ng t nh sau:
s c n thi
ủ
ự
Vào:
Ra:
AH = 1
ứ
AL ch a mã ASCII c a kí t
ế
Ki n trúc máy tính 2
38
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
Các l nh c th nh sau:
ụ ể ư
MOV AH, 1
INT 21h
ệ
ộ
ự
ẽ
ươ
ng trình s
ự ừ
t
ẽ ượ ấ
bàn phím,
c c t trong
ặ
Khi g p các l nh trên, ch
ờ
ạ
ừ
d ng l
i ch ta gõ m t kí t
ủ
đó s đ
mã ASCII c a kí t
thanh ghi AL.
ế
Ki n trúc máy tính 2
39
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Ví d :ụ
ộ
ậ
ổ
ng t
ồ
Nh p m t kí t
ự
nó thành kí t
ừ
ự ườ
th
bàn phím, đ i
ệ
in hoa r i hi n ra màn hình.
ế
Ki n trúc máy tính 2
40
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ố ậ ứ ộ
ự
sang in hoa
ệ ự ố
ế
ế
Ki n trúc máy tính 2
41
ạ ộ TITLE DOI KI TU
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 1 ;Ch c năng s 1: Nh p m t kí
tự
INT 21h
ổ
SUB AL, 20h ;Đ i kí t
ứ
MOV AH, 2 ;Ch c năng s 2: Hi n kí t
MOV DL, AL
INT 21h
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ậ
END MAIN
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ả
Gi
ơ
i thích:
Mã ASCII c a kí t
ự ườ
th
ủ
ươ ứ
ớ
ố
ự
ng l n h n kí t
ể ừ
ng ng là 20h. Mu n chuy n t
ỉ ệ ấ
ng thành in hoa thì ch vi c l y
ủ
ừ
in hoa t
ự ườ
th
kí t
mã ASCII c a nó tr đi 20h.
ế
Ki n trúc máy tính 2
42
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ
ươ
2.6.4 Cách ch y ch
ng trình Assembly
ộ
ữ
ị
ể
ướ ế
ợ
ươ
ng trình h p ng thì
c h t ph i biên d ch nó thành file thi hành
ề
ụ
ả
ẽ ử ụ
ề
ụ
ỏ ọ
i hai file:
ế
Ki n trúc máy tính 2
43
ể ạ
Đ có th ch y m t ch
ả
tr
(EXE, COM).
ề
ị
Có nhi u công c biên d ch khác nhau do nhi u
ộ
ấ
ầ
hãng ph n m m s n xu t. Ta s s d ng b
công c MASM (Microsoft Macro Assembler)
ễ
ủ
c a hãng MicroSoft vì nó khá nh g n và d
dùng.
ỉ ầ ớ
ể ắ ầ
Đ b t đ u thì ta ch c n t
ạ
ậ
ỹ
B môn K thu t máy tính & m ng –
MASM.EXE và LINK.EXE.
Khoa CNTT
ộ
ướ
ự
ệ
Các b
c th c hi n:
ươ
ng trình b ng
ướ
B c 1:
ả
ạ
ộ
ằ
ấ
ộ
ụ ạ
ầ
ở ộ
So n th o n i dung ch
ấ
ả
m t công c so n th o text b t kì, c t vào
file v i ph n m r ng là ASM.
ớ
ụ
Ví d : tên file là Baitap.asm
ế
Ki n trúc máy tính 2
44
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ướ
B c 2:
ị
ằ
ụ
D ch file ASM thành file OBJ b ng công c
ư
ệ
ể
MASM.EXE. Gõ l nh nh sau:
MASM Baitap; (Enter)
(file MASM.EXE và file Baitap.asm nên đ cùng
ộ
ế
ỗ
ng trình không có l
i)
ươ
c file Baitap.obj.
ị ỗ
ả ử
ế
i thì ph i s a, sau đó ti n
ế
Ki n trúc máy tính 2
45
ư ụ
m t th m c)
ị
N u d ch thành công (ch
ẽ
ượ
thì ta s thu đ
ươ
ế
N u ch
ng trình b l
ạ
ị
i.
hành d ch l
ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ ộ
ướ
B c 3:
ử ụ
ể
ế
ượ ở ướ
b
c
ượ
S d ng công c LINK.EXE đ liên k t
c 2 thành file
ụ
c (EXE). Vì trong ví d này
ư
ệ
ỉ
ụ
các file OBJ thu đ
thi hành đ
ch có 1 file OBJ nên cách gõ l nh nh sau:
ở
LINK Baitap; (Enter)
ư ụ
cùng th m c nói trên)
(file LINK.EXE cũng
ế
Ki n trúc máy tính 2
46
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ể ạ
c file Baitap.exe. Đ ch y
ệ
ượ
ẽ
Ta s thu đ
ỉ ệ
file này ch vi c gõ l nh:
Baitap (Enter)
ế
Ki n trúc máy tính 2
47
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ả
ệ
2.6.5 Các l nh nh y
ệ
ề
ề
ệ
ấ
ấ
ờ
ờ ạ
Thanh ghi c và các c tr ng thái
ệ
ả
Các l nh nh y có đi u ki n
ệ
ả
L nh nh y không đi u ki n JMP
ẽ
C u trúc r nhánh
ặ
C u trúc l p
ế
Ki n trúc máy tính 2
48
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ờ ạ
ờ
Thanh ghi c và các c tr ng
thái
ờ
ỗ
ượ ọ
ị
ướ
ủ
ộ
c g i là m t
Thanh ghi c dài 16 bít, m i bít đ
ụ
ờ
c và có công d ng riêng. D i đây là v trí c a
các c : ờ
15
14
13
12
11
10
9
8
7
6
5
4
3
1
0
2
OF DF IF TF SF ZF
AF
CF
PF
ế
Ki n trúc máy tính 2
49
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ứ
ủ
ờ
Tên và ch c năng c a các c
Tên cờ
ờ ớ Bit
0 C nh (Carry Flag) Kí hi uệ
CF
ờ ẵ ẻ 2 C ch n l (Parity Flag) PF
ớ ụ ờ 4 C nh ph (Auxiliary Flag) AF
ờ 6 C Zero (Zero Flag) ZF
ờ ấ 7 C d u (Sign Flag) SF
ờ 11 C tràn (OverFlow Flag) OF
ờ ẫ 8 C b y (Trap Flag) TF
ờ ắ 9 IF
ế
Ki n trúc máy tính 2
50
ng (Direction Flag) DF C đ nh h
ậ 10
ộ ạ
C ng t (Interrupt Flag)
ướ
ờ ị
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ờ
Các c chia làm hai nhóm khác nhau:
ồ
ờ ạ
ờ
ờ ề
ồ
ờ
Nhóm c tr ng thái (g m 6 c : CF, PF,
AF, ZF, SF, OF)
ể
Nhóm c đi u khi n (g m 3 c : TF, IF,
DF)
ộ ố ờ
ướ
ẽ
ể
D i đây ta s tìm hi u m t s c hay
dùng: CF, ZF, và OF
ế
Ki n trúc máy tính 2
51
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ờ
ớ
C nh CF:
ướ
ự
ệ
Xét các l nh sau đây:
MOV AX, 0FFFFh
ADD AX, 1
Tr
ự
ộ
ớ
ệ ệ
c khi th c hi n l nh ADD thì AX =
FFFFh = 1111 1111 1111 1111b = 65535
ệ
Sau khi th c hi n phép c ng v i 1 thì AX
ằ
b ng bao nhiêu?
ậ
ế
Ki n trúc máy tính 2
52
ạ ộ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
1111 1111 1111 1111b
+ 1
1 0000 0000 0000 0000b
ệ
ộ
ả ượ
ứ ủ
ọ
ạ
ộ
ấ
ố
t quá ph m vi ch a c a AX (g i là
ng tràn khi c ng s không d u). Khi đó
ượ
ế ậ
ế ậ
ự
ự
ệ
ệ
Thanh ghi AX dài 16 bit nên sau l nh ADD thì
AX = 0! Phép c ng đã không còn chính xác do
ế
k t qu v
ệ ượ
hi n t
ằ
ờ
t l p b ng 1.
c thi
c CF đ
ẽ ượ
ờ
ư ậ
t l p khi th c
c thi
Nh v y, c CF s đ
ớ ở
ặ
ộ
hi n phép c ng có nh
bít Msb ho c khi th c
ở
ừ
bít Msb.
hi n phép tr có vay
ế
Ki n trúc máy tính 2
53
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ờ
C Zero ZF:
ệ
Xét các l nh sau đây:
MOV CX, 2Ah
SUB CX, 2Ah
ệ ệ
Sau khi th c hi n l nh SUB thì CX = 0,
ế ậ
ự
ượ
c thi
ờ
ế
ế ậ
t l p khi k t
ằ
ừ
ằ
ờ
t l p b ng 1.
c ZF đ
ẽ ượ
ư ậ
c thi
Nh v y, c ZF s đ
ệ
ự
ả ủ ệ
qu c a l nh v a th c hi n b ng 0.
ế
Ki n trúc máy tính 2
54
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ờ
C tràn OF:
ướ
ự
ệ
ộ
ế
Ki n trúc máy tính 2
55
ệ
Xét các l nh sau đây:
MOV AX, 7FFFh
ADD AX, 7FFFh
ệ ệ
c khi th c hi n l nh ADD thì AX =
Tr
7FFFh = 0111 1111 1111 1111b = 32767
ằ
ự
Sau khi th c hi n phép c ng thì AX b ng
bao nhiêu?
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ ạ ộ
0111 1111 1111 1111b
+ 0111 1111 1111 1111b
1111 1111 1111 1110b
ế
ệ
ấ
ệ
ờ
ế
ế
ạ
ọ
ờ
ả ượ
t
ng
c
ẽ ượ
t l p khi xu t
c thi
ấ
ớ ố
ế ậ
ng tràn trong phép tính v i s có
ế
Ki n trúc máy tính 2
56
Sau l nh ADD thì AX = FFFEh. N u coi đây là
ố
s không d u thì AX = 65534, không có hi n
ố
ư
ượ
ng tràn, c CF = 0. Nh ng n u coi đây là s
t
ấ
có d u thì AX = 2 (32767 + 32767 = 2!), phép
ộ
c ng đã không còn chính xác do k t qu v
ệ ượ
ứ ủ
quá ph m vi ch a c a AX (g i là hi n t
ượ
ấ
ố
ộ
tràn khi c ng s có d u). Khi đó c OF đ
ằ
ế ậ
thi
t l p b ng 1.
ờ
ư ậ
Nh v y, c OF s đ
ệ ượ
ệ
hi n hi n t
d u. ấ
ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ ộ
ả
ệ
ề
Các l nh nh y có đi u ki n
ự
ậ
ố
ự ừ
ể
ậ
v a nh p
ế
ế
Ki n trúc máy tính 2
57
ạ ộ
ệ
Ví d :ụ
TITLE Lenh nhay
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
NHAPLAI:
ứ
MOV AH, 1 ;Ch c năng s 1: Nh p 1 kí t
INT 21h
CMP AL, ’ ’ ;Ki m tra kí t
JZ NHAPLAI
...
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ậ
ỹ
B môn K thu t máy tính & m ng –
END MAIN
Khoa CNTT
ả
Gi
i thích:
ộ
ậ
ươ
ể
ả
ả
ế
ố
ậ ạ
ượ
i. Quá trình đó đ
ệ
ờ ệ
ự ừ
ẽ
Ch
t
ng trình trên s nh p m t kí t
ự
bàn phím, ki m tra xem đó có ph i là kí t
kho ng tr ng ‘ ’ hay không, n u đúng thì
ế
ự
c th c
ti n hành nh p l
ả
ệ
hi n nh l nh so sánh CMP và l nh nh y
JZ.
ế
Ki n trúc máy tính 2
58
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
L nh CMP (Compare)
Cú pháp l nh:ệ
ươ
ệ
CMP <Đích>, ồ
ụ
L nh này có tác d ng t
ừ ữ
ng t
ồ
ệ
ự ệ
l nh SUB, nó th c hi n
ự
t là
ừ
ỉ
ị
ệ
ự
ở ỗ
ch :
ờ
phép tr gi a Đích và Ngu n. S khác bi
ổ
Đích không b thay đ i sau phép tr , ch có các c là thay
đ i.ổ
Ví d : ụ
ộ
ệ
ủ
ủ
ế
ố
ừ
kho ng tr ng). N u k t qu mà b ng 0,
ờ
CMP AL, ‘ ’
L nh trên s l y n i dung c a AL tr cho 20h (mã
ằ
ế ậ
t l p
ả
ế
ẽ ượ
c thi
ệ
ề
ế
Ki n trúc máy tính 2
59
ả
ẽ ấ
ả
ự
ASCII c a kí t
ứ
t c là AL = 20h (AL = ‘ ‘), thì c ZF s đ
ằ
b ng 1.
ậ
ộ
ỹ
B môn K thu t máy tính & m ng –
ủ
ạ
Tr ng thái c a các c s đ
Khoa CNTT
ệ
cho các l nh nh y
ạ
ờ ẽ ượ ử ụ
c s d ng làm đi u ki n
ệ
ả
L nh nh y JZ
ệ
ả
ờ
ệ
L nh JZ là l nh nh y khi c ZF = 1
(Jump if Zero).
Cú pháp l nh:ệ
ẽ ể
ả ớ
ự
JZ
ệ
ươ
ng trình trên, l nh JZ s ki m
ẽ
ế
i nhãn
ệ
ệ ạ
i các l nh
Trong ch
ờ
tra c ZF, n u ZF = 1 thì s nh y t
NHAPLAI, nghĩa là th c hi n l
ậ ữ ệ
nh p d li u.
ế
Ki n trúc máy tính 2
60
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ả
M t s l nh nh y
ớ ạ
ứ
ả
ờ
ộ ố ệ
ề ệ
Có nhi u l nh nh y khác nhau ng v i tr ng thái
ủ
khác nhau c a các c :
ứ
ề
ả
L nhệ
Ch c năng
ệ
Đi u ki n nh y
ế
ế
ế
ớ
Nh y n u có nh (Jump if Carry)
ớ
Nh y n u không nh (Jump if Not Carry)
ấ
Nh y n u tràn có d u (Jump if OverFlow)
ế
Nh y n u không
(Jump
tràn
if Not
JC
JNC
JO
JNO
JS
JNS
...
ng (Jump if Not Sign)
CF = 1
CF = 0
OF = 1
OF = 0
SF = 1
SF = 0
...
ả
ả
ả
ả
OverFlow)
ế
ả
ấ
Nh y n u d u âm (Jump if Sign)
ấ ươ
ế
ả
Nh y n u d u d
...
ế
Ki n trúc máy tính 2
61
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
ả
ế ợ ệ
ệ
ả
ả
ơ
Đ n gi n hoá cách dùng l nh nh y
ắ
K t h p l nh nh y và l nh CMP theo quy t c
sau:
ề
ả
ệ
CMP <Đích>, ồ
ả
ệ
Đi u ki n nh y
ệ
L nh nh y
không d uấ
JA/ JNBE
JB/ JNAE
JE/ JZ
JAE/ JNB
JBE/ JNA
JNE/ JNZ
ả
L nh nh y có
d uấ
JG/ JNLE
JL/ JNGE
JE/ JZ
JGE/ JNL
JLE/ JNG
JNE/ JNZ
ế
Ki n trúc máy tính 2
62
Đích > Ngu nồ
Đích < Ngu nồ
Đích = Ngu nồ
Đích ≥ Ngu nồ
Đích ≤ Ngu nồ
Đích ≠ Ngu nồ
ỹ
ộ
ậ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ
ộ ố ừ ế ắ
M t s t
vi
t t
t:
ớ
A: Above (l n h n) = G: Greater than
ơ
ỏ ơ
B: Below (nh h n) = L: Less than
E: Equal (b ng)ằ
N: Not (không)
Ví d : ụ
JNA: Jump if Not Above = JBE: Jump if
Below Equal
ế
Ki n trúc máy tính 2
63
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Gi
ể ạ
ộ ệ
ẽ ứ
ể ự ả
ả
i thích:
ả ầ
ỗ ệ
ướ
c m i l nh nh y c n dùng m t l nh CMP đ t o
Tr
ệ
ườ ậ
ả
ệ
ề
i l p trình s căn c vào quan h
đi u ki n nh y. Ng
ọ ệ
ồ
ữ
gi a <Đích> và đ l a ch n l nh nh y thích
h p.ợ
Ví d :ụ
ế CMP AL, 5Ah
JA KetThuc ;N u AL > 5Ah thì
nh yả
; t i nhãn KetThuc
ớ
ể ử ụ ồ ệ ả
ế
ặ ườ ồ ố
ng h p Đích và Ngu n là s
ấ ố
ế
Ki n trúc máy tính 2
64
ộ ấ ố
N u Đích > Ngu n: Ta có th s d ng l nh nh y JA
ợ
ho c JNBE (trong tr
ệ
ệ
ụ
không d u). Hai l nh này có tác d ng gi ng h t nhau.
ậ
ạ
ỹ
ả ử ụ
ồ
ế
B môn K thu t máy tính & m ng –
N u coi đích và ngu n là các s có d u thì ph i s d ng
ặ
ệ
l nh JG ho c JNLE.
Khoa CNTT
ả
ề
ệ
ệ
L nh nh y không đi u ki n
JMP
ệ
ề
ả
ể
ể
ả ớ
ướ
ứ
ả
ể
ượ
c đi m là không th nh y quá xa.
ộ
i m t nhãn đ ng
ặ ứ
ể ử ụ
ụ
ệ
ắ
ề
ệ
ệ
ệ
Các l nh nh y có đi u ki n mà ta đã nghiên c u
ộ
có m t nh
ứ
ỉ
ệ
Các l nh đó ch có th nh y t
tr
c nó không quá 126 byte ho c đ ng sau
không quá 127 byte.
ể
ề
Đ kh c ph c đi u này có th s d ng l nh
ư
ả
nh y không đi u ki n JMP. Cú pháp l nh nh
sau:
ủ
ạ
ộ
JMP
ớ
ả ằ
V trí c a ph i n m cùng m t đo n nh
ế
Ki n trúc máy tính 2
65
ị
ả
ớ ệ
v i l nh nh y JMP.
ỹ
ậ
B môn K thu t máy tính & m ng –
Khoa CNTT
ạ ộ
ộ ậ ự
ự ừ
ế
ệ ượ
ả
c khi kho ng cách
ỉ ự
ặ
ị
ệ
ế
Ki n trúc máy tính 2
66
ậ ạ
Ví d :ụ
ạ ệ
Xét đo n l nh sau:
MOV AH, 1 ;Nh p m t kí t
INT 21h
ớ
ậ
v a nh p v i ‘Z’
CMP AL, ‘Z’ ;So sánh kí t
ả ớ
i nhãn
JA KetThuc ;N u AL > ‘Z’ thì nh y t
KetThuc
... ;Các l nh khác
KetThuc:
MOV AH, 4Ch
INT 21h
ạ ệ
Đo n l nh trên ch th c hi n đ
ữ ệ
gi a l nh JA và v trí đ t nhãn KetThuc không quá
127 byte.
ỹ
ộ
B môn K thu t máy tính & m ng –
Khoa CNTT
ả
ướ
ươ
c” :
ng pháp “nh y hai b
ộ
ậ
ự
ự ừ
ế
ớ
ậ
v a nh p v i ‘Z’
ả ớ
i
ệ
ử ụ ph
S d ng
MOV AH, 1 ;Nh p m t kí t
INT 21h
CMP AL, ‘Z’ ;So sánh kí t
JA NhanTrungGian ;N u AL > ‘Z’ thì nh y t
NhanTrungGian
JMP TiepTuc
NhanTrungGian:
JMP KetThuc
TiepTuc:
... ;Các l nh khác
KetThuc:
MOV AH, 4Ch
INT 21h
ế
Ki n trúc máy tính 2
67
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ấ
ẽ
C u trúc r nhánh IF
ị
ủ
ệ
ả
sau l nh nh y:
ẽ
ố ớ ấ
Đ i v i c u trúc r nhánh thì v trí c a
ẽ ứ ở
nhãn s đ ng
ả
ệ
....
ế
Ki n trúc máy tính 2
68
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ộ
ự
ự ừ
t
bàn phím, n u là kí t
in
Nh p m t kí t
ổ
ế
ệ
ự
ra màn hình.
ư
th
Thu t toán nh sau:
ộ
ự KT
Ví d : ụ
ậ
ườ
ng thì đ i sang in hoa. Hi n kí t
ậ
+ Nh p m t kí t
ậ
+ IF (KT ≤ ‘z’) AND (KT ≥ ‘a’) THEN Đ i KT sang in hoa
ổ
ệ + Hi n KT ra màn hình
ế
Ki n trúc máy tính 2
69
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ự
ậ
ộ
ệ
ự
TITLE DOI KI TU
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 1 ;Nh p m t kí t
INT 21h
CMP AL, ’z’
ế
JA HienChu ;N u AL > ’z’ thì hi n kí t
ra màn hình
ệ
ự
CMP AL, ’a’
ế
JB HienChu ;N u AL < ’a’ thì hi n kí t
ra màn hình
ổ
ự
sang in hoa
ệ
ố
ự
ế
;K t thúc
ế
Ki n trúc máy tính 2
70
SUB AL, 20h ;Đ i kí t
HienChu:
ứ
MOV AH, 2 ;Ch c năng s 2: Hi n kí t
MOV DL, AL
INT 21h
MOV AH, 4Ch
INT 21h
ậ
ỹ
B môn K thu t máy tính & m ng –
MAIN ENDP
Khoa CNTT
END MAIN
ạ ộ
ấ
ặ
C u trúc l p
ặ
ế ướ ố ầ ặ
t tr
c s l n l p (While,
ế ướ
t tr
c (For)
L p không bi
Repeat)
ặ ớ ố ầ ặ
L p v i s l n l p bi
ặ
ệ
L nh l p LOOP
ế
Ki n trúc máy tính 2
71
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ố ớ
ủ
ả
ị
Đ i v i các c u trúc l p nói chung thì v
c l nh nh y:
trí c a nhãn s đ ng
ấ
ặ
ẽ ứ ở ướ ệ
tr
ệ
...
ả
ế
Ki n trúc máy tính 2
72
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ế ướ ố ầ ặ
ặ
c s l n l p (While,
t tr
L p không bi
Repeat)
Ví d : ụ
ậ
ộ
bàn phím (‘0’, ‘1’, ... , ‘9’),
Nh p m t kí t
ự ố ừ
s t
ố ậ
ươ ứ
ổ
đ i nó sang s th p phân t
ng ng.
ố
Nhân đôi s đó.
ư
Thu t toán nh sau:
ộ
KT
ổ
ậ
REPEAT
ự
ậ
Nh p m t kí t
UNTIL (KT ≥ ‘0’) AND (KT ≤ ‘9’)
ố ậ
Đ i KT sang s th p phân
Nhân đôi số
ế
Ki n trúc máy tính 2
73
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ộ
ậ
ự
ậ ạ
i
ố ậ
i
ươ
ng
ế
ệ
;K t thúc
ế
Ki n trúc máy tính 2
74
TITLE VI DU LAP
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
NhapLai:
MOV AH, 1 ;Nh p m t kí t
INT 21h
CMP AL, ’0’
ế
JB NhapLai ;N u AL < ’0’ thì nh p l
CMP AL, ’9’
ậ ạ
ế
JA NhapLai ;N u AL > ’9’ thì nh p l
ổ
SUB AL, 30h ;Đ i sang s th p phân t
ngứ
... ;Các l nh khác
MOV AH, 4Ch
INT 21h
MAIN ENDP
ậ
ỹ
B môn K thu t máy tính & m ng –
END MAIN
Khoa CNTT
ạ ộ
ằ
ằ
‘9’ có mã ASCII b ng 39h
ự ố
ằ
ố ậ
s sang s th p phân t
ủ
ươ
ừ
ả
Gi
i thích:
ự
‘0’ có mã ASCII b ng 30h
Kí t
ự
‘1’ có mã ASCII b ng 31h
Kí t
...
ự
Kí t
ể ổ
Đ đ i kí t
ng
ấ
ứ
ng, ta l y mã ASCII c a nó đem tr cho
30h.
ộ
ế
Ki n trúc máy tính 2
75
ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ặ ớ ố ầ ặ
L p v i s l n l p bi
ế ướ
t tr
c (For)
ố
ứ
Hi n ra màn hình 10 s nguyên theo th
ư
ậ
Ví d :ụ
ệ
ự
: 0, 1, 2, 3, ..., 9.
t
Thu t toán nh sau:
ệ
FOR I = 0 TO 9 DO
ế
Ki n trúc máy tính 2
76
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ằ
ị ế
ở ạ
ổ ố
ự ố ươ
s t
ng
ệ
ố
ự
ế
ặ ạ
ế
i
ế
;K t thúc
TITLE VI DU LAP FOR
.MODEL SMALL
.STACK 100H
.DATA
I DB 0 ;Kh i t o giá tr bi n I b ng 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
Lap:
MOV DL, I
ADD DL,30h ;Đ i s nguyên sang kí t
ngứ
ứ
MOV AH, 2 ;Ch c năng s 2: Hi n kí t
INT 21h
INC I ;Tăng bi n I lên 1
CMP I, 10
JNZ Lap ;N u I ≠ 10 thì l p l
MOV AH, 4Ch
INT 21h
MAIN ENDP
END MAIN
ế
Ki n trúc máy tính 2
77
ậ ạ ộ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
ặ
L nh l p LOOP
ợ
ấ
ệ
ặ
ẵ
ế ướ ố ầ ặ
t tr
t l nh nh sau:
ữ ể
Đây là c u trúc l nh có s n trong h p ng đ
ệ
ự
th c hi n các vòng l p bi
c s l n l p.
ế ệ
Cách vi
ố ầ ặ
ầ ặ
ư
MOV CX,
NHANLAP:
ệ
... ;Các l nh c n l p
LOOP NHANLAP
ỗ
ố ầ ặ ượ ặ
S l n l p đ
ầ ặ
l n l p thì CX đ
c đ t vào thanh ghi CX, sau m i
ả
ượ ự ộ
đ ng gi m đi 1.
c t
ế
Ki n trúc máy tính 2
78
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ằ
ị ế
ở ạ
ố ầ ặ
ổ ố
ự ố ươ
s t
ng
ệ
ố
ự
ế
ế
TITLE VI DU LAP LOOP
.MODEL SMALL
.STACK 100H
.DATA
I DB 0 ;Kh i t o giá tr bi n I b ng 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV CX, 10 ;S l n l p
Lap:
MOV DL, I
ADD DL,30h ;Đ i s nguyên sang kí t
ngứ
ứ
MOV AH, 2 ;Ch c năng s 2: Hi n kí t
INT 21h
INC I ;Tăng bi n I lên 1
LOOP Lap
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
END MAIN
ế
Ki n trúc máy tính 2
79
ạ ậ ộ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ế
ầ
H t Ph n 2.2
ế
Ki n trúc máy tính 2
80
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ng trình chính> ạ
ế
Ki n trúc máy tính 2
11
ộ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ ố ệ
ườ
2.6.2 M t s l nh th
ng dùng
ấ ệ ệ ệ ệ ệ
ệ C u trúc câu l nh Assembly L nh MOV (Move) L nh XCHG (Exchange) L nh ADD và SUB (Subtract) L nh INC (Increment) và DEC (Decrement) L nh NEG (Negartive)
ế
Ki n trúc máy tính 2
12
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ
ệ C u trúc câu l nh Assembly
ộ
ầ
ệ
ợ ạ
ữ ồ ầ
ế
c
ề ớ
ạ ằ
ấ
ả
ạ
ạ
ờ
M t câu l nh h p ng g m 3 ph n: Tên
ệ
l nh, các toán h ng, ph n chú thích.
ượ
N u có nhi u toán h ng thì chúng đ
phân cách v i nhau b ng d u ph y (,).
ệ thích] Ví du:
ủ
ể
ộ
ế
Ki n trúc máy tính 2
13
MOV DS, AX ;Chuy n n i dung c a thanh ghi AX vào thanh ghi ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ ộ DS
ệ
L nh MOV (Move)
ể ữ ệ
ữ
ể
ệ
ượ ử ụ
c s d ng đ chuy n d li u gi a
L nh này đ các thanh ghi hay ô nh .ớ Cú pháp l nh:ệ
ớ
ộ
ộ
ộ
ặ
ộ
MOV <Đích>,
ồ
c chuy n t
ể
ổ
ế
Ki n trúc máy tính 2
14
ồ ộ ằ ố m t h ng s ộ ể ừ ữ ệ ẽ ượ Ngu n vào Đích (n i D li u s đ ồ ủ dung c a Ngu n không thay đ i sau khi chuy n) ỹ ạ B môn K thu t máy tính & m ng – Khoa CNTT
ậ ộ
Ví d 1: ụ
ể
ệ
MOV AX, 4C00h ị L nh trên chuy n giá tr 4C00h vào thanh
ghi AX. Ví d 2: ụ
ị ủ
ể
ệ
ế
MOV AL, A L nh trên chuy n giá tr c a bi n A vào
thanh ghi AL.
ế
Ki n trúc máy tính 2
15
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Chú ý:
ể
ượ
ự ế c chuy n tr c ti p n i dung
ạ
ể
ự ế c chuy n tr c ti p n i dung
ộ ằ
ể
ự ế c chuy n tr c ti p m t h ng ạ
ộ Không đ ủ c a hai thanh ghi đo n cho nhau ộ ượ Không đ ế ủ c a hai bi n cho nhau ượ Không đ ộ ố s vào m t thanh ghi đo n
ế
Ki n trúc máy tính 2
16
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
ệ
ề
Các l nh sau đ u sai:
MOV CS, DS MOV A, B MOV DS, 2000h ử ụ
ụ
ể
ắ
Đ kh c ph c: s d ng trung gian:
MOV AX, DS ; dùng AX làm trung gian MOV CS, AX
ế
Ki n trúc máy tính 2
17
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh XCHG (Exchange)
ể
ệ ệ
ổ ữ ệ ữ L nh này dùng đ hoán đ i d li u d ạ ữ li u gi a hai toán h ng. Cú pháp l nh:ệ
ạ
ạ
ặ
ộ
ớ
ạ
XCHG
ế
Ki n trúc máy tính 2
18
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d : ụ
ổ ộ
XCHG AX, BX ;hoán đ i n i dung
c aủ
; AX và BX
ế
Ki n trúc máy tính 2
19
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh ADD và SUB (Subtract)
Cú pháp l nh:ệ
ộ
ộ
ớ
ặ
ộ
ộ
ADD <Đích>,
ố
ồ ộ ằ m t h ng s
ồ
ệ
ớ
ế
ồ
ừ
ế
ồ
ệ ứ
ờ
ồ
ớ
<Đích>,
ế
Ki n trúc máy tính 2
20
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
ộ
ộ
ấ
ổ
ừ ộ ế
ADD AX, 10 ;Tăng n i dung c a ủ ; thanh ghi AX lên 10 ộ ADD BX, AX ;C ng n i dung 2 thanh ghi ; AX và BX, t ng c t vào BX SUB AX, B ;Tr n i dung thanh ghi AX ; cho bi n B
ế
Ki n trúc máy tính 2
21
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh INC (Increment) và DEC (Decrement)
Cú pháp l nh:ệ
ớ
INC <Đích> DEC <Đích> <Đích>: là m t thanh ghi hay m t ô nh
ộ ẽ
ộ ộ
ẽ ả
ừ
ệ L nh INC s tăng Đích lên 1 (c ng Đích ớ v i 1). ệ L nh DEC s gi m Đích đi 1 (tr Đích cho 1).
ế
Ki n trúc máy tính 2
22
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
ộ
ộ
ủ
ị ủ
ừ
ế
INC AH ;C ng n i dung c a ; thanh ghi AH v i 1ớ DEC B ;Tr giá tr c a bi n B ; cho 1
ế
Ki n trúc máy tính 2
23
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh NEG (Negartive)
Cú pháp l nh:ệ
ộ
ộ
ổ ấ
ạ
NEG <Đích> ớ <Đích>: là m t thanh ghi hay m t ô nh . ụ ệ L nh này có tác d ng đ i d u toán h ng Đích. Ví d :ụ
ế
Ki n trúc máy tính 2
24
NEG AL ạ ậ ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ậ
ấ ữ ệ 2.6.3 Nh p/xu t d li u
ươ ứ
ấ ủ
ậ
ắ
ắ ng trình ng t Ch Ch c năng nh p/xu t c a ng t 21h
ế
Ki n trúc máy tính 2
25
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ch
ự
ế ẵ
ươ ng trình con đã ứ ữ ệ t s n nh m th c hi n nh ng ch c năng
ớ
ươ
ố
c phân ph i kèm
ượ ể
ệ ố
ề
ể ử ụ
ng
ệ
ẵ
ắ ươ ng trình ng t ươ ữ ắ ng trình ng t là nh ng ch Ch ằ ượ c vi đ ơ ả c b n khi thao tác v i máy tính. ng trình con này đ Các ch ư ề ầ theo các ph n m m đi u khi n h th ng nh ệ ề BIOS, H đi u hành. ộ ố ệ ươ ỗ ng trình có m t s hi u riêng (0, 1, M i ch ươ ậ 2, ...). Khi l p trình ta có th s d ng các ch ằ trình con có s n này b ng cách dùng l nh INT (interrupt). ệ Cú pháp l nh: ố ệ ạ
ế
Ki n trúc máy tính 2
26
ắ
INT
ỹ
ộ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
Ví d 1:ụ
ự
ệ
ệ
ắ ố ng trình ng t s
INT 21h ẽ ọ L nh trên s g i th c hi n ch ố ệ
ươ ử ụ
ấ ủ
ắ 21h (đây là s hi u ng t hay s d ng nh t c a DOS). Ví d 2:ụ
ệ
ươ
INT 13h ẽ ọ ự L nh trên s g i th c hi n ch ố ệ ừ
ớ
ệ ắ ố ng trình ng t s ể ắ ủ 13h (đây là s hi u ng t c a BIOS, dùng đ thao tác v i đĩa t ).
ế
Ki n trúc máy tính 2
27
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ ủ
ứ
ậ
ắ
Ch c năng nh p/xu t c a ng t 21h
ắ
ề
ủ
ấ ấ
ỗ
ứ
ầ
ớ
ậ
ứ
ấ ữ i ch c năng nh p xu t d
ọ
ứ
ị ượ ặ ầ
ươ
ố
ị ủ
ế
Ki n trúc máy tính 2
28
ứ Ng t 21h c a DOS cung c p r t nhi u ch c ộ năng khác nhau, m i ch c năng cũng có m t ố ệ s hi u riêng (0, 1, 2, ...). Trong ph n này ta ỉ ch quan tâm t li u. ệ ướ ượ ố ắ ầ Tr c s c khi g i ng t c n xác đ nh đ ố ệ ệ c đ t vào hi u ch c năng, s hi u đó đ thanh ghi AH. Ngoài ra cũng c n quan tâm ắ ẽ ớ ng trình ng t s t i các tham s khác (ch ử ụ s d ng thanh ghi nào? Giá tr c a chúng ậ ỹ B môn K thu t máy tính & m ng – ằ b ng bao nhiêu?...) Khoa CNTT
ạ ộ
ệ
ộ
ự
Hi n m t kí t
ra màn hình
ủ
ắ
ư
ố ứ Đây là ch c năng s 2 c a ng t 21h. Các ế ể ọ ố ầ tham s c n thi
ắ t đ g i ng t nh sau:
Vào:
ủ
ự ầ
ể
ị
AH = 2 DL = Mã ASCII c a kí t
c n hi n th
ủ
ứ
ự ể
Ra:
AL ch a mã ASCII c a kí t
ị hi n th
ế
Ki n trúc máy tính 2
29
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ụ
ệ
ự
Ví d 2: Hi n kí t
‘M’ ra màn hình
MOV AH, 2 MOV DL, ‘M’ INT 21h
ế
Ki n trúc máy tính 2
30
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ươ
ầ ủ
Ch
ng trình đ y đ
TITLE HIEN KI TU .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 2 ;Ch c ứ
năng s 2ố
ự ầ
c n
hi n thể
ắ
ọ
ế
MOV DL, ’M’ ;Kí t ị INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP ậ END MAIN
ế
Ki n trúc máy tính 2
31
ộ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Chú ý:
ươ
ứ
ng trình trên có s d ng ch c năng
ử ụ ứ
ắ
ng trình và tr l ệ ề
ụ ề
ể
Ch ủ ố s 4Ch c a ng t 21h. Ch c năng này có ả ạ ươ ế tác d ng k t thúc ch i ề quy n đi u khi n cho h đi u hành DOS.
ế
Ki n trúc máy tính 2
32
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
ỗ
ộ
ự
Hi n m t chu i kí t
ra màn hình
ủ
ắ
ố
ứ ế ể ọ
ư
Đây là ch c năng s 9 c a ng t 21h. Các tham ắ ố ầ t đ g i ng t nh sau: s c n thi
Vào:
ứ
ủ
ớ
ị
AH = 9 DX = Đ a ch offset c a vùng nh ch a
ỉ ự
ỗ chu i kí t
ế
Ki n trúc máy tính 2
33
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d : ụ ệ
ữ
Hi n ra màn hình dòng ch : KHOA CONG NGHE THONG TIN
ế
Ki n trúc máy tính 2
34
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ố
ự ặ ứ ấ ỗ ị ỉ đ t vào
ắ
ọ ế
ế
Ki n trúc máy tính 2
35
ậ ạ ộ
TITLE HIEN CHUOI KT .MODEL SMALL .STACK 100H .DATA ChuoiKT DB ’KHOA CONG NGHE THONG TIN$’ .CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV AH, 9 ;Ch c năng s 9 LEA DX, ChuoiKT ;L y đ a ch chu i kí t DX INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP ỹ B môn K thu t máy tính & m ng – END MAIN Khoa CNTT
Chú ý:
ự ầ
ả ượ ế
ể
ị
c n hi n th ph i đ
c k t thúc
ử ụ ươ
ữ ng trình có s d ng khai báo d ở ầ ủ đ u c a ch
ng trình chính
ệ
ỗ Chu i kí t ấ ằ b ng d u $. ế ươ N u trong ch ệ li u .DATA thì ả ph i có các l nh:
ủ
ỉ
MOV AX, @DATA MOV DS, AX ạ ữ M c đích là đ đ t đ a ch segment c a đo n d
ụ ệ
ể ặ ị li u vào thanh ghi DS.
ế
Ki n trúc máy tính 2
36
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Chú ý:
ệ
ươ
ử ụ
ng trình trên có s d ng l nh LEA (Load
ư
Ch Effective Address). Cú pháp l nh nh sau:
ụ
ặ
ồ
ỏ ộ ẽ ấ
ủ
ệ
ặ
ồ
ị
ệ
LEA <Đích>,
ế
Ki n trúc máy tính 2
37
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ậ
ộ
Nh p m t kí t
ự ừ t
bàn phím
ủ
ắ
ố
ứ ế ể ọ
ư
Đây là ch c năng s 1 c a ng t 21h. Các tham ắ ố ầ t đ g i ng t nh sau: s c n thi
ủ
ự
Vào: Ra:
AH = 1 ứ AL ch a mã ASCII c a kí t
ế
Ki n trúc máy tính 2
38
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Các l nh c th nh sau:
ụ ể ư MOV AH, 1 INT 21h
ệ
ộ
ự
ẽ ươ ng trình s ự ừ t ẽ ượ ấ
bàn phím, c c t trong
ặ Khi g p các l nh trên, ch ờ ạ ừ d ng l i ch ta gõ m t kí t ủ đó s đ mã ASCII c a kí t thanh ghi AL.
ế
Ki n trúc máy tính 2
39
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
ộ
ậ
ổ
ng t ồ
Nh p m t kí t ự nó thành kí t
ừ ự ườ th bàn phím, đ i ệ in hoa r i hi n ra màn hình.
ế
Ki n trúc máy tính 2
40
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ố ậ ứ ộ
ự
sang in hoa ệ ự ố
ế
ế
Ki n trúc máy tính 2
41
ạ ộ TITLE DOI KI TU .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 1 ;Ch c năng s 1: Nh p m t kí tự INT 21h ổ SUB AL, 20h ;Đ i kí t ứ MOV AH, 2 ;Ch c năng s 2: Hi n kí t MOV DL, AL INT 21h MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP ậ END MAIN
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ả
Gi
ơ
i thích: Mã ASCII c a kí t
ự ườ th
ủ ươ ứ
ớ ố
ự ng l n h n kí t ể ừ ng ng là 20h. Mu n chuy n t ỉ ệ ấ ng thành in hoa thì ch vi c l y
ủ
ừ
in hoa t ự ườ th kí t mã ASCII c a nó tr đi 20h.
ế
Ki n trúc máy tính 2
42
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ
ươ
2.6.4 Cách ch y ch
ng trình Assembly
ộ
ữ
ị
ể ướ ế
ợ ươ ng trình h p ng thì c h t ph i biên d ch nó thành file thi hành
ề
ụ ả
ẽ ử ụ
ề
ụ
ỏ ọ
i hai file:
ế
Ki n trúc máy tính 2
43
ể ạ Đ có th ch y m t ch ả tr (EXE, COM). ề ị Có nhi u công c biên d ch khác nhau do nhi u ộ ấ ầ hãng ph n m m s n xu t. Ta s s d ng b công c MASM (Microsoft Macro Assembler) ễ ủ c a hãng MicroSoft vì nó khá nh g n và d dùng. ỉ ầ ớ ể ắ ầ Đ b t đ u thì ta ch c n t ạ ậ ỹ B môn K thu t máy tính & m ng – MASM.EXE và LINK.EXE. Khoa CNTT
ộ
ướ
ự
ệ
Các b
c th c hi n:
ươ
ng trình b ng
ướ B c 1: ả ạ ộ
ằ ấ
ộ ụ ạ ầ
ở ộ
So n th o n i dung ch ấ ả m t công c so n th o text b t kì, c t vào file v i ph n m r ng là ASM.
ớ ụ
Ví d : tên file là Baitap.asm
ế
Ki n trúc máy tính 2
44
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ướ B c 2: ị
ằ
ụ D ch file ASM thành file OBJ b ng công c
ư
ệ
ể
MASM.EXE. Gõ l nh nh sau: MASM Baitap; (Enter) (file MASM.EXE và file Baitap.asm nên đ cùng
ộ ế
ỗ
ng trình không có l
i)
ươ c file Baitap.obj.
ị ỗ
ả ử
ế
i thì ph i s a, sau đó ti n
ế
Ki n trúc máy tính 2
45
ư ụ m t th m c) ị N u d ch thành công (ch ẽ ượ thì ta s thu đ ươ ế N u ch ng trình b l ạ ị i. hành d ch l ậ ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ộ
ướ B c 3: ử ụ
ể
ế
ượ ở ướ
b
c
ượ
S d ng công c LINK.EXE đ liên k t c 2 thành file ụ c (EXE). Vì trong ví d này
ư
ệ
ỉ
ụ các file OBJ thu đ thi hành đ ch có 1 file OBJ nên cách gõ l nh nh sau:
ở
LINK Baitap; (Enter) ư ụ cùng th m c nói trên) (file LINK.EXE cũng
ế
Ki n trúc máy tính 2
46
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ể ạ
c file Baitap.exe. Đ ch y
ệ
ượ ẽ Ta s thu đ ỉ ệ file này ch vi c gõ l nh: Baitap (Enter)
ế
Ki n trúc máy tính 2
47
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ả ệ 2.6.5 Các l nh nh y
ệ
ề ề
ệ ấ ấ
ờ ờ ạ Thanh ghi c và các c tr ng thái ệ ả Các l nh nh y có đi u ki n ệ ả L nh nh y không đi u ki n JMP ẽ C u trúc r nhánh ặ C u trúc l p
ế
Ki n trúc máy tính 2
48
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ờ ạ
ờ
Thanh ghi c và các c tr ng thái
ờ
ỗ
ượ ọ ị
ướ
ủ
ộ c g i là m t Thanh ghi c dài 16 bít, m i bít đ ụ ờ c và có công d ng riêng. D i đây là v trí c a các c : ờ
15
14
13
12
11
10
9
8
7
6
5
4
3
1
0
2
OF DF IF TF SF ZF
AF
CF
PF
ế
Ki n trúc máy tính 2
49
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ứ
ủ
ờ Tên và ch c năng c a các c Tên cờ
ờ ớ Bit 0 C nh (Carry Flag) Kí hi uệ CF
ờ ẵ ẻ 2 C ch n l (Parity Flag) PF
ớ ụ ờ 4 C nh ph (Auxiliary Flag) AF
ờ 6 C Zero (Zero Flag) ZF
ờ ấ 7 C d u (Sign Flag) SF
ờ 11 C tràn (OverFlow Flag) OF
ờ ẫ 8 C b y (Trap Flag) TF
ờ ắ 9 IF
ế
Ki n trúc máy tính 2
50
ng (Direction Flag) DF C đ nh h ậ 10 ộ ạ
C ng t (Interrupt Flag) ướ ờ ị ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ờ
Các c chia làm hai nhóm khác nhau:
ồ
ờ ạ
ờ
ờ ề
ồ
ờ
Nhóm c tr ng thái (g m 6 c : CF, PF, AF, ZF, SF, OF) ể Nhóm c đi u khi n (g m 3 c : TF, IF, DF)
ộ ố ờ
ướ
ẽ
ể
D i đây ta s tìm hi u m t s c hay
dùng: CF, ZF, và OF
ế
Ki n trúc máy tính 2
51
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ờ
ớ C nh CF:
ướ
ự
ệ Xét các l nh sau đây: MOV AX, 0FFFFh ADD AX, 1 Tr
ự
ộ
ớ
ệ ệ c khi th c hi n l nh ADD thì AX = FFFFh = 1111 1111 1111 1111b = 65535 ệ Sau khi th c hi n phép c ng v i 1 thì AX ằ b ng bao nhiêu? ậ
ế
Ki n trúc máy tính 2
52
ạ ộ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
1111 1111 1111 1111b + 1 1 0000 0000 0000 0000b
ệ
ộ
ả ượ
ứ ủ
ọ
ạ ộ
ấ
ố
t quá ph m vi ch a c a AX (g i là ng tràn khi c ng s không d u). Khi đó ượ
ế ậ
ế ậ
ự
ự
ệ ệ
Thanh ghi AX dài 16 bit nên sau l nh ADD thì AX = 0! Phép c ng đã không còn chính xác do ế k t qu v ệ ượ hi n t ằ ờ t l p b ng 1. c thi c CF đ ẽ ượ ờ ư ậ t l p khi th c c thi Nh v y, c CF s đ ớ ở ặ ộ hi n phép c ng có nh bít Msb ho c khi th c ở ừ bít Msb. hi n phép tr có vay
ế
Ki n trúc máy tính 2
53
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ờ
C Zero ZF:
ệ Xét các l nh sau đây: MOV CX, 2Ah SUB CX, 2Ah ệ ệ Sau khi th c hi n l nh SUB thì CX = 0, ế ậ
ự ượ c thi ờ
ế
ế ậ t l p khi k t ằ
ừ
ằ ờ t l p b ng 1. c ZF đ ẽ ượ ư ậ c thi Nh v y, c ZF s đ ệ ự ả ủ ệ qu c a l nh v a th c hi n b ng 0.
ế
Ki n trúc máy tính 2
54
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ờ
C tràn OF:
ướ
ự
ệ
ộ
ế
Ki n trúc máy tính 2
55
ệ Xét các l nh sau đây: MOV AX, 7FFFh ADD AX, 7FFFh ệ ệ c khi th c hi n l nh ADD thì AX = Tr 7FFFh = 0111 1111 1111 1111b = 32767 ằ ự Sau khi th c hi n phép c ng thì AX b ng bao nhiêu? ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ậ ạ ộ
0111 1111 1111 1111b + 0111 1111 1111 1111b 1111 1111 1111 1110b
ế
ệ
ấ
ệ
ờ
ế
ế
ạ
ọ
ờ
ả ượ t ng c
ẽ ượ
t l p khi xu t
c thi
ấ ớ ố
ế ậ ng tràn trong phép tính v i s có
ế
Ki n trúc máy tính 2
56
Sau l nh ADD thì AX = FFFEh. N u coi đây là ố s không d u thì AX = 65534, không có hi n ố ư ượ ng tràn, c CF = 0. Nh ng n u coi đây là s t ấ có d u thì AX = 2 (32767 + 32767 = 2!), phép ộ c ng đã không còn chính xác do k t qu v ệ ượ ứ ủ quá ph m vi ch a c a AX (g i là hi n t ượ ấ ố ộ tràn khi c ng s có d u). Khi đó c OF đ ằ ế ậ thi t l p b ng 1. ờ ư ậ Nh v y, c OF s đ ệ ượ ệ hi n hi n t d u. ấ ậ ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ộ
ả
ệ
ề
Các l nh nh y có đi u ki n
ự
ậ
ố
ự ừ
ể
ậ
v a nh p
ế
ế
Ki n trúc máy tính 2
57
ạ ộ
ệ Ví d :ụ TITLE Lenh nhay .MODEL SMALL .STACK 100H .CODE MAIN PROC NHAPLAI: ứ MOV AH, 1 ;Ch c năng s 1: Nh p 1 kí t INT 21h CMP AL, ’ ’ ;Ki m tra kí t JZ NHAPLAI ... MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP ậ ỹ B môn K thu t máy tính & m ng – END MAIN Khoa CNTT
ả
Gi
i thích:
ộ
ậ
ươ
ể
ả
ả
ế
ố
ậ ạ
ượ
i. Quá trình đó đ ệ
ờ ệ
ự ừ ẽ Ch t ng trình trên s nh p m t kí t ự bàn phím, ki m tra xem đó có ph i là kí t kho ng tr ng ‘ ’ hay không, n u đúng thì ế ự c th c ti n hành nh p l ả ệ hi n nh l nh so sánh CMP và l nh nh y JZ.
ế
Ki n trúc máy tính 2
58
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh CMP (Compare)
Cú pháp l nh:ệ
ươ
ệ
CMP <Đích>,
ng t ồ
ệ
ự ệ l nh SUB, nó th c hi n ự t là
ừ
ỉ
ị
ệ ự ở ỗ ch : ờ
phép tr gi a Đích và Ngu n. S khác bi ổ Đích không b thay đ i sau phép tr , ch có các c là thay đ i.ổ Ví d : ụ
ộ
ệ
ủ
ủ
ế
ố
ừ kho ng tr ng). N u k t qu mà b ng 0,
ờ
CMP AL, ‘ ’ L nh trên s l y n i dung c a AL tr cho 20h (mã ằ ế ậ t l p
ả ế ẽ ượ c thi
ệ
ề ế
Ki n trúc máy tính 2
59
ả
ẽ ấ ả ự ASCII c a kí t ứ t c là AL = 20h (AL = ‘ ‘), thì c ZF s đ ằ b ng 1. ậ ộ ỹ B môn K thu t máy tính & m ng – ủ ạ Tr ng thái c a các c s đ Khoa CNTT ệ cho các l nh nh y
ạ ờ ẽ ượ ử ụ c s d ng làm đi u ki n
ệ
ả
L nh nh y JZ
ệ
ả
ờ
ệ L nh JZ là l nh nh y khi c ZF = 1 (Jump if Zero). Cú pháp l nh:ệ
ẽ ể
ả ớ
ự
JZ
Trong ch ờ tra c ZF, n u ZF = 1 thì s nh y t NHAPLAI, nghĩa là th c hi n l ậ ữ ệ nh p d li u.
ế
Ki n trúc máy tính 2
60
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ả M t s l nh nh y
ớ ạ
ứ
ả
ờ
ộ ố ệ ề ệ Có nhi u l nh nh y khác nhau ng v i tr ng thái ủ khác nhau c a các c :
ứ
ề
ả
L nhệ
Ch c năng
ệ Đi u ki n nh y
ế ế ế
ớ Nh y n u có nh (Jump if Carry) ớ Nh y n u không nh (Jump if Not Carry) ấ Nh y n u tràn có d u (Jump if OverFlow) ế Nh y n u không
(Jump
tràn
if Not
JC JNC JO JNO JS JNS ...
ng (Jump if Not Sign)
CF = 1 CF = 0 OF = 1 OF = 0 SF = 1 SF = 0 ...
ả ả ả ả OverFlow) ế ả ấ Nh y n u d u âm (Jump if Sign) ấ ươ ế ả Nh y n u d u d ...
ế
Ki n trúc máy tính 2
61
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
ả ế ợ ệ
ệ
ả
ả ơ Đ n gi n hoá cách dùng l nh nh y ắ K t h p l nh nh y và l nh CMP theo quy t c sau:
ề
ả
ệ
CMP <Đích>, ồ
ả
ệ
Đi u ki n nh y
ệ L nh nh y không d uấ JA/ JNBE JB/ JNAE JE/ JZ JAE/ JNB JBE/ JNA JNE/ JNZ
ả L nh nh y có d uấ JG/ JNLE JL/ JNGE JE/ JZ JGE/ JNL JLE/ JNG JNE/ JNZ
ế
Ki n trúc máy tính 2
62
Đích > Ngu nồ Đích < Ngu nồ Đích = Ngu nồ Đích ≥ Ngu nồ Đích ≤ Ngu nồ Đích ≠ Ngu nồ ỹ ộ ậ B môn K thu t máy tính & m ng – Khoa CNTT
ạ
ộ ố ừ ế ắ
M t s t
vi
t t
t:
ớ
A: Above (l n h n) = G: Greater than
ơ ỏ ơ B: Below (nh h n) = L: Less than E: Equal (b ng)ằ N: Not (không)
Ví d : ụ
JNA: Jump if Not Above = JBE: Jump if
Below Equal
ế
Ki n trúc máy tính 2
63
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Gi
ể ạ
ộ ệ ẽ ứ
ể ự ả
ả
i thích:
ả ầ
ỗ ệ
ướ
c m i l nh nh y c n dùng m t l nh CMP đ t o
Tr
ệ
ườ ậ
ả
ệ
ề
i l p trình s căn c vào quan h
đi u ki n nh y. Ng
ọ ệ
ồ
ữ
gi a <Đích> và đ l a ch n l nh nh y thích
h p.ợ
Ví d :ụ
ế CMP AL, 5Ah JA KetThuc ;N u AL > 5Ah thì
nh yả
; t i nhãn KetThuc
ớ ể ử ụ ồ ệ ả
ế ặ ườ ồ ố ng h p Đích và Ngu n là s
ấ ố
ế
Ki n trúc máy tính 2
64
ộ ấ ố
N u Đích > Ngu n: Ta có th s d ng l nh nh y JA ợ ho c JNBE (trong tr ệ ệ ụ không d u). Hai l nh này có tác d ng gi ng h t nhau. ậ ạ ỹ ả ử ụ ồ ế B môn K thu t máy tính & m ng – N u coi đích và ngu n là các s có d u thì ph i s d ng ặ ệ l nh JG ho c JNLE. Khoa CNTT
ả
ề
ệ
ệ L nh nh y không đi u ki n JMP
ệ
ề
ả
ể
ể
ả ớ
ướ
ứ ả ể ượ c đi m là không th nh y quá xa. ộ i m t nhãn đ ng ặ ứ
ể ử ụ
ụ
ệ
ắ
ề
ệ
ệ
ệ Các l nh nh y có đi u ki n mà ta đã nghiên c u ộ có m t nh ứ ỉ ệ Các l nh đó ch có th nh y t tr c nó không quá 126 byte ho c đ ng sau không quá 127 byte. ể ề Đ kh c ph c đi u này có th s d ng l nh ư ả nh y không đi u ki n JMP. Cú pháp l nh nh sau:
ủ
ạ
ộ
JMP
ế
Ki n trúc máy tính 2
65
ị ả ớ ệ v i l nh nh y JMP. ỹ ậ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ộ
ộ ậ ự
ự ừ
ế
ệ ượ
ả c khi kho ng cách
ỉ ự ặ
ị
ệ
ế
Ki n trúc máy tính 2
66
ậ ạ
Ví d :ụ ạ ệ Xét đo n l nh sau: MOV AH, 1 ;Nh p m t kí t INT 21h ớ ậ v a nh p v i ‘Z’ CMP AL, ‘Z’ ;So sánh kí t ả ớ i nhãn JA KetThuc ;N u AL > ‘Z’ thì nh y t KetThuc ... ;Các l nh khác KetThuc: MOV AH, 4Ch INT 21h ạ ệ Đo n l nh trên ch th c hi n đ ữ ệ gi a l nh JA và v trí đ t nhãn KetThuc không quá 127 byte. ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ả
ướ
ươ
c” :
ng pháp “nh y hai b
ộ
ậ
ự
ự ừ
ế
ớ ậ v a nh p v i ‘Z’ ả ớ i
ệ
ử ụ ph S d ng MOV AH, 1 ;Nh p m t kí t INT 21h CMP AL, ‘Z’ ;So sánh kí t JA NhanTrungGian ;N u AL > ‘Z’ thì nh y t NhanTrungGian JMP TiepTuc NhanTrungGian: JMP KetThuc TiepTuc: ... ;Các l nh khác KetThuc: MOV AH, 4Ch INT 21h
ế
Ki n trúc máy tính 2
67
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ
ẽ C u trúc r nhánh IF
ị
ủ
ệ
ả
sau l nh nh y:
ẽ
ố ớ ấ
Đ i v i c u trúc r nhánh thì v trí c a
ẽ ứ ở
nhãn s đ ng
ả
ệ
ế
Ki n trúc máy tính 2
68
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ
ự
ự ừ t
bàn phím, n u là kí t
in
Nh p m t kí t ổ
ế ệ
ự
ra màn hình.
ư
th Thu t toán nh sau: ộ
ự KT
Ví d : ụ ậ ườ ng thì đ i sang in hoa. Hi n kí t ậ + Nh p m t kí t ậ + IF (KT ≤ ‘z’) AND (KT ≥ ‘a’) THEN Đ i KT sang in hoa
ổ
ệ + Hi n KT ra màn hình
ế
Ki n trúc máy tính 2
69
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ự
ậ
ộ
ệ
ự
TITLE DOI KI TU .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 1 ;Nh p m t kí t INT 21h CMP AL, ’z’ ế JA HienChu ;N u AL > ’z’ thì hi n kí t
ra màn hình
ệ
ự
CMP AL, ’a’ ế JB HienChu ;N u AL < ’a’ thì hi n kí t
ra màn hình
ổ
ự
sang in hoa
ệ
ố
ự
ế
;K t thúc
ế
Ki n trúc máy tính 2
70
SUB AL, 20h ;Đ i kí t HienChu: ứ MOV AH, 2 ;Ch c năng s 2: Hi n kí t MOV DL, AL INT 21h MOV AH, 4Ch INT 21h ậ ỹ B môn K thu t máy tính & m ng – MAIN ENDP Khoa CNTT END MAIN
ạ ộ
ấ
ặ C u trúc l p
ặ
ế ướ ố ầ ặ
t tr
c s l n l p (While,
ế ướ t tr
c (For)
L p không bi Repeat) ặ ớ ố ầ ặ L p v i s l n l p bi ặ ệ L nh l p LOOP
ế
Ki n trúc máy tính 2
71
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ố ớ ủ
ả
ị Đ i v i các c u trúc l p nói chung thì v c l nh nh y: trí c a nhãn s đ ng
ấ ặ ẽ ứ ở ướ ệ tr
ệ
ế
Ki n trúc máy tính 2
72
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế ướ ố ầ ặ
ặ
c s l n l p (While,
t tr
L p không bi Repeat)
Ví d : ụ ậ
ộ
bàn phím (‘0’, ‘1’, ... , ‘9’),
Nh p m t kí t
ự ố ừ s t ố ậ
ươ ứ
ổ đ i nó sang s th p phân t
ng ng.
ố
Nhân đôi s đó. ư
Thu t toán nh sau:
ộ
KT
ổ
ậ REPEAT ự ậ Nh p m t kí t UNTIL (KT ≥ ‘0’) AND (KT ≤ ‘9’) ố ậ Đ i KT sang s th p phân Nhân đôi số
ế
Ki n trúc máy tính 2
73
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ
ậ
ự
ậ ạ
i
ố ậ
i ươ
ng
ế
ệ ;K t thúc
ế
Ki n trúc máy tính 2
74
TITLE VI DU LAP .MODEL SMALL .STACK 100H .CODE MAIN PROC NhapLai: MOV AH, 1 ;Nh p m t kí t INT 21h CMP AL, ’0’ ế JB NhapLai ;N u AL < ’0’ thì nh p l CMP AL, ’9’ ậ ạ ế JA NhapLai ;N u AL > ’9’ thì nh p l ổ SUB AL, 30h ;Đ i sang s th p phân t ngứ ... ;Các l nh khác MOV AH, 4Ch INT 21h MAIN ENDP ậ ỹ B môn K thu t máy tính & m ng – END MAIN Khoa CNTT
ạ ộ
ằ ằ
‘9’ có mã ASCII b ng 39h
ự ố
ằ ố ậ s sang s th p phân t ủ
ươ ừ
ả Gi i thích: ự ‘0’ có mã ASCII b ng 30h Kí t ự ‘1’ có mã ASCII b ng 31h Kí t ... ự Kí t ể ổ Đ đ i kí t ng ấ ứ ng, ta l y mã ASCII c a nó đem tr cho 30h. ộ
ế
Ki n trúc máy tính 2
75
ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ặ ớ ố ầ ặ L p v i s l n l p bi
ế ướ t tr
c (For)
ố
ứ Hi n ra màn hình 10 s nguyên theo th
ư
ậ
Ví d :ụ ệ ự : 0, 1, 2, 3, ..., 9. t Thu t toán nh sau:
ệ
FOR I = 0 TO 9 DO
ế
Ki n trúc máy tính 2
76
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ằ
ị ế
ở ạ
ổ ố
ự ố ươ s t
ng
ệ
ố
ự
ế
ặ ạ
ế
i
ế
;K t thúc
TITLE VI DU LAP FOR .MODEL SMALL .STACK 100H .DATA I DB 0 ;Kh i t o giá tr bi n I b ng 0 .CODE MAIN PROC MOV AX, @DATA MOV DS, AX Lap: MOV DL, I ADD DL,30h ;Đ i s nguyên sang kí t ngứ ứ MOV AH, 2 ;Ch c năng s 2: Hi n kí t INT 21h INC I ;Tăng bi n I lên 1 CMP I, 10 JNZ Lap ;N u I ≠ 10 thì l p l MOV AH, 4Ch INT 21h MAIN ENDP END MAIN
ế
Ki n trúc máy tính 2
77
ậ ạ ộ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
ặ L nh l p LOOP
ợ
ấ
ệ
ặ
ẵ ế ướ ố ầ ặ
t tr
t l nh nh sau:
ữ ể Đây là c u trúc l nh có s n trong h p ng đ ệ ự th c hi n các vòng l p bi c s l n l p. ế ệ Cách vi
ố ầ ặ
ầ ặ
ư
MOV CX,
NHANLAP:
ệ
... ;Các l nh c n l p
LOOP NHANLAP
ỗ
ố ầ ặ ượ ặ S l n l p đ ầ ặ l n l p thì CX đ
c đ t vào thanh ghi CX, sau m i ả ượ ự ộ đ ng gi m đi 1. c t
ế
Ki n trúc máy tính 2
78
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ằ
ị ế
ở ạ
ố ầ ặ
ổ ố
ự ố ươ s t
ng
ệ
ố
ự
ế
ế
TITLE VI DU LAP LOOP .MODEL SMALL .STACK 100H .DATA I DB 0 ;Kh i t o giá tr bi n I b ng 0 .CODE MAIN PROC MOV AX, @DATA MOV DS, AX MOV CX, 10 ;S l n l p Lap: MOV DL, I ADD DL,30h ;Đ i s nguyên sang kí t ngứ ứ MOV AH, 2 ;Ch c năng s 2: Hi n kí t INT 21h INC I ;Tăng bi n I lên 1 LOOP Lap MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN
ế
Ki n trúc máy tính 2
79
ạ ậ ộ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế
ầ H t Ph n 2.2
ế
Ki n trúc máy tính 2
80
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT

