
18
Bài 3: S dng công c TASM đ dch chưng trình
Mc ích ca bài thc hành: Giúp sinh viên làm quen vi công c Turbo Assember
dch các chơng trình hp ng.
Các bài tp thc hành:
1. Tìm hiu các thông s ca chơng trình thc thi TASM.EXE, TLINK.EXE,
EXE2BIN.EXE
Hng dn: Vào ch command line, gõ ln lt:
TASM /?
TLINK/?
EXE2BIN /?
2. S dng công c son tho chơng trình, son hai file mu chơng trình Hello
Assembly dng COM và dng EXE ã hc trong bui lý thuyt vi tên t là:
Hello_E.ASM Cho chơng trình dng EXE
Hello_C.ASM Cho chơng trình dng COM
3. Dch và thc thi hai file ngun Hello_E.ASM và Hello_C.ASM bng công c TASM
Hng dn:
+ Vào ch dòng lnh(Start
Run
CMD.EXE)
+ Dùng lnh CD chuyn n th mc cha file ngun ã to
+ Dùng lnh PATH thit lp ng dn n công c TASM
PATH <ng dn n các file TASM.EXE, TLINK.EXE> ↵
Lu ý: có th double click lên file thuchanh.bat thc hin các công vic trên mt
cách nhanh chóng.
+Dch và thc thi file dng EXE (Hello_E.ASM) :
B1. Dch file ngun Hello_E.ASM thành file Hello_E.OBJ
TASM Hello_E.ASM ↵
Dùng lnh DIR xem ã xut hin file Hello_E.OBJ cha
B2. Chuyn file Hello_E.OBJ thành file thc thi Hello_E.EXE
TLINK Hello_E.OBJ ↵
Dùng lnh DIR xem ã xut hin file Hello_E.EXE cha
B3. Thc thi file EXE bng cách gõ tên file Hello_E ch dòng lnh và ghi
nhn kt qu:
Hello_E ↵
+Dch và thc thi file dng COM (Hello_C.ASM) :
B1. & B2. Làm tơng t dng EXE
Sau các bc này ta có file Hello_C.EXE

19
B3. Chuyn file EXE thành file COM:
EXE2BIN Hello_C.EXE Hello_C.COM ↵
Dùng lnh DIR xem ã xut hin file Hello_C.COM cha
B4. Thc thi file Hello_C.COM
So sánh kích thc ca hai file Hello_C.COM và Hello_E.EXE
4. Th debug chơng trình COM và EXE bng chơng trình DEBUG
Hng dn:
DEBUG HELLO_C.COM
DEBUG HELLO_E.EXE
Dùng lnh D, U xem ni dung chơng trình trong b nh, G thc thi.
5. Th debug chơng trình COM và EXE bng chơng trình TD (Turbo debugger)
Hng dn:
TD HELLO_C.COM
TD HELLO_E.EXE
Bài tp: Vit chơng trình in ra màn hình các thông tin v sinh viên nh sau, mi
thông tin in trên 1 dòng
Truong:….
Lop:….
Ho va ten: …..
Yêu cu: Vit cho hai dng EXE và COM
Gi ý: có th in ra chui sau iu khin vic xung dòng:
xuongdong db 0Dh,0Ah,’$’

20
Bài 4: Ngt và các chưng trình phc v xut nhp
Mc ích ca bài thc hành: Giúp sinh viên làm quen vi các thao tác xut nhp màn
hình /bàn phím qua INT 21h. Sinh viên tham kho thêm trong cun giáo trình.
4.1. Khái nim ngt và các chưng trình phc v:
S dng các lnh IN / OUT cho các thao tác xut nhp các thit b ngoi vi là công vic
phc tp, òi hi ngi lp trình phi am hiu phn cng máy tính. Ngoài ra tùy theo các
loi máy tính mà s hiu cng ca các thit b ngoi vi có th thay i. Vì vy ơn gin,
các nhà sn xut máy tính ã cung cp s n các chơng trình phc v vào ra cơ bn cho
ngi lp trình và ngi lp trình s! gi các chơng trình phc v này thông qua li gi
ng"t INT
Cú pháp: INT s_hiu_ng"t
Mi s hiu ng"t tơng ng vi m#t b# chơng trình phc v, mi b# chơng trình gm
nhiu hàm, các hàm c chn thông qua thanh ghi AH.
Ví d: INT 21h/AH=1 : Nhp 1 ký t t$ bàn phím
INT 21h/AH=2 : Xut 1 ký t ra màn hình
INT 21h/AH=9 : Xut 1 chui ký t ra màn hình
4.2. Các chưng trình phc v nhp xut c bn qua ngt INT 21h
4.2.1. Nhp ký t t bàn phím
a. INT 21h/AH=1
• Nhp m#t ký t t$ bàn phím và có hin th ký t này ra màn hình
• Gi vi: AH=1
INT 21h
• Tr tr v: AL = mã ASCII ca ký t v$a nhp
• Bài tp thc hành: Th hàm này bng trình debug
Hng dn:
Kh%i #ng Debug, nhp vào on chơng trình gi hàm INT21h/AH=1 % a ch&
CS:100h
-a 100
17E1:0100 MOV AH,1
17E1:0102 INT 21
17E1:0104
Lu ý trong debug h m mc nh là 16 nên ch cn vit 21
thay vì 21h

