ậ ChChươương 5 : Nh p môn Assembly ng 5 : Nh p môn Assembly ậ

M c tiêu

ể ể

ữ ữ

ợ ị ợ ị

ứ ứ

ả ủ ả ủ

ể ể

ế ế

ự ự

ữ ữ Hi u ngôn ng  máy và ngôn ng  Assembly.   Hi u ngôn ng  máy và ngôn ng  Assembly.   Trình h p d ch Assembler. Trình h p d ch Assembler. Lý do nghiên c u Assembly.   Lý do nghiên c u Assembly. ầ ơơ b n c a Assembly ầ Hi u các thành ph n c   Hi u các thành ph n c  b n c a Assembly ủ ợ ấ   N m ắN m ắ đưđư c c u trúc c a 1 CT Assembly.   ủ ợ ấ c c u trúc c a 1 CT Assembly.   ươương trình Assembly.   Bi ng trình Assembly. t 1 ch Bi t 1 ch ị ị Bi   Bi

t vi t vi ế ế t cách d ch, liên k t và th c thi 1 ch t cách d ch, liên k t và th c thi 1 ch

ươương trình  ng trình

ế ế ế ế Assembly.  Assembly.

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 11

ớ ớ

ữ ữ

ệ ệ

Gi Gi

i thi u ngôn ng  Assembly i thi u ngôn ng  Assembly

ầ ứ ầ ứ

ưư ph n ầ ph n ầ

 Giúp khám phá bí m t ph n c ng cũng nh ậ ậ Giúp khám phá bí m t ph n c ng cũng nh ềm m  máy tính. m m  máy tính.

ụ ụ

 N m ắN m ắ đưđư c cách ph n c ng MT làm vi c v i h   ệ ớ ệ ầ ứ ợ ệ ớ ệ ầ ứ ợ c cách ph n c ng MT làm vi c v i h   ợ ằ ể đưđư c b ng cách nào 1 trình  ề ợ ằc b ng cách nào 1 trình  ể ề i u hành và hi u  đđi u hành và hi u  ề ế ớ ệ đđi u hành. ứ ềi u hành. ế ớ ệ ứ ng d ng  giao ti p v i h   ng d ng  giao ti p v i h

ộ ộ

ộ ọ ộ ọ

ậ ệ ậ ệ

ử ụ ử ụ ữ ữ

 M t MT hay m t h  MT s  d ng 1 t p l nh mã  M t MT hay m t h  MT s  d ng 1 t p l nh mã  máy riêng cũng nhưư 1 ngôn ng  Assembly riêng.  1 ngôn ng  Assembly riêng. máy riêng cũng nh

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 22

Assembler Assembler ế ằ ế ằ ợ ợ

 M t chộM t chộ ố ố

ể ể

ươương trình vi ữ ữ ng trình vi t b ng ngôn ng  Assembly  t b ng ngôn ng  Assembly  ả ệ đưđư c ta ph i chuy n thành  ự ả ệ ự c ta ph i chuy n thành  mu n MT th c hi n  mu n MT th c hi n  ữ ngônngôn  ng  máy.  ững  máy.

ể ị ể ị

ế ằ ế ằ

t b ng Assembly  t b ng Assembly

  ChChươương trình dùng   d ch 1 file vi ng trình dùng đđ  d ch 1 file vi  ngôn ng  máy , g i là Assembler ọ ữ ..  ngôn ng  máy , g i là Assembler ọ ữ

Có 2 chương trình d ch:

MASM  và  TASM

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 33

ứ ứ

Lý do nghiên c u Assembly Lý do nghiên c u Assembly

ể ọ ể ọ

t nh t  t nh t

ầ ứ ấ đđ  h c ph n c ng MT  ầ ứ ấ  h c ph n c ng MT

 Đó  là cách t ố ố Đó  là cách t ề và h  ệ đđi u hành. ềi u hành. và h  ệ

ủ ủ

ệ ệ

 Vì các ti n ích c a nó . Vì các ti n ích c a nó .

ể ể

ươương trình con vi ng trình con vi

t ế t ế ươương trình vi ng trình vi

t ế t ế

ữ ấ ữ ấ

