Ế
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
ệ
ị
2.6.6 Các l nh logic, d ch, và quay
Các phép logic Các phép d chị Các phép quay
ế
Ki n trúc máy tính 2
2
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Các phép logic
ủ ị ặ
ệ
Phép toán AND (và) Phép toán OR (ho c)ặ Phép toán NOT (ph đ nh) ủ ị Phép toán XOR (ho c ph đ nh) Các l nh logic trong Assembly
ế
Ki n trúc máy tính 2
3
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Phép toán AND (và)
ắ
ữ
ự
ượ
ả
ị
ố ệ Quy t c th c hi n phép toán AND gi a hai s c trình bày trong b ng sau: nh phân A và B đ
A
B
A AND B
0 1 0 1
0 0 0 1
ế
Ki n trúc máy tính 2
4
0 0 1 1 ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ậ ạ ộ
Ví d :ụ
Cho M = 16h, N = 0Dh, hãy tính M AND N = ?
Gi
i: ả
M = 0001 0110b (16h)
N = 0000 1101b (0Dh)
M AND N = 0000 0100b = 04h
ế
Ki n trúc máy tính 2
5
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Phép toán OR (ho c)ặ
ắ
ữ
ự
ượ
ả
ị
ố ệ Quy t c th c hi n phép toán OR gi a hai s nh phân A và B đ
c trình bày trong b ng sau:
A 0 0 1 1
B 0 1 0 1
A OR B 0 1 1 1
ế
Ki n trúc máy tính 2
6
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
Cho M = 16h, N = 0Dh, hãy tính M OR N = ?
Gi
i: ả
M = 0001 0110b (16h)
N = 0000 1101b (0Dh)
M OR N = 0001 1111b = 1Fh
ế
Ki n trúc máy tính 2
7
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ủ ị
Phép toán NOT (ph đ nh)
ắ
ự
ữ
ượ
ả
c trình bày trong b ng
ố ệ Quy t c th c hi n phép toán NOT gi a hai s ị nh phân A và B đ sau:
A
NOT A
0
1
1
0
ế
Ki n trúc máy tính 2
8
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
Cho M = 16h, hãy tính NOT M = ?
Gi
i: ả
M = 0001 0110b (16h)
NOT M = 1110 1001b = E9h
ế
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ép toán XOR (ho c ph ị đ nh)
ắ
ữ
ự
ượ
ả
ị
ố ệ Quy t c th c hi n phép toán XOR gi a hai s c trình bày trong b ng sau: nh phân A và B đ
A
B
A XOR B
0 1 0 1
ế
Ki n trúc máy tính 2
10
0 0 0 1 1 1 0 1 ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ ộ
Ví d :ụ
Cho M = 16h, N = 0Dh, hãy tính M XOR N = ?
Gi
i: ả
M = 0001 0110b (16h)
N = 0000 1101b (0Dh)
M XOR N = 0001 1011b = 1Bh
ế
Ki n trúc máy tính 2
11
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Các l nh logic trong Assembly
ớ
ợ
ữ ng ng v i các phép toán logic trên, h p ng
ươ ứ ệ
T có các l nh sau đây:
ộ
ộ
ớ
ặ
ộ
ộ
ằ
ố
ờ
ồ ạ
ế
Ki n trúc máy tính 2
12
AND <Đích>,
ậ ộ
Ví d :ụ
AND AX, 002Ah OR AL, 3Dh NOT BX
ế
Ki n trúc máy tính 2
13
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ứ
ụ
ệ
ng d ng các l nh logic:
Ví d 1:ụ
ấ ổ Hãy thay đ i bit d u trong thanh ghi AX. XOR AX, 8000h
Ví d 2:ụ
Hãy xoá bit LSB trong thanh ghi BH. AND BH, 0FEh
ế
Ki n trúc máy tính 2
14
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d 3: ụ ộ ậ
ự ố ừ s t
bàn phím (‘0’, ‘1’, ... ,
ố ậ
ươ ứ
ng ng.
Nh p m t kí t ổ i: ả
‘9’), đ i nó sang s th p phân t Gi
ể
ể
ệ
ổ
Ta s s d ng các l nh logic đ chuy n đ i kí
ố
ự
ẽ ử ụ sang s .
t
ế
Ki n trúc máy tính 2
15
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ
ậ
ự
ậ ạ
i
ố ậ
i ươ
ng
ủ
ế
ế
Ki n trúc máy tính 2
16
TITLE VI DU 3 .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 ổ AND AL, 0Fh ;Đ i sang s th p phân t ng ứ ; (xoá 4 bit cao c a AL) ệ ... ;Các l nh khác 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
ạ ộ
Các phép d chị
ị ị
D ch trái ả D ch ph i
ế
Ki n trúc máy tính 2
17
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ị
D ch trái
ộ
ặ
ộ
ớ
ẽ ị
ể
ị ề
ộ ượ ư c đ a
ị ủ ị
ờ
ộ Xét m t dãy bit trong m t thanh ghi ho c m t ô nh : phép d ch trái s d ch chuy n toàn b các bít trong dãy v bên trái, giá tr c a Msb đ vào c CF, thêm bit 0 vào v trí Lsb
ị c khi d ch Tr 1 1 1 0 0 1 1 0 ướ trái:
ị Sau khi d ch trái: 1 0 0 1 1 0
ế
Ki n trúc máy tính 2
18
CF 1 ← 1 Msb CF ỹ B môn K thu t máy tính & m ng – Khoa CNTT
0 Lsb ậ ạ ộ
ị L nh d ch trái ệ ể ử ụ
ệ
ệ ặ ệ Có th s d ng l nh SHL (Shift Left) ho c l nh ạ SAL (Shift Arithmetic Left), hai l nh này t o ra ộ cùng m t mã máy. Cú pháp l nh:ệ
ạ ạ
ộ
ộ
ớ
D ng 1: SHL <Đích>, 1 D ng 2: SHL <Đích>, CL <Đích>: là m t thanh ghi hay m t ô nh
ạ
ầ
ẽ ị ạ
ạ ủ
ạ
ẽ ị ề ầ
ố ầ
ứ
ị
ế
Ki n trúc máy tính 2
19
ủ D ng 1 s d ch các bít c a toán h ng đích sang trái 1 l n, d ng 2 s d ch các bít c a toán h ng đích sang trái nhi u l n, s l n d ch ch a trong thanh ghi CL ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ậ ạ ộ
Ví d 1:ụ
ủ
ị
SHL AX, 1 ;D ch các bít c a thanh ; ghi AX sang trái 1
l nầ Ví d 2:ụ
ủ
ị
MOV CL, 3 SHL AX, CL ;D ch các bít c a
thanh ộ
ế
Ki n trúc máy tính 2
20
ậ ạ
ỹ B môn K thu t máy tính & m ng – ;ghi AX sang trái 3 Khoa CNTT l n ầ
Ứ
ụ
ị
ủ ệ ng d ng c a l nh d ch trái
ị
ứ
ủ ệ
ớ
ệ s
ị
AH = 0011 0100b = 1x25
ầ ươ
ư ậ
ị
ng đ
ng phép
ầ ươ
ươ
ổ
ị
ng đ
ng
ạ
ế
Ki n trúc máy tính 2
21
ộ ụ ố M t trong s các ng d ng c a l nh d ch trái là ự th c hi n phép nhân v i 2. ả ử AH = 0001 1010b = 1x24 + 1x23 + 1x21 = Gi 26 ầ Sau khi d ch trái 1 l n thì + 1x24 + 1x22 = 2x(1x24 + 1x23 + 1x21 ) = 52 ươ Nh v y, phép d ch trái 1 l n t ớ ạ nhân toán h ng đích v i 2. Phép d ch trái N l n t T ng quát: ộ ậ ỹ ớ N. B môn K thu t máy tính & m ng – phép nhân toán h ng đích v i 2 Khoa CNTT
ạ
Chú ý:
ậ
ệ
ả
ỉ ng tràn x y ra.
ế K t lu n trên ch đúng khi không có hi n ượ t Ví d :ụ
s
ả ử AH = 1000 0001b = 129
ị
Gi Sau khi d ch trái 1 l n thì
AH = 0000
ủ
ầ ớ . ả 0010b = 2 Không ph i là phép nhân v i 2 ờ ể ượ c chuy n vào c CF: ả ệ ượ ng tràn x y ữ
Bít Msb c a AH đ ệ ờ c CF = 1 báo hi u hi n t ra, k t qu không còn đúng n a
ế
Ki n trúc máy tính 2
22
ả ế ỹ ậ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ộ
ị
ả D ch ph i
ộ
ặ
ộ
ớ
ị
ộ ượ
ề
c
ể ị ủ ị
ờ
ộ Xét m t dãy bit trong m t thanh ghi ho c m t ô ả ẽ ị nh : phép d ch ph i s d ch chuy n toàn b các ả bít trong dãy v bên ph i, giá tr c a Lsb đ ư đ a vào c CF, thêm bit 0 vào v trí Msb
ị
c khi d ch
Tr
1
1
1
0
0
1
1
0
ướ ph i:ả
CF
ả
ị Sau khi d ch ph i:
0
1
1
1
0
0
1
1
0
Lsb
CF
(cid:0)
ế
Ki n trúc máy tính 2
23
Msb ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ ậ ạ
ệ
ả ị L nh d ch ph i
ị
ạ ệ
ủ
ụ
ả Có hai lo i l nh d ch ph i: SHR (Shift Right) và SAR (Shift Arithmetic Right), tác d ng c a chúng ố không hoàn toàn gi ng nhau. ệ Cú pháp l nh SHR:
ạ ạ
ộ
ớ
D ng 1: SHR <Đích>, 1 D ng 2: SHR <Đích>, CL <Đích>: là m t thanh ghi hay m t ô nh
ạ
ạ ả
ủ
ầ
ạ
ẽ ị ề ầ
ứ
ị
ế
Ki n trúc máy tính 2
24
ộ ẽ ị ủ D ng 1 s d ch các bít c a toán h ng đích sang ạ ph i 1 l n, d ng 2 s d ch các bít c a toán h ng ố ầ ả đích sang ph i nhi u l n, s l n d ch ch a trong ộ ậ ỹ B môn K thu t máy tính & m ng – thanh ghi CL Khoa CNTT
ạ
Ví d 1:ụ
ủ
ả
ị SHR BX, 1 ;D ch các bít c a thanh ầ ;ghi BX sang ph i 1 l n
Ví d 2:ụ
ủ
ị
ế
Ki n trúc máy tính 2
25
MOV CL, 3 SHR BX, CL ;D ch các bít c a thanh ;ghi BX sang ph i 3 ả l n ầ ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ
Ứ
ủ ệ
ụ
ị
ả ng d ng c a l nh d ch ph i
ị
ố
ộ
ả
ứ
ủ ệ
ệ
ự ả ử AL = 0001 0000b = 1x24 = 16 s
ị
ả
ầ
AL = 0000 1000b =
ầ ươ
ươ
ả
ng đ
ng
ươ
ả
ổ
ị
Phép d ch ph i N l n t
ng đ
ng
ụ M t trong s các ng d ng c a l nh d ch ph i là th c hi n phép chia cho 2. Gi Sau khi d ch ph i 1 l n thì 1x23 = 8 ị ư ậ Nh v y, phép d ch ph i 1 l n t ạ phép chia toán h ng đích cho 2. T ng quát: ạ phép chia toán h ng đích cho 2
ầ ươ N
ế
Ki n trúc máy tính 2
26
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Chú ý:
ỉ
ế
ế
ị
ả
ậ K t lu n trên ch đúng n u không làm ấ ổ thay đ i bít d u khi d ch ph i. Ví d :ụ s
ả ử AL = 1000 0001b = 127
ả
ị
Gi Sau khi d ch ph i 1 l n thì
AL = 0100
ả
ầ 0000b = 64: Không ph i là phép chia cho 2
ế
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
ả ử ụ
ấ
nguyên bít d u khi
ố ớ ượ ố Do đó, đ i v i các s có d u ta không đ ệ ệ ử ụ s d ng l nh SHR mà ph i s d ng l nh ệ ẽ ữ SAR. L nh SAR s gi ả ị d ch ph i. Ví d :ụ
ệ
Ban đ u ầ AL = 1000 0001b = 127 Sau l nh
SAR AL, 1 thì AL = 1100 0000b ữ ấ
ẫ ượ
= 64 (bít d u v n đ
nguyên
c gi
ế
Ki n trúc máy tính 2
28
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Các phép quay
ả
ệ ệ ệ
ệ
ả
ờ
L nh quay trái (ROL Rotate Left) L nh quay ph i (ROR Rotate Right) ờ L nh quay trái qua c CF (RCL – Rotate Carry Left) L nh quay ph i qua c CF (RCR – Rotate Carry Right)
ế
Ki n trúc máy tính 2
29
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
L nh quay trái (ROL Rotate Left)
ệ
ở ạ ị
c i v trí
ớ ệ ố ầ L nh quay trái cũng g n gi ng v i l nh ừ ượ ở ỗ ỉ ị ch bít Msb v a đ d ch trái, ch khác ừ ượ ư ờ ư đ a vào c CF, v a đ c đ a tr l Lsb
ế
Ki n trúc máy tính 2
30
ạ ậ ộ
CF ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Cú pháp l nh:ệ
ạ
ạ
ứ ố ầ
D ng 1: ROL <Đích>, 1 ộ ầ (Quay trái m t l n) D ng 2: ROL <Đích>, CL ề ầ (Quay trái nhi u l n, CL ch a s l n
quay)
ộ
ộ
ế
Ki n trúc máy tính 2
31
ớ <Đích>: là m t thanh ghi hay m t ô nh ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ
ả
ệ
ệ
ả
ả
ỉ
L nh quay ph i (ROR Rotate Right) ớ ệ ố ầ L nh quay ph i cũng g n gi ng v i l nh ừ ượ ở ỗ ị ch bít Lsb v a đ d ch ph i, ch khác c ở ạ ị ừ ượ ư ờ ư đ a vào c CF, v a đ i v trí c đ a tr l Msb
CF
ế
Ki n trúc máy tính 2
32
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Cú pháp l nh:ệ
ạ
ả
ạ
ứ ố ầ
ả
D ng 1: ROR <Đích>, 1 ộ ầ (Quay ph i m t l n) D ng 2: ROR <Đích>, CL ề ầ (Quay ph i nhi u l n, CL ch a s l n
quay)
ộ
ộ
ế
Ki n trúc máy tính 2
33
ớ <Đích>: là m t thanh ghi hay m t ô nh ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ậ ạ
ờ
ệ L nh quay trái qua c CF (RCL – Rotate Carry Left)
ố
ệ
ớ ệ ượ ư ạ ượ ư i đ
ị c đ a vào c đ a
ầ L nh này cũng g n gi ng v i l nh d ch ở ỗ ỉ trái, ch khác ch bít Msb đ ờ ộ ờ c CF, còn n i dung c CF l ị vào v trí Lsb
CF
ế
Ki n trúc máy tính 2
34
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Cú pháp l nh:ệ
ạ
ộ ầ
ạ
ứ ố ầ
ộ
D ng 1: RCL <Đích>, 1 (Quay m t l n) D ng 2: RCL <Đích>, CL ề ầ (Quay nhi u l n, CL ch a s l n quay) ớ ộ <Đích>: là m t thanh ghi hay m t ô nh
ế
Ki n trúc máy tính 2
35
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
ả
ờ
L nh quay ph i qua c CF (RCR – Rotate Carry Right)
ớ ệ
ệ ả
ầ ở ỗ
ố ch bít Lsb đ ờ
ị c đ a vào c đ a
ượ ư ạ ượ ư i đ
ị
L nh này cũng g n gi ng v i l nh d ch ỉ ph i, ch khác ộ ờ c CF, còn n i dung c CF l vào v trí Msb
CF
ế
Ki n trúc máy tính 2
36
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Cú pháp l nh:ệ
ạ
ộ ầ
ạ
ứ ố ầ ộ
D ng 1: RCR <Đích>, 1 (Quay m t l n) D ng 2: RCR <Đích>, CL ề ầ (Quay nhi u l n, CL ch a s l n quay) ớ ộ <Đích>: là m t thanh ghi hay m t ô nh
ế
Ki n trúc máy tính 2
37
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ứ
ụ
ủ ệ ng d ng c a l nh quay
ế
ố
Ví d :ụ Đ m s bít 1 trong thanh ghi AX Gi
i:ả
ẽ ự
ả ề ượ ẽ ượ ư
ế
ằ ị ế
ứ
ượ ẽ ở ạ
ế
Ki n trúc máy tính 2
38
ầ ệ ệ Ta s th c hi n l nh quay AX 16 l n ỗ c). M i (quay trái hay quay ph i đ u đ ờ ộ ầ l n quay thì m t bít s đ c đ a vào c CF, n u bít đó b ng 1 thì tăng BX lên 1 ầ c). Sau 16 l n (BX ch a giá tr đ m đ ị i giá tr ban quay thì thanh ghi AX s tr l đ u. ầ ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ ộ
ể ố ầ ặ ẩ ố ượ ứ ng bít 1
ả ặ
ặ
ứ MOV CX, 16 ;CX ch a s l n l p ị XOR BX ;Xoá BX đ chu n b ch a s l Lap: ROL AX, 1 ;Quay trái AX 1 l nầ ế JNC TiepTuc ;N u CF = 0 (g p bít 0) thì nh y ế INC BX ;N u g p bít 1 thì tăng BX TiepTuc: LOOP Lap
ế
Ki n trúc máy tính 2
39
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ủ ụ
ế 2.6.7 Ngăn x p và th t c
ầ ủ
ươ
ng trình
ử ụ
Các thành ph n c a ch ế Cách s d ng ngăn x p Th t củ ụ
ế
Ki n trúc máy tính 2
40
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ầ ủ
ươ
ng
Các thành ph n c a ch trình
ươ ng trình> ớ ộ ướ ế c ngăn x p>
ữ ệ
ệ ầ TITLE
ế
Ki n trúc máy tính 2
41
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế
ệ ủ
t c a
ươ
ữ ữ ệ ế ộ
ế ộ
ữ
ớ ệ ế ủ c ngăn x p c a ch ừ
ớ ặ Ngăn x p là vùng nh đ c bi ớ ể ử ụ ch ng trình. Có th s d ng vùng nh ả ể ư i phóng nó này đ l u tr d li u và gi ệ ử ư ậ khi không dùng đ n. Nh v y, vi c s ẽ ợ ụ d ng ngăn x p m t cách h p lý s giúp ợ ế t ki m b nh . Trong h p ng , kích ti ượ ướ c ng trình đ th khai báo sau t
ươ .Stack khoá ạ
ế
Ki n trúc máy tính 2
42
ộ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ớ
ầ
ượ ạ
ươ ữ ệ ộ
ầ ơ ả Mã ng trình bao g m ba ph n c b n: ượ ươ ế . Khi ch c ng trình đ c n p vào
ạ
ạ
ầ
ượ ọ
ệ ỉ ủ
c g i là ượ ư
ị
Đo n ạ ữ
c l u gi
c g i là
ượ ư
ầ ữ ệ ượ ọ ỉ ủ , đ a ch c a nó đ
Đo n ạ c l u
ị ạ DS.
ầ
ế
Ki n trúc máy tính 2
43
ồ ộ M t ch ệ l nh, D li u, Ngăn x p ạ n p vào b nh thì ba ph n trên đ ớ các đo n nh khác nhau: ớ ứ Đo n nh ch a ph n mã l nh đ mã (Code Segment), đ a ch c a nó đ trong thanh ghi đo n ạ CS. ớ ứ ạ Đo n nh ch a ph n d li u đ ữ ệ d li u (Data Segment) ữ trong thanh ghi đo n gi ế ượ ọ ạ ớ ứ c g i là Đo n nh ch a ph n ngăn x p đ ỉ ủ ị ế ạ Đo n ngăn x p (Stack Segment) , đ a ch c a nó ạ SS. ữ ượ ư trong thanh ghi đo n c l u gi đ ậ ộ ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ
ử ụ
ế Cách s d ng ngăn x p
ỏ
ấ ữ ệ ấ ữ ệ ụ
ế ệ ủ
ứ
ế
ế C t d li u vào ngăn x p ế L y d li u kh i ngăn x p ủ Ứ ng d ng c a ngăn x p Cách th c làm vi c c a ngăn x p
ế
Ki n trúc máy tính 2
44
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ ữ ệ
ế
C t d li u vào ngăn x p
ử ụ
ế t l nh nh sau:
ể ấ ữ ệ Đ c t d li u vào ngăn x p ta s d ng ế ệ ệ l nh Push, cách vi
ế
ộ
ộ
ồ
ị ủ
ạ
ữ
ẫ
ư
PUSH
ế
Ki n trúc máy tính 2
45
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d 1: ụ
ấ ộ
ệ
PUSH AX L nh trên c t n i dung thanh ghi AX vào
ngăn x p.ế Ví d 2: ụ
ế
ệ
ể
ả
PUSH A ấ ộ L nh trên c t n i dung bi n A vào ngăn ế x p ế (A ph i là bi n ki u Word)
ế
Ki n trúc máy tính 2
46
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ ữ ệ
ế
ỏ
L y d li u kh i ngăn x p
ử ụ
ế ư
ể ấ ữ ệ Đ l y d li u kh i ngăn x p ta s d ng ệ l nh Pop, cách vi
ỏ ế ệ t l nh nh sau:
ế
ộ
ộ
POP <Đích> <Đích>: là m t thanh ghi hay m t bi n có
c ướ 16 bít (1 word).
ả
ể ứ ữ ệ
ế
Ki n trúc máy tính 2
47
kích th ế ẽ ồ ỏ ệ ấ ữ ệ Vi c l y d li u kh i ngăn x p s đ ng ứ ữ ệ ớ ờ th i gi i phóng ô nh đang ch a d li u ể ứ (t c là có th dùng nó đ ch a d li u khác). ộ ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ
Ví d 1: ụ
ấ ữ ệ ừ
ệ
ế
ặ
POP AX L nh trên l y d li u t
ngăn x p đ t vào
thanh ghi AX. Ví d 2: ụ
ấ ữ ệ ừ
ặ
POP A L nh trên l y d li u t
ả
ế ế (A ph i là bi n ki u Word)
ệ ế bi n A
ngăn x p đ t vào ể .
ế
Ki n trúc máy tính 2
48
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ứ
ụ
ế
ủ ng d ng c a ngăn x p
Ví d 1:ụ
ủ
ể
ạ
Hãy chuy n n i dung c a thanh ghi đo n ạ
ộ DS vào thanh ghi đo n ES
ế
Ki n trúc máy tính 2
49
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
i:ả
Gi
ể
ự ế
Do không th chuy n tr c ti p n i dung c a hai
ể ạ
ẽ ử ụ
DS vào ngăn x p,
ữ ệ ượ ấ ừ
ộ ủ ầ ệ ạ i ph n l nh thanh ghi đo n cho nhau (xem l ế MOV) nên ta s s d ng ngăn x p làm trung ế c chuy n t gian: d li u đ sau đó l y t
ể ừ ể ngăn x p chuy n vào ES:
ấ ấ ữ ệ ừ
ế
ế ế PUSH DS ;C t DS vào ngăn x p ngăn x p POP ES ;L y d li u t
đ t ặ
ế
Ki n trúc máy tính 2
50
; vào ES ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ạ ậ
ộ
Vi
ự ừ t
bàn
Ví d 2:ụ ế t ch ồ
ậ ng trình nh p m t kí t ế ở ầ ệ
ươ phím r i hi n nó
đ u dòng ti p theo
ế
Ki n trúc máy tính 2
51
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
i:ả
ự
ố
ộ
ậ
ứ
ự
ế
ấ ư
vào ngăn x p ỏ ề ầ
ế
ế
ặ
ấ ể
Gi TITLE Vi du 2 .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 1 ;Ch c năng s 1: Nh p m t kí t INT 21h PUSH AX ;C t kí t MOV AH, 2 ;Đ a con tr v đ u dòng ti p theo MOV DL, 0Dh INT 21h MOV DL, 0Ah INT 21h ự ừ ngăn x p đ t vào DL POP DX ;L y kí t t ự ị INT 21h ;Hi n th kí t ế MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN
ế
Ki n trúc máy tính 2
52
ậ ạ ộ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ị
ả ề ầ
ố
ự
ẽ
ị
ắ
ố
ự
ầ
ế ị
ể
ừ
ế
ả Gi i thích : ể ư ượ ấ ở ự ậ nh p vào đ c c t Kí t thanh ghi AL. Đ đ a ể ế ầ ố ỏ con tr xu ng đ u dòng ti p theo thì ph i hi n ự có mã ASCII là 0Dh (CR: v đ u th hai kí t ể dòng) và 0Ah (LF: xu ng dòng). Quá trình hi n ổ ị này s làm thanh ghi AL b thay đ i th hai kí t ủ ứ ạ i ch c năng s 2 c a ng t 21h). Do đó (xem l ướ ả ư ầ ban đ u vào ngăn x p tr c n ph i l u kí t c ự ố này khi xu ng dòng, khi nào mu n hi n th kí t ạ ấ i l y nó ra t thì l
ố ngăn x p
ế
Ki n trúc máy tính 2
53
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ự
ệ
Ví d 3:ụ ế ệ t l nh th c hi n các công vi c sau: ư ộ
ờ
ệ Vi + L u n i dung thanh ghi c vào AX. + Xoá thanh ghi c . ờ
ế
Ki n trúc máy tính 2
54
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Gi
iả :
ộ
ờ ằ
i thanh ghi c b ng các
ư
ng đã h c nh MOV, ADD, SUB,
ườ ộ
ử
ệ
ấ
ờ ả
ệ
ế
ớ
ể ớ Ta không th tác đ ng t ọ ệ l nh thông th AND, OR…B vi x lý 8086 cung c p hai l nh ề ể sau đ thao tác v i thanh ghi c (c hai l nh đ u liên quan t
ớ i ngăn x p):
ấ ộ ờ
PUSHF ;C t n i dung thanh ghi c vào ngăn x p ế POPF ;L y d li u t
ể ả
ế
ầ
i quy t yêu c u
trên ậ
ấ ữ ệ ừ ế ặ ngăn x p đ t vào thanh ghi
ế
Ki n trúc máy tính 2
55
ạ
cờ ệ ử ụ S d ng hai l nh này ta có th gi ở ặ đ t ra ỹ ộ B môn K thu t máy tính & m ng – Khoa CNTT
ể
ộ
ờ ừ
ế
PUSHF POP AX ;chuy n n i dung thanh ghi c t
ngăn x p
vào AX
ế
ặ
ị
ừ
ị
XOR BX, BX ;xóa BX (BX = 0) PUSH BX ;Đ t giá tr 0 vào ngăn x p ế ể POPF ;Chuy n giá tr 0 t
ngăn x p vào thanh ghi
c ờ
(xoá các c ) ờ
ế
Ki n trúc máy tính 2
56
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ứ
ệ ủ
Cách th c làm vi c c a ngăn x pế
ở
ướ ủ ươ
ữ
ầ
ế ượ c c a ngăn x p đ ợ ng trình h p ng sau t
c khai báo ừ khoá
Kích th đ u ch .Stack Ví d :ụ
ướ ằ
.Stack 100h Khi đó ngăn x p có kích th
c b ng 100h
ế byte (256 byte hay 128 word)
ế
Ki n trúc máy tính 2
57
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ụ ế
ỗ ệ ế
ẽ ư ậ
ầ
ẽ ườ ậ
ể
i l p trình s ph i tính toán đ khai
ấ
c h p lý nh t
ủ ế M i l nh Push s chi m d ng 1 word c a ư ngăn x p, nh v y ngăn x p khai báo nh ấ ố trên s cho phép c t t i đa 128 l n. ả ẽ Ng ướ ợ ế báo ngăn x p có kích th ế ừ (không quá th a hay thi u)
ế
Ki n trúc máy tính 2
58
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế
ỏ
ế
ấ
ẽ ượ ấ
ấ ướ c (LIFO Last In First
ử
ế
ứ ị
ứ ị ủ
ủ ấ C u trúc c a ngăn x p: ự ữ ệ ượ ấ D li u đ c l y ra kh i ngăn x p theo trình t ớ ượ ạ i so v i khi c t vào, nghĩa là c t vào sau c l ng c l y ra tr thì s đ Out). ử ụ ộ B vi x lý 8086 s d ng hai thanh ghi chuyên ớ ụ SS (Stack d ng cho các thao tác v i ngăn x p là Segment) và SP (Stack Pointer). ỉ ỉ SS ch a đ a ch segment còn SP ch a đ a ch ớ offset c a ô nh trong ngăn x p
ế
Ki n trúc máy tính 2
59
ế ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ ậ ạ
ế
ớ
ị
ố
.Stack 100h thì
ỉ offset =
ậ ữ ệ ượ ấ c c t vào ngăn x p theo tr t D li u đ ừ ạ ớ ự ượ ạ i so v i các đo n nh khác (t c l ng t ỉ ấ ỉ ị đ a ch cao xu ng đ a ch th p). ế ả ử s khai báo ngăn x p là Gi ế ẽ ắ ầ ạ ị i đ a ch ngăn x p s b t đ u t ạ offset = 0000h ế i 0100h và k t thúc t (xem hình trang sau)
ế
Ki n trúc máy tính 2
60
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
…
ế K t thúc stack 0000h
…
00FAh
00FCh
00FEh
(cid:0) offset = 0100h SP = 0100h
…
ế
Ki n trúc máy tính 2
61
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế
ư
ỉ
ị
ớ
ữ ệ ấ
ẽ ả ế
ỏ ớ
ớ
ỏ Khi ngăn x p ch a có d li u thì SP tr ớ i ô nh có đ a ch cao nh t trong ngăn t x p.ế ỗ ệ ể Sau m i l nh Push thì SP s gi m đi 2 đ ế ỏ ớ i ô ti p theo c a ngăn x p, d li u tr t ẽ ượ ấ s đ
ủ c c t vào ô nh do SP tr t
ữ ệ i
ế
Ki n trúc máy tính 2
62
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Ví d :ụ
ấ C t ba thanh ghi AX, BX, CX vào ngăn x p:ế
PUSH AX PUSH BX PUSH CX
ế
Ki n trúc máy tính 2
63
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Sau l nh PUSH AX:
…
00FAh
00FCh
(cid:0) 00FEh SP = 00FEh
0100h
ả ế
ớ ấ ộ
ở ị
ỗ
ồ Do gi m SP đi 2 r i m i c t thanh ghi AX vào ỉ ẽ ạ ngăn x p nên s t o ra m t ô r ng đ a ch cao nh t ấ
AX R ngỗ …
ế
Ki n trúc máy tính 2
64
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Sau l nh PUSH BX:
…
00FAh
(cid:0) 00FCh BX SP = 00FEh
00FEh AX
0100h R ngỗ
…
ế
Ki n trúc máy tính 2
65
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Sau l nh PUSH CX:
…
(cid:0) 00FAh CX SP = 00FEh
00FCh BX
00FEh AX
0100h R ngỗ
…
ế
Ki n trúc máy tính 2
66
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ố ấ
ộ ủ Mu n l y n i dung c a ba thanh ghi ra ả ế ế kh i ngăn x p thì ph i ti n hành theo trình ự ượ ạ t i:
ỏ ng
c l
POP CX POP BX POP AX
ế
Ki n trúc máy tính 2
67
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
Sau l nh POP CX:
…
00FAh
(cid:0) 00FCh BX SP = 00FEh
00FEh
0100h AX R ngỗ
…
ớ ỏ ớ ẽ ượ i ô nh do SP tr t
i (offset = 00FAh) s đ ể ỏ ớ c i ô cao
ế
Ki n trúc máy tính 2
68
ậ ượ ả ầ c gi i phóng nên ta không c n quan
ạ ữ ữ ệ ạ D li u t ạ n p vào thanh ghi CX, sau đó SP tăng lên 2 đ tr t h n.ơ ộ ỹ B môn K thu t máy tính & m ng – ớ ứ Ô nh ch a CX đã đ Khoa CNTT ớ ộ tâm t i n i dung bên trong nó n a
ệ Sau l nh POP BX: ữ ệ ạ D li u t BX
ớ ượ ạ i ô nh có offset = 00FCh đ c n p vào thanh ghi
…
00FAh
00FCh BX
(cid:0) 00FEh SP = 00FEh
0100h AX R ngỗ
…
ế
Ki n trúc máy tính 2
69
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ Sau l nh POP AX: ữ ệ ạ D li u t AX.
ớ ượ ạ i ô nh có offset = 00FEh đ c n p vào thanh ghi
…
00FAh
00FCh BX
00FEh AX
(cid:0) 0100h SP = 00FEh
R ngỗ …
ế
Ki n trúc máy tính 2
70
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
Th t củ ụ
ấ ử ụ
ươ
ng trình ế
ệ ữ
ủ ụ
ủ ụ C u trúc th t c ủ ụ S d ng th t c trong ch Quan h gi a th t c và ngăn x p
ế
Ki n trúc máy tính 2
71
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ấ
ắ ầ ủ ụ
ở ề ươ
ủ ụ C u trúc th t c ủ ụ ệ L nh 1 ệ L nh 2 ệ L nh 3 ... RET ;Tr v ch
ng
trình chính
ộ
ấ
ủ
ủ ụ
ươ
ở ệ
ư
ệ
ế ủ ụ
ế
Ki n trúc máy tính 2
72
ộ
ủ ụ ườ ng Đây là c u trúc c a m t th t c thông th ả ượ ế c k t (không là ch ng trình chính), nó ph i đ ể ở ề ươ ng trình chính. thúc b i l nh RET đ tr v ch ủ ụ ằ ở ố ườ cu i th t c, nh ng ng n m L nh RET th ể ằ ở ộ ị m t v trí khác nó cũng có th n m ạ ỹ ậ B môn K thu t máy tính & m ng – Khoa CNTT
ỏ
t m t th t c đ a con tr màn hình
ộ ầ
ủ ụ ư ế
ế
ầ
ỏ
ị ặ
Ví d :ụ ế Vi ố xu ng đ u dòng ti p theo. i:ả Gi ố ể ư Đ đ a con tr xu ng đ u dòng ti p theo ự CR (0Dh) và LF ể ầ c n hi n th các kí t ủ ụ (0Ah). Ta đ t tên th t c này là
Writeln
ế
Ki n trúc máy tính 2
73
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ủ
ứ ắ ố ể ệ ự
Writeln PROC MOV AH, 2 ;Ch c năng s 2 c a ; ng t 21h đ hi n kí t MOV DL, 0Dh INT 21h MOV DL, 0Ah INT 21h RET Writeln ENDP
ế
Ki n trúc máy tính 2
74
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ươ
ủ ụ ử ụ S d ng th t c trong ch
ng trình
ủ ụ ừ ươ
ch
ng trình chính
ể ọ ử ụ
ệ
ệ
ộ Đ g i m t th t c t ư ta s d ng l nh Call, cú pháp l nh nh sau:
ấ
ủ ụ
CALL
ộ ủ ụ
ươ ư
ử ụ
ủ C u trúc c a m t ch có s d ng th t c nh sau:
ế
Ki n trúc máy tính 2
75
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ươ ng trình> ộ ớ ướ
ế
c ngăn x p>
ữ ệ
TITLE
.STACK
.CODE
ươ
ng trình chính> PROC
ệ
L nh 1
ệ
L nh 2
ệ
L nh 3
...
ủ ụ
ủ ụ
ọ
ươ
ng trình chính> ENDP
CALL ;G i th t c
…
PROC
ở ề
ươ
ệ
L nh 1
ệ
L nh 2
ệ
L nh 3
...
RET ;Tr v ch
ng trình
chính
ộ ạ
ủ ụ
ENDP
ậ
ủ ụ
...Các th t c khác
ươ
ng trình chính>
END
ế
Ki n trúc máy tính 2
76
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ộ
Vi
ự ừ
t
Ví d :ụ
ế
t ch
ồ
ậ
ng trình nh p m t kí t
bàn
ế
ở ầ
ệ
đ u dòng ti p theo (có
ủ ụ
ươ
phím r i hi n nó
ử ụ
s d ng th t c).
ế
Ki n trúc máy tính 2
77
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
ộ
ự
ế
ự
vào ngăn x p
ế
ỏ ề ầ
ế
ặ
ấ
ư
ấ
ể
ngăn x p đ t vào DL
ự
ế
ỏ ề ầ
ủ ụ
ế
ế
Ki n trúc máy tính 2
78
ậ ạ
TITLE Vi du
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 1 ;Nh p m t kí t
INT 21h
PUSH AX ;C t kí t
CALL Writeln ;Đ a con tr v đ u dòng ti p theo
ự ừ
t
POP DX ;L y kí t
ị
MOV AH, 2 ;Hi n th kí t
INT 21h
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ư
Writeln PROC ;Th t c đ a con tr v đ u dòng ti p theo
MOV AH, 2
MOV DL, 0Dh
INT 21h
MOV DL, 0Ah
INT 21h
RET
ỹ
ộ
B môn K thu t máy tính & m ng –
Writeln ENDP
Khoa CNTT
END MAIN
ệ ữ
ủ ụ
Quan h gi a th t c và ngăn
x pế
ệ
ọ
ẽ
ủ ụ
ậ
ở ề ươ
ng trình chính sau
ệ
ủ ụ
ể
ủ ụ
ộ
Khi l nh Call g i m t th t c thì các l nh
ủ
c a th t c đó s thi hành. V y làm cách
nào đ quay tr v ch
khi th t c thi hành xong?
ế
Ki n trúc máy tính 2
79
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ự ự
ủ ộ
ệ ệ
ử
th c hi n l nh c a b vi x lý
Trình t
8086:
ỉ
ằ
ạ
ệ
ủ
ỏ ệ
ệ
ị
Đo n mã l nh có đ a ch segment n m
ệ
trong thanh ghi CS, còn offset c a các l nh
ẽ ượ ặ
IP
s đ
c đ t vào thanh ghi con tr l nh
(Instruction Pointer).
ỉ
ứ ị
CS:IP ch a đ a ch
Nh v y c p thanh ghi
ẽ
ớ
ạ
ủ
i ô nh đó s
c a ô nh nào thì l nh t
ượ
đ
ư ậ ặ
ớ
c thi hành.
ế
Ki n trúc máy tính 2
80
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
ử ụ
ượ
ự
ệ
Khi s d ng l nh Call thì các công vi c sau
đây đ
ệ
c th c hi n:
ứ
ươ
ế
ầ
ạ
ủ ụ
ệ
ủ
CS:IP (t c là thi hành l nh
ệ Call
ỉ ủ ệ
ấ ị
C t đ a ch c a l nh đ ng sau l nh
ng trình chính) vào ngăn x p.
(trong ch
ỉ ệ
ị
N p đ a ch l nh đ u tiên c a th t c vào
ứ
ặ
c p thanh ghi
này).
ế
Ki n trúc máy tính 2
81
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ủ ụ ẽ ượ
c
ặ ệ RET.
ệ
t các l nh trong th t c s đ
i khi g p l nh
ỉ ệ
ị
ấ ướ
ượ
c tr v ch
ầ ượ
L n l
ớ
thi hành cho t
ừ
ẽ ấ
L nh ệ RET s l y đ a ch l nh t
ngăn
ồ ạ
ệ Call c t tr
ế
c đó) r i n p
x p (do l nh
ề
ư ậ
vào các thanh ghi CS:IP. Nh v y quy n
ả ề ươ
ể
ề
đi u khi n đã đ
ng trình
chính
ơ ồ
(xem s đ trang sau)
ậ
ạ
ế
Ki n trúc máy tính 2
82
ộ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
…
…
ủ ụ
ệ Call
ế
L nh ti p theo
ươ ng trình chính Ch
…
ệ ầ
L nh đ u tiên
… Th t củ ụ
ế
Ki n trúc máy tính 2
83
ậ ạ ộ
RET
…
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ế
ầ
H t Ph n 2.3
ế
Ki n trúc máy tính 2
84
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Có thể bạn quan tâm
Tài liêu mới
ng trình chính> PROC ệ L nh 1 ệ L nh 2 ệ L nh 3 ...
ủ ụ
ủ ụ
ọ
ươ
ng trình chính> ENDP
CALL ;G i th t c
…
PROC
ở ề
ươ
ệ L nh 1 ệ L nh 2 ệ L nh 3 ... RET ;Tr v ch
ng trình
chính
ộ ạ
ủ ụ
ENDP
ậ
ủ ụ
...Các th t c khác
ươ
ng trình chính>
END
ế
Ki n trúc máy tính 2
76
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ộ
Vi
ự ừ
t
Ví d :ụ
ế
t ch
ồ
ậ
ng trình nh p m t kí t
bàn
ế
ở ầ
ệ
đ u dòng ti p theo (có
ủ ụ
ươ
phím r i hi n nó
ử ụ
s d ng th t c).
ế
Ki n trúc máy tính 2
77
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ậ
ộ
ự
ế
ự
vào ngăn x p
ế
ỏ ề ầ
ế
ặ
ấ
ư
ấ
ể
ngăn x p đ t vào DL
ự
ế
ỏ ề ầ
ủ ụ
ế
ế
Ki n trúc máy tính 2
78
ậ ạ
TITLE Vi du
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AH, 1 ;Nh p m t kí t
INT 21h
PUSH AX ;C t kí t
CALL Writeln ;Đ a con tr v đ u dòng ti p theo
ự ừ
t
POP DX ;L y kí t
ị
MOV AH, 2 ;Hi n th kí t
INT 21h
MOV AH, 4Ch ;K t thúc
INT 21h
MAIN ENDP
ư
Writeln PROC ;Th t c đ a con tr v đ u dòng ti p theo
MOV AH, 2
MOV DL, 0Dh
INT 21h
MOV DL, 0Ah
INT 21h
RET
ỹ
ộ
B môn K thu t máy tính & m ng –
Writeln ENDP
Khoa CNTT
END MAIN
ệ ữ
ủ ụ
Quan h gi a th t c và ngăn
x pế
ệ
ọ
ẽ
ủ ụ
ậ
ở ề ươ
ng trình chính sau
ệ
ủ ụ
ể
ủ ụ
ộ
Khi l nh Call g i m t th t c thì các l nh
ủ
c a th t c đó s thi hành. V y làm cách
nào đ quay tr v ch
khi th t c thi hành xong?
ế
Ki n trúc máy tính 2
79
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ự ự
ủ ộ
ệ ệ
ử
th c hi n l nh c a b vi x lý
Trình t
8086:
ỉ
ằ
ạ
ệ
ủ
ỏ ệ
ệ
ị
Đo n mã l nh có đ a ch segment n m
ệ
trong thanh ghi CS, còn offset c a các l nh
ẽ ượ ặ
IP
s đ
c đ t vào thanh ghi con tr l nh
(Instruction Pointer).
ỉ
ứ ị
CS:IP ch a đ a ch
Nh v y c p thanh ghi
ẽ
ớ
ạ
ủ
i ô nh đó s
c a ô nh nào thì l nh t
ượ
đ
ư ậ ặ
ớ
c thi hành.
ế
Ki n trúc máy tính 2
80
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ệ
ử ụ
ượ
ự
ệ
Khi s d ng l nh Call thì các công vi c sau
đây đ
ệ
c th c hi n:
ứ
ươ
ế
ầ
ạ
ủ ụ
ệ
ủ
CS:IP (t c là thi hành l nh
ệ Call
ỉ ủ ệ
ấ ị
C t đ a ch c a l nh đ ng sau l nh
ng trình chính) vào ngăn x p.
(trong ch
ỉ ệ
ị
N p đ a ch l nh đ u tiên c a th t c vào
ứ
ặ
c p thanh ghi
này).
ế
Ki n trúc máy tính 2
81
ộ ạ ậ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ủ ụ ẽ ượ
c
ặ ệ RET.
ệ
t các l nh trong th t c s đ
i khi g p l nh
ỉ ệ
ị
ấ ướ
ượ
c tr v ch
ầ ượ
L n l
ớ
thi hành cho t
ừ
ẽ ấ
L nh ệ RET s l y đ a ch l nh t
ngăn
ồ ạ
ệ Call c t tr
ế
c đó) r i n p
x p (do l nh
ề
ư ậ
vào các thanh ghi CS:IP. Nh v y quy n
ả ề ươ
ể
ề
đi u khi n đã đ
ng trình
chính
ơ ồ
(xem s đ trang sau)
ậ
ạ
ế
Ki n trúc máy tính 2
82
ộ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
…
…
ủ ụ
ệ Call
ế
L nh ti p theo
ươ ng trình chính Ch
…
ệ ầ
L nh đ u tiên
… Th t củ ụ
ế
Ki n trúc máy tính 2
83
ậ ạ ộ
RET
…
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
ế
ầ
H t Ph n 2.3
ế
Ki n trúc máy tính 2
84
ộ ậ ạ
ỹ
B môn K thu t máy tính & m ng –
Khoa CNTT
Có thể bạn quan tâm
Tài liêu mới
ế
Ki n trúc máy tính 2
76
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ộ
Vi
ự ừ t
Ví d :ụ ế t ch ồ
ậ ng trình nh p m t kí t bàn ế ở ầ ệ đ u dòng ti p theo (có ủ ụ
ươ phím r i hi n nó ử ụ s d ng th t c).
ế
Ki n trúc máy tính 2
77
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ậ
ộ
ự
ế
ự
vào ngăn x p
ế
ỏ ề ầ
ế
ặ
ấ ư ấ ể
ngăn x p đ t vào DL ự
ế
ỏ ề ầ
ủ ụ
ế
ế
Ki n trúc máy tính 2
78
ậ ạ
TITLE Vi du .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 1 ;Nh p m t kí t INT 21h PUSH AX ;C t kí t CALL Writeln ;Đ a con tr v đ u dòng ti p theo ự ừ t POP DX ;L y kí t ị MOV AH, 2 ;Hi n th kí t INT 21h MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP ư Writeln PROC ;Th t c đ a con tr v đ u dòng ti p theo MOV AH, 2 MOV DL, 0Dh INT 21h MOV DL, 0Ah INT 21h RET ỹ ộ B môn K thu t máy tính & m ng – Writeln ENDP Khoa CNTT END MAIN
ệ ữ
ủ ụ
Quan h gi a th t c và ngăn x pế
ệ
ọ ẽ
ủ ụ ậ
ở ề ươ
ng trình chính sau
ệ ủ ụ ể ủ ụ
ộ Khi l nh Call g i m t th t c thì các l nh ủ c a th t c đó s thi hành. V y làm cách nào đ quay tr v ch khi th t c thi hành xong?
ế
Ki n trúc máy tính 2
79
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ự ự
ủ ộ
ệ ệ
ử
th c hi n l nh c a b vi x lý
Trình t 8086:
ỉ
ằ
ạ
ệ
ủ
ỏ ệ
ệ
ị Đo n mã l nh có đ a ch segment n m ệ trong thanh ghi CS, còn offset c a các l nh ẽ ượ ặ IP s đ c đ t vào thanh ghi con tr l nh (Instruction Pointer). ỉ ứ ị CS:IP ch a đ a ch Nh v y c p thanh ghi ẽ ớ ạ ủ i ô nh đó s c a ô nh nào thì l nh t ượ đ
ư ậ ặ ớ c thi hành.
ế
Ki n trúc máy tính 2
80
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ệ
ử ụ ượ
ự
ệ
Khi s d ng l nh Call thì các công vi c sau đây đ
ệ c th c hi n:
ứ
ươ
ế
ầ
ạ
ủ ụ ệ
ủ CS:IP (t c là thi hành l nh
ệ Call ỉ ủ ệ ấ ị C t đ a ch c a l nh đ ng sau l nh ng trình chính) vào ngăn x p. (trong ch ỉ ệ ị N p đ a ch l nh đ u tiên c a th t c vào ứ ặ c p thanh ghi này).
ế
Ki n trúc máy tính 2
81
ộ ạ ậ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ủ ụ ẽ ượ
c
ặ ệ RET.
ệ t các l nh trong th t c s đ i khi g p l nh
ỉ ệ
ị ấ ướ
ượ
c tr v ch
ầ ượ L n l ớ thi hành cho t ừ ẽ ấ L nh ệ RET s l y đ a ch l nh t ngăn ồ ạ ệ Call c t tr ế c đó) r i n p x p (do l nh ề ư ậ vào các thanh ghi CS:IP. Nh v y quy n ả ề ươ ể ề đi u khi n đã đ ng trình chính
ơ ồ
(xem s đ trang sau) ậ ạ
ế
Ki n trúc máy tính 2
82
ộ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT
… …
ủ ụ
ệ Call
ươ ng trình chính Ch
…
ệ ầ L nh đ u tiên
… Th t củ ụ
ế
Ki n trúc máy tính 2
83
ậ ạ ộ
RET … ỹ B môn K thu t máy tính & m ng – Khoa CNTT
ế
ầ H t Ph n 2.3
ế
Ki n trúc máy tính 2
84
ộ ậ ạ
ỹ B môn K thu t máy tính & m ng – Khoa CNTT