1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

9 385 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 171,77 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nói chung, trong h p ng không phân bi t ch hoa và ch th ng... DS và AX là các toán h ng... 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

Trang 1

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 , ta 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 ta 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:

li u trong 1 n

Trang 2

li u 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

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:

<Tên th t c> PROC

L nh 1

L nh 2

L nh 3

<Tên th t c> ENDP

Trang 3

• u trúc chung c a ph n mã l nh:

.CODE

<Tên ch ng trình chính> PROC

L nh 1

L nh 2

L nh 3

<Tên ch ng trình chính> ENDP .Các th t c khác

END <Tên ch ng trình chính>

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 (,)

<Tên l nh> <Toán h ng 1> [, <Toán h ng 2> ] [;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>, <Ngu n>

ích>: là m t thanh ghi hay m t ô nh

<Ngu n>: là m t thanh 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

Trang 4

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 thanh 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 ph 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 <Toán h ng 1>, <Toán h ng 2>

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>, <Ngu n>

SUB < ích>, <Ngu n>

ích>: là m t thanh ghi hay m t ô nh

<Ngu n>: là m t thanh ghi, m t ô nh , ho c m t h ng s

ích>,<Ngu n> 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 thanh 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

Trang 5

e) L nh NEG (Negartive)

Cú pháp l nh:

NEG < ích>

ích>: là m t thanh 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 <S hi u ng t>

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 riê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 :

Trang 6

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

INT 21h ;G i ng t

MOV AH, 4Ch ;K t thúc

INT 21h

Trang 7

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 thúc b ng d u $

• u trong 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>, <Ngu n>

ích>: là m t thanh ghi công d ng chung

<Ngu n>: 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

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

Trang 8

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:

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

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 th 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

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)

Trang 9

Ta s thu c file Baitap.exe ch y file này ch vi c gõ l nh:

Baitap (Enter)

Ngày đăng: 21/07/2014, 17:20

TỪ KHÓA LIÊN QUAN