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/CNTT­wru 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>, ồ                         OR      <Đích>, ồ                         XOR   <Đích>, ồ                         NOT   <Đí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 .  ỹ B  môn K  thu t máy tính & m ng –  Khoa CNTT

ậ ộ

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   .STACK   .CODE       

ế

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   ồ    : là m t thanh ghi hay m t bi n  c ướ 16 bít (1 word). có kích th ệ  Sau l nh Push thì giá tr  c a toán h ng  Ngu nồ  v n gi  nguyên

ế

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

ắ ầ ủ ụ     PROC     ;B t đ u th  t c

ở ề ươ

ủ ụ 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

ủ ụ

ươ

ở ệ

ư

ế ủ ụ     ENDP     ;K t thúc th  t c

ế

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    ng trình assembly

ộ ủ ụ

ươ ư

ử ụ

ủ  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