intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng hợp ngữ - Chương 2

Chia sẻ: Nguyen Nhi | Ngày: | Loại File: PDF | Số trang:9

111
lượt xem
28
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tài liệu tham khảo Bài giảng hợp ngữ gồm 9 chương - Chương 2 Các lệnh cơ bản của hợp ngữ

Chủ đề:
Lưu

Nội dung Text: Bài giảng hợp ngữ - Chương 2

  1. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng CH NG II: CÁC L NH C B N C A H P NG 2.1 C u trúc ch ng trình 2.1.1 Ví d có cái nhìn t ng quát v m t ch ng trình h p ng , t a xét ví d sau ây: 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 B c u t a ch a c n quan tâm t i ý ngh a c a các l nh mà ch c n quan tâm t i b c c a chung ch ng trình, các t khoá c b n, cách vi t các câu l nh... 2.1.2 Gi i thích Nhìn chung, c u trúc c a m t ch ng trình h p ng có 3 ph n: Ph n tên, ph n khai báo và ph n mã l nh. a) Ph n tên Tên ch ng trình c vi t sau t khoá TITLE u ch ng trình. Tên có th ch a u cách và các kí t c bi t khác. Thông th ng ph n tên s cho ta bi t m c ích, nhi m v ho c n i dung tóm t t c a ch ng trình. Ví d : TITLE VI DU 1 b) 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, ng... • Khai báo ki u b nh Ki u b nh c vi t sau t .MODEL. Ki u b nh s quy nh kích th c c a n mã và d li u trong ch ng trình. Trong ch ng trình ph n 2.1.1, ki u b nh là SMALL, ngh a là ki u b nh nh , mã l nh s n m trong 1 n nh , d li u n m trong 1 n nh . Ngoài ki u SMALL còn có nhi u ki u b nh khác: MEDIUM Mã l nh chi m nhi u h n 1 n li u trong 1 n COMPACT Mã l nh trong 1 n 15
  2. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng li u chi m nhi u h n 1 n LARGE Mã l nh chi m nhi u h n 1 n li u chi m nhi u h n 1 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 n li u chi m nhi u h n 1 n Các m ng có th l n h n 64 KB • Khai báo kích th c ng n x p Kích th c ng n x p c vi t sau t .STACK Ví d : .STACK 100H Khí ó kích th c vùng b nh dùng làm ng n x p là 100H Bytes (các v n v ng n x p s trình bày k trong ch ng 6) • Khai báo d li u Khai báo d li u c vi t sau t .DATA. Các bi n c a ch ng trình s c khai báo ph n này. Ví d 1: A DB 4 Trong ó: A là tên bi n, DB là ki u d li u (bi n ki u DB s có kích th c 1 byte), 4 là giá tr ban u c a 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. Khai báo h ng: Ví d : H EQU 2Bh ng H s nh n giá tr b ng 2Bh. Quy t c t tên (Bi n, h ng, nhãn, th t c): + Tên có chi u dài t i a 31 kí t . + Có th ch a ch cái, ch s và các kí t c bi t (? . @ _ $ %). + Không c b t u b ng s . + 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. Nói chung, trong h p ng không phân bi t ch hoa và ch th ng. c) Ph n mã l nh Ph n này bao g m các th t c c vi t sau t .CODE. Trong s các th t c này ph i ch n m t th t c làm ch ng trình chính, tên c a th t c ó c vi t sau t END cu i ch ng trình. Tên ch ng trình chính th ng t là MAIN, c ng có th ch n m t t ên khác. • u trúc m t th t c: PROC L nh 1 L nh 2 L nh 3 ... ENDP 16
  3. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng • u trúc chung c a ph n mã l nh: .CODE PROC L nh 1 L nh 2 L nh 3 ... ENDP ...Các th t c khác END 2.2 M t s l nh th ng dùng 2.2.1 C u trúc câu l nh h p ng M t câu l nh h p ng có th chia làm 2 ph n: Tên l nh và các toán h ng. Tên l nh vi t tr c, các toán h ng vi t sau. N u có nhi u toán h ng thì chúng c phân cách v i nhau ng d u ph y (,). [, ...] [;L i chú thích] Ngoài ra có th vi t thêm các l i chú thích làm rõ ý ngh a câu l nh. L i chú thích c b t u b ng d u ch m ph y (;). Ví du: MOV DS, AX ;Chuy n n i dung c a thanh ghi AX vào thanh ghi DS MOV là tên l nh. DS và AX là các toán h ng. • u ý: Các l nh c trình bày trong tài li u này h u h t thu c t p l nh c a b vi x lý 8086, tr m t s tr ng h p s có chú thích riêng. 2.2.2 M t s l nh th ng dùng a) L nh MOV (Move) L nh này c s d ng chuy n d li u gi a các thanh ghi hay ô nh . Cú pháp l nh: MOV < ích>, ích>: là m t t hanh ghi hay m t ô nh : là m t t hanh ghi, m t ô nh , ho c m t h ng s li u s c chuy n t Ngu n vào ích (n i dung c a Ngu n không thay i sau khi chuy n). Ví d 1: MOV AX, 4C00h nh trên chuy n giá tr 4C00h vào thanh ghi AX. Ví d 2: MOV AL, A nh trên chuy n giá tr c a bi n A vào thanh ghi AL. Chú ý: • Không c chuy n tr c ti p n i dung c a hai thanh ghi n cho nhau. 17
  4. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng Ví d : MOV CS, DS nh trên b sai do c CS và DS u là thanh ghi n. Mu n th c hi n c u này thì ph i s d ng m t bi n hay m t t hanh ghi khác làm trung gian: Ví d : MOV AX, DS ; dùng AX làm trung gian MOV CS, AX • Không c chuy n tr c ti p n i dung c a hai bi n cho nhau. Ví d : MOV A, B L nh này không th c hi n c • Không c chuy n tr c ti p m t h ng s vào m t thanh ghi n. Ví d : MOV DS, 2000h Nói chung, mu n kh c p h c các tr ng h p nêu trên trên thì ta u ph i s d ng trung gian. b) 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: MOV , 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 . Ví d 1: XCHG AX, BX ;hoán i n i dung c a AX và BX c) L nh ADD và SUB (Subtract) Cú pháp l nh: ADD < ích>, SUB < ích>, ích>: là m t t hanh ghi hay m t ô nh : là m t t hanh ghi, m t ô nh , ho c m t h ng s ích>, không ng th i là hai ô nh . nh ADD s th c hi n phép c ng ích v i Ngu n, k t qu ch a trong ích. nh SUB s l y ích tr i Ngu n, k t qu ch a trong ích. 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. d) L nh INC (Increment) và DEC (Decrement) Cú pháp l nh: INC < ích> DEC < ích> ích>: là m t t hanh ghi hay m t ô nh nh INC s t ng ích lên 1 (c ng ích v i 1). nh DEC s gi m ích i 1 (tr ích cho 1). 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 18
  5. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng e) L nh NEG (Negartive) Cú pháp l nh: NEG < ích> ích>: là m t t hanh ghi hay m t ô nh . nh này có tác d ng i d u toán h ng ích. Ví d : NEG AL 2.3 Nh p xu t d li u 2.3.1 Ch ng trình ng t Ch ng trình ng t là nh ng ch ng trình con ã c vi t s n nh m th c hi n nh ng ch c n ng c b n khi thao tác v i máy tính. Các ch ng trình con này c phân ph i kèm theo các ph n m m u khi n h th ng nh BIOS, H u hành. M i ch ng trình có m t s hi u riêng (0, 1, 2, ...). Khi l p trình ta có th s d ng các ch ng trình con có n này b ng cách dùng l nh INT (interrupt). Cú pháp l nh: INT Ví d 1: INT 21h nh trên s g i th c hi n ch ng trình ng t s 21h ( ây là s hi u ng t hay s d ng nh t a DOS). Ví d 2: INT 13h 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 ). Chi ti t v các ng t và ch ng trình x lý ng t s trình bày trong ch ng 8. 2.3.2 Ch c n ng nh p - xu t c a ng t 21h 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ó t s hi u r iêng (0, 1, 2, ...). Trong ph n này ta ch quan tâm t i ch c n ng nh p - xu t li u. Cách s d ng ng t 21h: Tr c khi g i ng t c n xác nh c s hi u ch c n ng, s hi u ó c t vào thanh ghi AH. Ngoài ra c ng c n quan tâm t i các tham s khác (ch ng trình ng t s s d ng thanh ghi nào? Giá tr c a chúng b ng bao nhiêu?...) a) Ch c n ng 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 Ví d 2: Hi n kí t ‘M’ ra màn hình MOV AH, 2 MOV DL, ‘M’ INT 21h Sau ây là ch ng trình y : 19
  6. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng TITLE HIEN KI TU .MODEL SMALL .STACK 100H .CODE MAIN PROC MOV AH, 2 ;Ch c n ng s 2 MOV DL, ’M’ ;Kí t c n hi n th INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN Ta có th s d ng mã ASCII c a k í t ho c vi t tr c ti p kí t gi a 2 d u nháy n nh trong ch ng trình trên (nói chung, các kí t và chu i kí t trong h p ng ph i có u nháy n 2 u). Ngoài ch c n ng s 2, trong ch ng trình trên còn s d ng ch c n ng s 4Ch c a ng t 21h. Ch c n ng này có tác d ng k t thúc ch ng trình và tr l i quy n u khi n cho h u hành DOS. b) Ch c n ng 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 s c n thi t g i ng t nh sau: Vào: AH = 9 DX = a ch offset c a vùng nh ch a chu i kí t Ví d : Hi n ra màn hình dòng ch : KHOA CONG NGHE THONG TIN Gi i: 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 t vào DX INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h 20
  7. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng MAIN ENDP END MAIN Trong ch ng trình trên có m t s m c n l u ý: • Chu i kí t c n hi n th ph i c k t t húc b ng d u $. • u t rong ch ng trình có s d ng khai báo d li u .DATA thì u c a ch ng trình chính ph i có các l nh: MOV AX, @DATA MOV DS, AX c ích là t a ch segment c a n d li u vào thanh ghi DS. • Ch ng trình trên có s d ng l nh LEA (Load Effective Address). Cú pháp l nh nh sau: LEA < ích>, ích>: là m t thanh ghi công d ng chung. : là m t ô nh . nh này s l y a ch offset c a Ngu n t vào ích. c) Ch c n ng 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 s c n thi t g i ng t nh sau: Vào: AH = 1 Ra: AL ch a mã ASCII c a kí t Các l nh c th nh sau: MOV AH, 1 INT 21h Khi g p các l nh trên, ch ng trình s d ng l i ch ta gõ m t kí t t bàn phím, mã ASCII c a kí t ó s c c t trong thanh ghi AL. Ví d : Nh p m t kí t th ng t bàn phím, i nó thành kí t in hoa r i hi n ra màn hình. Gi i: 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 sang in hoa 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 21
  8. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng INT 21h MAIN ENDP END MAIN Gi i thích: Mã ASCII c a kí t th ng l n h n kí t in hoa t ng ng là 20h. Mu n chuy n t kí t th ng thành in hoa thì ch vi c l y mã ASCII c a nó tr i 20h. 2.4 Cách ch y m t ch ng trình h p ng có th ch y m t ch ng trình h p ng thì tr c h t ph i biên d ch nó thành file thi hành (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 i hai file: MASM.EXE và LINK.EXE. Các b c th c hi n nh sau: • c 1: So n th o n i dung ch ng trình b ng m t công c so n th o text b t kì, c t vào file i ph n m r ng là ASM. Ví d : t ên file là Baitap.asm • c 2: 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 m t t h m c) u d ch thành công (ch ng trình không có l i) thì ta s thu c file Baitap.obj. u ch ng trình b l i thì ph i s a, sau ó ti n hành d ch l i. • c 3: d ng công c LINK.EXE liên k t các file OBJ thu c b c 2 thành file thi hành c (EXE). Vì trong ví d này ch có 1 file OBJ nên cách gõ l nh nh sau: LINK Baitap; (Enter) (file LINK.EXE c ng cùng th m c nói trên) 22
  9. Bài gi ng h p ng Ch ng II: Các l nh c b n c a h p ng Ta s thu c file Baitap.exe. ch y file này ch vi c gõ l nh: Baitap (Enter) 23
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2