ằ ằ ằ

 Có th  nhúng các ch Có th  nhúng các ch ằb ng ASM vào trong cácch b ng ASM vào trong cácch b ng ngôn ng  c p cao . b ng ngôn ng  c p cao .

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 44

ổ ổ

ệ ệc bi

ặ ặ đđ c bi

t  – nó ra  t  – nó ra

ệ ệ

ớ ớ

ị ị

v  trí nh  này sang v  trí nh  khác.  v  trí nh  này sang v  trí nh  khác.

ộ ộ

ố ố

ệL nh máy L nh máy  Là 1 chu i nh  phân có ý nghĩa  ị ị Là 1 chu i nh  phân có ý nghĩa  ụ ự ệ ụ ự ệ l nh cho CPU th c hi n tác v . l nh cho CPU th c hi n tác v .  Tác v  ụ ó có th  là :ể Tác v  ụ đđó có th  là :ể ớ ố ừ ị ể ớ ố ừ ị ể di chuy n 1 s  t di chuy n 1 s  t ố ố C ng 2 s  hay so sánh 2 s . C ng 2 s  hay so sánh 2 s .

0 0 0 0 0 1 0 0 Add a number to the AL register

1 0 0 0 0 1 0 1 Add a number to a variable

1 0 1 0 0 0 1 1 Move the AX reg to another reg

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 55

ệL nh máy (cont) L nh máy (cont)

ớ ưư c, khi CPU  ớc, khi CPU

đưđư c ợc ợ

 T p l nh máy  ậ ệ ậ ệ T p l nh máy  ấ ả ấ ả s n xu t và nó  s n xu t và nó

ị đưđư c ợc ợ đđ nh nghĩa tr ịnh nghĩa tr ể ưưng cho ki u CPU . đđ c trặc trặ ể ng cho ki u CPU .

ế ạ ế ạ

ố ố

t d ng s  hex, dài 2 byte. t d ng s  hex, dài 2 byte.

ệ ệ ọ ọ

ầ ầ

ạ ạ

 Ex : B5 05 là 1 l nh máy vi Ex : B5 05 là 1 l nh máy vi  Byte Byte đđ u B5  g i là Opcode  u B5  g i là Opcode   Byte sau 05 g i là toán h ng Operand ọ ọ Byte sau 05 g i là toán h ng Operand

ủ ệ

Ýù nghĩa c a l nh B5  05 : chép giá tr  5 vào reg AL

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 66

ế ế

Cách vi Cách vi

t 1 ch t 1 ch

ươương trình Assembly ng trình Assembly

ấ ỳ đ  ể

So n CT TenCT.ASM

Dùng 1 ph n m m so n th o VB b t k   soan CT Assembly như : NotePad, NC, màn hình  C, Pascal ...

ở ộ

D chị

CT

CT có ph n m  r ng là .ASM ể ị

ương trình ngu n ồ

dùng MASM đ  d ch ch .ASM  File Object.

ạ ậ

ế

ế Liên k t  CT

dùng LINK đ  liên k t Object  t o t p tin th c  hi n .EXE

ừ ấ

d u nh c

Ch y  CT

ậ  G  tên t p  tin th c hi n .EXE  t ể ạ DOS đ  ch y

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 77

ố ế ố ế

ị ị

D ch và n i k t ch D ch và n i k t ch

ươương trình ng trình

MASM.EXE

TenCT .ASM

TenCT .OBJ

LINK.EXE

TenCT .CRF

TenCT .MAP

TenCT .LIST

TenCT .EXE

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 88

M t chộM t chộ

ng trình minh hoạ ươương trình minh hoạ

MOV DX, OFFSET MES

MOV AH, 9

INT 21

MOV AH,4CH

INT 21

MAIN ENDP

DOSSEG DOSSEG .MODEL SMALL .MODEL SMALL .STACK 100h .STACK 100h .DATA .DATA MES DB “HELLO WORD”,’$’ MES DB “HELLO WORD”,’$’ .CODE .CODE MAIN PROC MAIN PROC MOV AX, @DATA MOV AX, @DATA MOV DS, AX MOV DS, AX

END MAIN

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 99

ợ ạ Các file đưđư c t o ợ ạc t o Các file

ị ị

ố ứ ự ố ứ ự

