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

ơ ệ 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:     PROC

ủ ụ ệ L nh 1 ệ L nh 2 ệ L nh 3 ...

ế

Ki n trúc máy tính 2

­ 10

ộ ủ ụ     ENDP  ậ ạ

ỹ 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