10
Bài 2: Các thao tác x lý chương trình vi công c Debug
2.1. Nhp đon chương trình bng mã gi nh (lnh A)
Cú pháp: A [address]
Ý nghĩa: Nhp đon mã gi nh vào b nh địa ch address
Ví d: Nhp đon chương trình sau vào vùng nh 0B17:0100
MOV AX,500H
MOV BX,16H
ADD AX,BX
-a 0B17:100
0B17:0100 MOV AX,500
0B17:0103 MOV BX, 16
0B17:0106 ADD AX,BX
0B17:0108
-
Lưu ý: - Nếu địa ch ch gm thành phn Offset thì Segment mc định là ni dung ca thanh ghi
CS
- H cơ s mc định được s dng là 16 nên không cn thêm hu t H cui giá tr hng
(500H
500; 16H
16)
- Da vào địa ch cui cùng có th tính đưc kích thước ca đon chương trình va nhp
(Trong ví d trên, đon chương trình có kích thước 8 byte)
2.2. Xem đon chương trình trong b nh dng mã gi nh (lnh U)
Cú pháp: U [range]
Ý nghĩa: Xem dưới dng mã gi nh mt đon chương trình nm trong b nh
Ví d: Xem đon chương trình đã nhp phn trên vùng nh 0B17:0100
Xem bt đầu t địa ch 0B17:0100, chiu dài 8 byte :
-u 0B17:100 L 8
0B17:0100 B80005 MOV AX,0500
0B17:0103 BB1600 MOV BX,0016
0B17:0106 01D8 ADD AX,BX
Hoc xem bt đầu t địa ch 0B17:0100 đến đa ch 0106 :
-u 0B17:100 106
0B17:0100 B80005 MOV AX,0500
0B17:0103 BB1600 MOV BX,0016
0B17:0106 01D8 ADD AX,BX
Hoc xem t địa ch 0B17:0100:
-u 0B17:0100
0B17:0100 B80005 MOV AX,0500
0B17:0103 BB1600 MOV BX,0016
0B17:0106 01D8 ADD AX,BX
0B17:0108 6C DB 6C
0B17:0109 6F DB 6F
0B17:010A 48 DEC AX
0B17:010B 65 DB 65
0B17:010C 6C DB 6C
11
0B17:010D 6C DB 6C
0B17:010E 6F DB 6F
0B17:010F 48 DEC AX
0B17:0110 0000 ADD [BX+SI],AL
0B17:0112 0000 ADD [BX+SI],AL
0B17:0114 0000 ADD [BX+SI],AL
0B17:0116 0000 ADD [BX+SI],AL
0B17:0118 0000 ADD [BX+SI],AL
0B17:011A 0000 ADD [BX+SI],AL
0B17:011C 0000 ADD [BX+SI],AL
0B17:011E 0000 ADD [BX+SI],AL
Xem dưới dng mã nh phân:
-d 0B17:0100
0B17:0100 B8 00 05 BB 16 00 01 D8-6C 6F 48 65 6C 6C 6F 48 ........loHelloH
0B17:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0B17:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0B17:0130 6C 6F 48 65 6C 6C 6F 48-65 6C 6C 6F 48 65 6C 6C loHelloHelloHell
0B17:0140 6F 48 65 6C 6C 6F 48 65-6C 6C 6F 48 65 6C 6C 6F oHelloHelloHello
0B17:0150 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3
0B17:0160 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3
0B17:0170 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3
-d 0B17:0100 L8
0B17:0100 B8 00 05 BB 16 00 01 D8 ........
2.3. Thc thi đon chương trình trong b nh (lnh G, P, T)
Cú pháp: G [=address] [addresses]
Ý nghĩa: Thc thi đon chương trình trong b nh bt đầu t địa ch [=address] đặt các đim
dng (breakpoints) trong tham s [addresses]
Cú pháp: T [=address] [number]
Ý nghĩa: Thc thi [number] lnh bt đầu t địa ch [=address] và dng li.
Cú pháp: P [=address] [number]
Ý nghĩa: Tương t lnh T, tuy nhiên các lnh gi chương trình con, lnh lp, gi ngt được xem
như 1 lnh và thc thi qua mt bước.
Ví d: Nhp đon chương trình sau vào vùng nh bt đầu địa ch 0B17:0100 và thc thi. Cho
biết ni dung các thanh ghi AX,BX,CX sau khi thc thi xong chương trình
MOV AX,516h
MOV BX,1
XCHG BH,BL
MOV CX, AX
XCHG AL,BL
Nhp bt đầu t địa ch 0B17:0100:
-a 0b17:100
0B17:0100 MOV AX,516
0B17:0103 MOV BX,1
0B17:0106 XCHG BH,BL
0B17:0108 MOV CX,AX
0B17:010A XCHG AL,BL
0B17:010C
Thc thi t địa ch 0B17:0100 đến 0B17:010C
-g=0b17:100 0b17:010C
12
AX=0500 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010C NV UP EI PL NZ NA PO NC
0B17:010C 0000 ADD [BX+SI],AL DS:0116=00
Thc thi tng lnh t địa ch 0B17:0100 (5 lnh)
-t 0B17:0100
AX=0516 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0103 NV UP EI PL NZ NA PO NC
0B17:0103 BB0100 MOV BX,0001
-t
AX=0516 BX=0001 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0106 NV UP EI PL NZ NA PO NC
0B17:0106 86FB XCHG BH,BL
-t
AX=0516 BX=0100 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0108 NV UP EI PL NZ NA PO NC
0B17:0108 89C1 MOV CX,AX
-t
AX=0516 BX=0100 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010A NV UP EI PL NZ NA PO NC
0B17:010A 86C3 XCHG AL,BL
-t
AX=0500 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010C NV UP EI PL NZ NA PO NC
0B17:010C 0000 ADD [BX+SI],AL
-
Bài tp: Nhp chương trình sau vào vùng nh CS:0100 và thc thi
jmp 126
db 0d,0a,"This is my first DEBUG program!"
db 0d,0a,"$"
mov ah,9
mov dx,102
int 21
int 20
Lưu ghi chương trình lên đĩa cng vi tên first.com. Chy th trên nn windows. Khi động li
Debug và np chương trình first.com vào để kim tra.
Hướng dn:
Nhp chương trình địa ch 100h (Segment mc định cha trong CS)
-A 100
CS:0100 jmp 126
CS:0102 db 0d,0a,"This is my first DEBUG program!"
CS:0123 db 0d,0a,"$"
CS:0126 mov ah,9
CS:0128 mov dx,102
CS:012B int 21
CS:012D int 20
CS:012F
Xem li chương trình t địa ch 0100h đến 012Fh, lưu ý trong vùng nh này va cha chương
trình va cha d liu
-u 100 012F
CS:0100 EB24 JMP 0126
CS:0102 0D0A54 OR AX,540A
CS:0105 68 DB 68
13
CS:0106 69 DB 69
CS:0107 7320 JNB 0129
CS:0109 69 DB 69
CS:010A 7320 JNB 012C
CS:010C 6D DB 6D
CS:010D 7920 JNS 012F
CS:010F 66 DB 66
CS:0110 69 DB 69
CS:0111 7273 JB 0186
CS:0113 7420 JZ 0135
CS:0115 44 INC SP
CS:0116 45 INC BP
CS:0117 42 INC DX
CS:0118 55 PUSH BP
CS:0119 47 INC DI
CS:011A 207072 AND [BX+SI+72],DH
CS:011D 6F DB 6F
CS:011E 67 DB 67
CS:011F 7261 JB 0182
CS:0121 6D DB 6D
CS:0122 210D AND [DI],CX
CS:0124 0A24 OR AH,[SI]
CS:0126 B409 MOV AH,09
CS:0128 BA0201 MOV DX,0102
CS:012B CD21 INT 21
CS:012D CD21 INT 20
CS:012F 0000 ADD [BX+SI],AL
Xem d liu t địa ch 102h đến 125h, để mc định Data Segment cn thay đổi thanh ghi DS cùng
giá tr vi ni dung thanh ghi CS
-r ds
DS 17E1
:
-d 102 125
DS:0100 0D 0A 54 68 69 73-20 69 73 20 6D 79 20 66 ..This is my f
DS:0110 69 72 73 74 20 44 45 42-55 47 20 70 72 6F 67 72 irst DEBUG progr
DS:0120 61 6D 21 0D 0A 24 am!..$
Thc thi chương trình:
-g=100
This is my first DEBUG program!
Program terminated normally
-
Ghi vào file first.com
-N C:\first.com
-r bx
BX 0000
:
-r cx
CX 0000
:2f
-w 100
Writing 0002F bytes
-
Thoát và chy li chương trình debug, np li first.com lên b nh
-N C:\first.com
-L 100
Xem ni dung va np:
14
-d 100
17F2:0100 EB 24 0D 0A 54 68 69 73-20 69 73 20 6D 79 20 66 .$..This is my f
17F2:0110 69 72 73 74 20 44 45 42-55 47 20 70 72 6F 67 72 irst DEBUG progr
17F2:0120 61 6D 21 0D 0A 24 B4 09-BA 02 01 CD 21 CD 20 00 am!..$......!. .
17F2:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17F2:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17F2:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17F2:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
17F2:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
Thc thi th:
-g=100
This is my first DEBUG program!
Program terminated normally
-