mã.  mã.

 Sau khi d ch thành công file ngu n.ASM, ta có các file : ồ Sau khi d ch thành công file ngu n.ASM, ta có các file : ồ  File listing : file VB , các dòng có  ánh s  th  t File listing : file VB , các dòng có đđánh s  th  t  File Cross reference File Cross reference  File Map File Map  File Obj File Obj  File EXE File EXE

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1010

File Listing File Listing

 Microsoft (R) Macro Assembler Version 5.10 10/11/4 Microsoft (R) Macro Assembler Version 5.10 10/11/4  Page 1-1 Page 1-1

 1 DOSSEG 1 DOSSEG  2 .MODEL SMALL 2 .MODEL SMALL  3 .STACK 100H 3 .STACK 100H  4 .DATA 4 .DATA  5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$" 5 0000 48 45 4C 4C 4F 20 MES DB "HELLO WORD$"  6 57 4F 52 44 24 6 57 4F 52 44 24  7 .CODE 7 .CODE  8 0000 MAIN PROC 8 0000 MAIN PROC  9 0000 B8 ---- R MOV AX,@DATA 9 0000 B8 ---- R MOV AX,@DATA  10 0003 8E D8 MOV DS, AX 10 0003 8E D8 MOV DS, AX  11 0005 B4 09 MOV AH,9 11 0005 B4 09 MOV AH,9  12 0007 BA 0000 R MOV DX, OFFSET MES 12 0007 BA 0000 R MOV DX, OFFSET MES  13 000A CD 21 INT 21H 13 000A CD 21 INT 21H  14 000C B4 4C MOV AH,4CH 14 000C B4 4C MOV AH,4CH  15 000E CD 21 INT 21H 15 000E CD 21 INT 21H  16 0010 MAIN ENDP 16 0010 MAIN ENDP  17 END MAIN 17 END MAIN  ♀◘♀◘Microsoft (R) Macro Assembler Version 5.10 10/11/4 Microsoft (R) Macro Assembler Version 5.10 10/11/4

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1111

Map File Map File

 Start Stop Length Name Class Start Stop Length Name Class  00000H 0001FH 00020H _TEXT CODE 00000H 0001FH 00020H _TEXT CODE  00020H 0002AH 0000BH _DATA DATA 00020H 0002AH 0000BH _DATA DATA  00030H 0012FH 00100H STACK STACK 00030H 0012FH 00100H STACK STACK

 Origin Group Origin Group  0002:0 DGROUP 0002:0 DGROUP

 Program entry point at 0000:0010 Program entry point at 0000:0010

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1212

ớ ớ

ộ ộ

ữ ệ ữ ệ

ươương ng

ó các bi n ế ạ ữ ệ ở đđó các bi n ế   o n d  li u  đđo n d  li u  ạ ữ ệ ở

ứ ứ

ệ ệ

ả ạ o n mã ch a các l nh ph i  đđo n mã ch a các l nh ph i  ả ạ

ầ ầ

ỉ ỉ

ủ ụ ủ ụ

ả ảGi i thích Gi i thích  .model small : dùng ki u c u trúc <= 64 K b  nh  cho  ể ấ .model small : dùng ki u c u trúc <= 64 K b  nh  cho  ể ấ mã , 64K cho d  li u. mã , 64K cho d  li u.  .Stack 100h : dành 256 bytes cho stack c a chủ .Stack 100h : dành 256 bytes cho stack c a chủ trình . trình .  .Data :  ấ .Data : đđánh d u phân  ánh d u phân  ấ đưđư c lợc lợ ưưu tr .ữu tr .ữ    .Code :  ấ ánh d u phân  .Code : đđánh d u phân  ấ thi hành.  thi hành.   Proc : khai báo  ủ ụ u 1 th  t c, trong Ex này ta ch  có 1  Proc : khai báo đđ u 1 th  t c, trong Ex này ta ch  có 1  ủ ụ th  t c Main. th  t c Main.

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1313

ả ảGi Gi

i thích (cont) i thích (cont)

ạ ữ ệ ạ ữ ệ

ọ ọ