21
Thc thi on chơng trình gm 2 lnh v$a nhp, và nhp vào 1 ký t bt k'
(trong ví d này nhp vào ký t B):
-g=100 104
B
Xem n#i dung các thanh ghi sau khi thc hin xong:
AX=0142 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=17E1 IP=0104 NV UP EI PL NZ NA PO NC
17E1:0104 0000 ADD [BX+SI],AL DS:0000=CD
AX có giá tr 0142,
vi AH=01 (gán b%i lnh MOV)
và AL=42h (mã ASCII ca ký t ‘B’ ã nhp)
b. INT 21h/AH=8
• Nhp m#t ký t t$ bàn phím nhng không hin th ký t này ra màn hình
• Gi vi: AH=8
INT 21h
• Tr tr v: AL = mã ASCII ca ký t v$a nhp
• Bài tp thc hành: Th hàm này bng trình debug tơng t nh mc a.
4.2.2. Nhp chui t bàn phím - INT 21h/AH=0Ah
• Nhp m#t chui ký t t$ bàn phím vi chiu dài ti a 255, dùng phím
BACKSPACE sa ký t, ENTER kt thúc vic nhp
• Gi vi: AH=0Ah
DS:DX = a ch& ca vùng m lu chui
INT 21h
• Tr tr v: không có
• Chú ý: Vùng m lu chui phi có dng sau:
o Byte u tiên: kích thc ca vùng m, th hin s byte ti a cn c
- cn phi gán trc khi gi hàm
o Byte th hai: s byte thc s c – c tr v sau khi gi hàm
o Các byte tip theo: lu các ký t ã nhp vào – c gán sau khi gi
hàm
• Bài tp thc hành: Th hàm này bng trình debug tơng t nh mc a.
Hng dn:
Nhp chui dài ti a 20 ký t (14h) vào vùng nh DS:202h
Dùng lnh E chu(n b vùng m cha chui nhp gm byte u tiên cha giá tr
14h, byte th 2 cha giá tr 0:
-E DS:200 14 00
Dùng lnh D kim tra li:

22
-d 200
17E1:0200 14 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17E1:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Nhp on chơng trình vào:
-a cs:100
17E1:0100 mov dx,200
17E1:0103 mov ah,0a
17E1:0105 int 21
17E1:0107
Thc thi và nhp th 1 chui:
-g=100 107
Kim tra li vùng nh DS:202:
-D DS:200
Xem s ký t ã nhp cha trong byte % a ch& DS:201
4.2.3. Hàm xut ký t INT 21h/AH=2
• Hin th ký t có mã ASCII cha trong DL ra màn hình
• Gi vi: AH=2
DL = Mã ASCII ca ký t mun xut
INT 21h
• Tr tr v: không có
• Chú ý: Các ký t c bit
o Ký t có mã ASCII 41h : ‘A’
Nh vy 42h là ‘B’, 43h là ‘C’ …
o Ký t có mã ASCII 61h : ‘a’
o Ký t có mã ASCII là 0Ah: xung dòng
o Ký t có mã ASCII là 0Dh: v u dòng
• Bài tp thc hành: Th hàm này bng trình debug
Ví d: In ra màn hình ký t ‘A’
MOV AH,2
MOV DL,41h
INT 21h
Ví d: Phát ting Beep
MOV AH,2
MOV DL,7
INT 21h