ể ấ ể ấ xu t  đđ  xu t

 Chép  ỉ đđo n d  li u vào thanh ghi AX. ị ỉ ị o n d  li u vào thanh ghi AX. Chép đđ a ch   a ch    Sau Sau đđó chép vào thanh ghi DS ó chép vào thanh ghi DS  G i hàm s  9 c a Int 21h c a Dos  ố ủ ủ ố ủ ủ G i hàm s  9 c a Int 21h c a Dos  ự ổ ự ổ  ra màn hình. chu i ký t chu i ký t  ra màn hình.  Thoát kh i CT . ỏ ỏ Thoát kh i CT .  Main endp :  ủ ụ ế ấ ế ủ ụ ấ Main endp : đđánh d u k t thúc th  t c ánh d u k t thúc th  t c  End main : ch m d t ch ươương trình ứ ấ ứ ấ ng trình End main : ch m d t ch

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1414

ấ ấ

ủ ủ C u trúc c a 1 CT ASM C u trúc c a 1 CT ASM

DOSSEG DOSSEG .MODEL kieåu boä nhôù .MODEL kieåu boä nhôù .STACK  kích thöôùc .STACK  kích thöôùc .DATA .DATA khai baùo bieán, haèng          khai baùo bieán, haèng           .CODE .CODE MAIN PROC       MAIN PROC         MOV  AX, @DATA MOV  AX, @DATA          MOV  DS,AX         MOV  DS,AX          caùc leänh cuûa chöông trình chính               caùc leänh cuûa chöông trình chính                MOV AH,4CH  ; Thoaùt khoûi chöông trình        MOV AH,4CH  ; Thoaùt khoûi chöông trình         INT 21H        INT 21H             MAIN ENDP MAIN ENDP caùc chöông trình con khaùc neáu coù         caùc chöông trình con khaùc neáu coù          END MAIN END MAIN

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1515

ộ ộ ớ Các ch  ế đđ  b  nh ộ ộ ớ Các ch  ế  b  nh Moâ taû Moâ taû

KieåuKieåu Maõ leänh trong 1 ñoaïn.Döõ lieäu trong 1 ñoaïn SMALL Maõ leänh trong 1 ñoaïn.Döõ lieäu trong 1 ñoaïn SMALL Maõ leänh nhieàu hôn 1 ñoaïn.Döõ lieäu trong 1  MEDIUM Maõ leänh nhieàu hôn 1 ñoaïn.Döõ lieäu trong 1  MEDIUM ñoaïn ñoaïn Maõ leänh trong 1 ñoaïn. Döõ lieäu nhieàu hôn 1  COMPACT Maõ leänh trong 1 ñoaïn. Döõ lieäu nhieàu hôn 1  COMPACT ñoaïn ñoaïn Maõ leänh nhieàu hôn  1 ñoaïn Maõ leänh nhieàu hôn  1 ñoaïn

LARGE LARGE

HUGEHUGE

Döõ lieäu nhieàu hôn 1 ñoaïn,khoâng coù maûng  Döõ lieäu nhieàu hôn 1 ñoaïn,khoâng coù maûng  naøo > 64K naøo > 64K Maõ leänh nhieàu hôn  1 ñoaïn Maõ leänh nhieàu hôn  1 ñoaïn

Döõ lieäu nhieàu hôn 1 ñoaïn, maûng coù theå  >  Döõ lieäu nhieàu hôn 1 ñoaïn, maûng coù theå  >  64K64K

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1616

ệ ệ

ạ ạ

D ng l nh D ng l nh

Chú thích

 [name] [operator] [ operand] [comment] [name] [operator] [ operand] [comment]

ạ ớ

ệ Mã l nh d ng g i nhợ

Register, ô nhớ ị ằ Tr , h ng

Nhãn, tên bi nế Tên th  t củ ụ

Ex :  MOV CX , 0

ỉ ứ

ỗ ệ

LAP  :  MOV  CX, 4

ỗ ả ằ

M i dòng ch  ch a 1 l nh và m i l nh  ph i n m trên 1 dòng

LIST  DB  1,2,3,4

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1717

ệ ệ

ể ọ đđ   g i  ể ọ  g i

INT 21H INT 21H  L nh  INT  s   hi u  ng t  ợ ắ đưđư c  dùng  ệ ố ợc  dùng  L nh  INT  s   hi u  ng t  ắ ố ệ ắ ủ chchươương trình ng t c a DOS và BIOS. ng trình ng t c a DOS và BIOS. ắ ủ

ố ử ụ

đ t ặ

ắ Ng t 21h ủ Mu n s  d ng hàm nào c a INT 21h ta  ọ

function_number vào thanh ghi AH, sau đó g i INT 21h

Function_number

ch c nứ ăng

1                                             nh p 1 ký t

ự ừ  t

bàn phím

2                                            Xu t 1 ký t

ra mà hình.

9                                              Xu t 1 chu i ký t

ra màn

hình Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM

10/04/16 10/04/16 1818

INT 21h (cont) INT 21h (cont)

Hàm 1 : Nh p 1 ký t

ế

Input : AH =1 ủ Output : AL = mã ASCCI c a phím  n đi u khi ân                     = 0 n u 1 phím

ấ ể đư c  nợ ấ

ể Hàm 2 : Hi n th  1 ký t

ra màn hình

ự ể

Input : AH =2 DL = Mã ASCII c a ký t

ị  hi n th  hay ký t

ể ự đi u khi n

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 1919

ụ ụ

ọ ọ Thí d  minh h a Thí d  minh h a

DOSSEG .MODEL SMALL .STACK 100H .CODE   MAIN PROC      MOV AH , 2      MOV DL , ‘?’      INT 21H      MOV AH ,1      INT 21H      MOV BL,AL

MOV  AH,2    MOV DL, 0DH    INT 21H    MOV DL , 0AH    INT 21H    MOV DL , BL    INT 21H    MOV AX , 4C00H    INT 21H    MAIN ENDP END MAIN

K T QU

? N N

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2020

ụ ụ

ủ ủ

ọ ọ

Thí d  minh h a các hàm c a INT 21 Thí d  minh h a các hàm c a INT 21

ự ừ ự ừ  t  t

bàn phím :  bàn phím :

 In d u ? ra màn hình : ấ ấ In d u ? ra màn hình : MOV AH, 2       MOV AH, 2        MOV DL, ‘?’       MOV DL, ‘?’        INT 21H       INT 21H         Nh p 1 ký t ậ ậ Nh p 1 ký t MOV AH, 1       MOV AH, 1        INT 21H       INT 21H

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2121

ộ ộ

ầ ừ đđ u phân  ầu phân  ừ

đđo n ạo n ạ

ế ế

ớ ỉ  ở đđ a ch  100 v i  ị ớ ị ỉ  ở a ch  100 v i

Bi nếBi nế  Cú pháp :   ị ở ạ        ế ị ở ạ ế [tên bi n] DB | DW |....   [tr  kh i t o] Cú pháp :  [tên bi n] DB | DW |....   [tr  kh i t o]  Là m t tên ký hi u dành riêng cho 1 v  trí trong b   ộ ị ệ ị ộ ệ Là m t tên ký hi u dành riêng cho 1 v  trí trong b   ữ ữ ệ nh  nớnh  nớ ơơi li lưưu tr  d  li u. ữ ữ ệ u tr  d  li u.  Offset c a bi n là kho ng cách t ả ế ủ ủ ả ế Offset c a bi n là kho ng cách t ế đđó.ó. ến bi n  đđ n bi n   Ex : khai báo 1 danh sách aList  Ex : khai báo 1 danh sách aList  ộn i dung sau : n i dung sau : .data     .data aList  db “ABCD”       aList  db “ABCD”

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2222

ế

ếBi n (cont) Bi n (cont)

Lúc Lúc đđó :ó : OffsetOffset 0000 0000 0001 0001 0002 0002 0003 0003

Bi nếBi nế AA BB CC DD

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2323

Khai báo bi nế Khai báo bi nế

Moâ taû Töø gôïi nhôù Moâ taû Töø gôïi nhôù DBDB

Soá byte Soá byte 11

Thuoäc tính Thuoäc tính ByteByte

Ñònh Ñònh nghóa byte nghóa byte TöøTöø Töø keùp Töø keùp

DWDW DDDD

22 44

Töø töù Töø töù 10 bytes 10 bytes

DQDQ DTDT

88 1010

WordWord Doublewor Doublewor dd Quardword Quardword tenbyte tenbyte

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2424

ọ ọ

ế Minh h a khai báo bi n ế Minh h a khai báo bi n

KI U  BYTE

 Char  db  ‘A’ Char  db  ‘A’  Num db 41h Num db 41h  Mes db  “Hello Word”,’$’ Mes db  “Hello Word”,’$’  Array_1 db   10, 32, 41h, 00100101b Array_1 db   10, 32, 41h, 00100101b  Array_2  db   2,3,4,6,9 Array_2  db   2,3,4,6,9  Myvar  db  ?    ; bi n không kh i t o ở ạ ế ở ạ ế Myvar  db  ?    ; bi n không kh i t o    Btable  db 1,2,3,4,5 Btable  db 1,2,3,4,5 db 6,7,8,9,10                     db 6,7,8,9,10

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2525

ọ ọ

ế Minh h a khai báo bi n ế Minh h a khai báo bi n

KI U  WORD

DW  3  DUP (?)     DW  3  DUP (?) DW 1000h, ‘AB’, 1024     DW 1000h, ‘AB’, 1024 DW  ?     DW  ? DW  5  DUP (1000h)      DW  5  DUP (1000h)  DW  256*2      DW  256*2

Ữ Ữ Ệ

D NG L

ƯU TR  D  LI U KI U WORD :

ị ể

đ o ngả

ư c các byte trong 1 giá tr  ki u WORD

ợ ị ữ

ợ Trình h p d ch  ộ ớ khi lưu tr  trong b  nh  :

ỉ ấ

ưu

ở đ a ch  cao

Byte th p lấ ưu  10/04/16 10/04/16

ở đ a ch  th p   Byte cao l Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM

2626

ọ ọ

ế Minh h a khai báo bi n ế Minh h a khai báo bi n

KI U  WORD

Ex : 1234h đư c lợ ưu tr  trong b  nh  nh

ộ ớ ư sau :

Ỉ Đ A  CH

1000h

1001h

BỘ

NHỚ

12

34

Ữ Ệ D  LI U

1234H

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2727

ử ử

Toán t Toán t

DUP  DUP

ở ạ ở ạ

ề ề

ị ị

i 1 hay nhi u giá tr  kh i t o. i 1 hay nhi u giá tr  kh i t o.

ấ ả ằ ấ ả ằ

 L p l ặ ạ L p l ặ ạ  Ex :Ex : Bmem   DB  50 Dup(?)  Bmem   DB  50 Dup(?)  ớ ồ ; khai báo vùng nh  g m 50 bytes. ớ ồ ; khai báo vùng nh  g m 50 bytes. db  4 dup (“ABC”)       db  4 dup (“ABC”)   ;12 bytes “ABCABCABCABC” ;12 bytes “ABCABCABCABC” db 4096 dup (0)      db 4096 dup (0)  ệ m 4096 bytes t ; Vùng đđ m 4096 bytes t ệ ; Vùng

t c  b ng 0 t c  b ng 0

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2828

ở ạ ở ạ

ế ế

Kh i t o bi n  Kh i t o bi n

ố ố

ế ế

0   0

 LLưưu ý : u ý : ị ố ở ạ ị Khi kh i t o tr  là 1 s  hex thì giá tr  s  luôn luôn  ị ố ở ạ ị Khi kh i t o tr  là 1 s  hex thì giá tr  s  luôn luôn  ố ố ừ đđ n 9. N u ký s   ế ằ b t ắb t ắ đđ u b ng 1 ký s  t ầ n 9. N u ký s   u b ng 1 ký s  t ế ố ố ừ ầ ằ ố ở đđ u.ầu.ầ ả ầ b t ắb t ắ đđ u là A.. F thì ph i thêm s  0    u là A.. F thì ph i thêm s  0  ố ở ả ầ     Ex :Ex :

Db  A6H   ; sai   Db  A6H   ; sai Db  0A6h  ; đđúngúng Db  0A6h  ;

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 2929

ử ử

Toán t Toán t

DUP (cont)   DUP (cont)

Amtrix  dw  3 dup (4 dup (0) ) Amtrix  dw  3 dup (4 dup (0) ) ậ

T o 1 ma tr n 3x4

Atable  db  4 dup (3 dup (0), 2 dup (‘X’))

T o  1 vùng  nh  ch a 000XX  000XX  000XX 000XX

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3030

ử ử

Toán t Toán t

DUP  DUP

ỉ ấ ỉ ấ

ị ị

ớ ớ

ề ề

ị ị i 1 hay nhi u tr   i 1 hay nhi u tr

ệ ớ ả ệ ớ ả

ổ ổ

ấ ấ

 Ch  xu t hi n sau 1 ch  th  DB hay DW ỉ ệ ỉ ệ Ch  xu t hi n sau 1 ch  th  DB hay DW  V i DUP ta có th  l p l ể ặ ạ ể ặ ạ V i DUP ta có th  l p l cho vùng nh .ớ cho vùng nh .ớ  R t có ích khi làm vi c v i m ng hay chu i.  R t có ích khi làm vi c v i m ng hay chu i.

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3131

Toán t Toán t

?ử  ?ử

ố ố

ở ạ ở ạ

 Mu n khai báo 1 bi n hay 1 m ng mà không  ế Mu n khai báo 1 bi n hay 1 m ng mà không  ế ị ầ c n kh i t o tr  ta dùng toán t ị ầ c n kh i t o tr  ta dùng toán t

ả ả ử  ? ử  ?

ộ ớ

Ex :  MEM8   DB  ?     ; khai báo 1 byte tr ng trong b  nh

ộ ớ

MEM16   DW  ?     ; khai báo 2 byte tr ng trong b  nh

BMEM   DB 50 DUP(?)

ộ ớ

; khai báo 50 byte tr ng trong b  nh

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3232

ạ ChChươương trình d ng .COM ng trình d ng .COM ạ

ệ ệ

ị ạ ị ạ

ợ ạ đưđư c n p ợ ạc n p

CODE SEGMENT CODE SEGMENT     ASSUME  CS:CODE , DS:CODE, SS:CODE ASSUME  CS:CODE , DS:CODE, SS:CODE ỉ ằ ; toàn b  chộ ươương trình ch  n m trong 1 segment ng trình ch  n m trong 1 segment ỉ ằ ; toàn b  chộ ỉ Org  100h ;; ch  th  n p thanh ghi l nh IP=100h khi CT  ỉ Org  100h ;; ch  th  n p thanh ghi l nh IP=100h khi CT  Main proc Main proc mov ax,bx       mov ax,bx  ……………..  …………… Main endp Main endp Count db  10 Count db  10 ……………………… ……………………… Code ends Code ends End main End main

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3333

SUMMARY SUMMARY

ệ ệ

ề ề

ặ ặ

ể ể ể ể

ự ế ự ế

ấ ấ

ạ ạ ụ ụ ắ ủ ụ ụ ắ ủ

 chchươương trình Assembly g m nhi u dòng l nh. ồ ng trình Assembly g m nhi u dòng l nh. ồ  M i l nh ph i vi ả ỗ ệ ế t trên 1 dòng M i l nh ph i vi ả ỗ ệ ế t trên 1 dòng  L nh có th  g m [tên] [toán t ] [toán h ng]  ể ồ ử ệ ạ L nh có th  g m [tên] [toán t ] [toán h ng]  ể ồ ử ệ ạ  Các ký t ấ ự ả đđ t trong d u ‘ ‘ hay “ “ Các ký t t trong d u ‘ ‘ hay “ “  ph i  ấ ự ả  ph i   DB dùng  ế ị DB dùng đđ  ể ể đđ nh nghĩa bi n ki u BYTE nh nghĩa bi n ki u BYTE ế ị  DW dùng  ế ị DW dùng đđ  ể ể đđ nh nghĩa bi n ki u WORD. nh nghĩa bi n ki u WORD. ế ị  Có 2 cách xu t nh p d  li u : liên l c tr c ti p qua  ậ ữ ệ Có 2 cách xu t nh p d  li u : liên l c tr c ti p qua  ậ ữ ệ ổ c ng hay dùng các ph c v  ng t c a DOS và BIOS. ổ c ng hay dùng các ph c v  ng t c a DOS và BIOS.

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3434

 Trong mã máy d

t p tin   t p tin

ệ ệ

ủ ủ

ế ế

ưư i ới ớ

ệ ệ

ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p ợ ấ ừ ậ Trong mã máy dưư i ới ớ đđây ây đưđư c l y t c l y t ợ ấ ừ ậ t kê, hãy nêu ý nghĩa c a R li t kê, hãy nêu ý nghĩa c a R li 5B 0021   R              ADD BX, VAL1      5B 0021   R              ADD BX, VAL1   Nêu ý nghĩa c a ký hi u  ỉ ủ ệ đđ a ch  c a bi n d ị ủ Nêu ý nghĩa c a ký hi u  a ch  c a bi n d ị ỉ ủ ệ ủ ậ t kê. ây trong 1 t p tin li đđây trong 1 t p tin li ậ t kê. 5B 0021   R              ADD BX, VAL1      5B 0021   R              ADD BX, VAL1

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3535

ỗ ỗ

ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p ệ i. Hãy tìm câu l nh nào gây ra l ệ i. Hãy tìm câu l nh nào gây ra l

i, gi i, gi

ả i  ả i

 ChChươương trình sau có l ỗ ng trình sau có l ỗ úng.  đđúng.  i cho  i cho

ử ạ thích và s a l ử ạ thích và s a l   ..MODEL SMALL MODEL SMALL   .STACK 100H .STACK 100H .DATA .DATA       MOV AX, VALUE1 MOV AX, VALUE1 MOV BX, VALUE2       MOV BX, VALUE2       INC BX, 1 INC BX, 1 INT 21H       INT 21H MOV 4C00H, AX       MOV 4C00H, AX

MAIN ENDP

VALUE1      0AH

VALUE2     1000H

END MAIN

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3636

ỗ ỗ

ệ i. Hãy tìm câu l nh nào gây ra l ệ i. Hãy tìm câu l nh nào gây ra l

i, gi i, gi

ả i  ả i

 ChChươương trình sau có l ỗ ng trình sau có l ỗ úng.  đđúng.  i cho  i cho

ậ ỏ Câu h i ôn t p ậ ỏ Câu h i ôn t p

ử ạ thích và s a l ử ạ thích và s a l   ..MODEL SMALL MODEL SMALL .STACK 100H   .STACK 100H .CODE .CODE MAIN PROC MAIN PROC MOV AX, @DATA       MOV AX, @DATA MOV DS , AX       MOV DS , AX       MOV AX, VALUE1 MOV AX, VALUE1 MOV AX, VALUE2     MOV AX, VALUE2      MOV AX, 4C00H       MOV AX, 4C00H   INT 21H INT 21H MAIN ENDP

VALUE1 DB  0AH

VALUE2 DB 1000H

END MAIN 10/04/16 10/04/16

Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3737

ậ ậ Bài t p l p trình ậ ậ Bài t p l p trình

th  th

ờ ự ưư ng ,  ờng ,  ự

hoa t  hoa t

ế ế

ể ể

ạ ạ

ầ ầ

ươương trình nh p 1 ký t ậ t chế ng trình nh p 1 ký t Bài 1 : Vi ậ t chế Bài 1 : Vi ươương  ng.ứng  ng.ứ ự in ra ký t ự in ra ký t ị ươương trình hoán v  2 bi n ki u  t chế ng trình hoán v  2 bi n ki u  Bài 2 : Vi ị t chế Bài 2 : Vi ị byte đưđư c gán s n tr . ẵ ợ c gán s n tr . ẵ ợ ị byte  ươương trình t o 1 array có các ph n  t chế ng trình t o 1 array có các ph n  Bài 3 : Vi t chế Bài 3 : Vi  31h,32h,33h,34h.  31h,32h,33h,34h.

ấ ấ

vào thanh ghi DL và xu t nó ra   vào thanh ghi DL và xu t nó ra

ạ ạ

ế ế

i thích t i thích t

ấ i sao k t xu t trên màn  ấ i sao k t xu t trên màn

ử ửt t ầ ử ạ ừ N p t ng ph n t ầ ử ạ ừ N p t ng ph n t ả màn hình. Gi ả màn hình. Gi hình là 1234.  hình là 1234.

10/04/16 10/04/16 Chuong 5 Nhap mon ASM Chuong 5 Nhap mon ASM 3838