Tải bản đầy đủ (.pdf) (30 trang)

Cấu trúc Máy tính và Lập trình Assembly - Chương 3 docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (10.86 MB, 30 trang )

7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 1
1
CH
CH
Ư
Ư
ƠNG TRÌNH GỢ RO
ƠNG TRÌNH GỢ RO
Á
Á
I DEBUG
I DEBUG
Dòch
Dòch
đư
đư
ơ
ơ
ï
ï
c 1 ch
c 1 ch
ư
ư
ơng tr
ơng tr
ì
ì


nh nga
nh nga
é
é
n
n
Mục tiêu
Xem ca
Xem ca
ù
ù
c thanh ghi va
c thanh ghi va
ø
ø


ø
ø
cu
cu
û
û
a CPU
a CPU
Xem s
Xem s


thay

thay
đ
đ
o
o
å
å
i no
i no
ä
ä
i dung cu
i dung cu
û
û
a ca
a ca
ù
ù
c bie
c bie
á
á
n
n
Do
Do
ø
ø
t

t
ì
ì
m trò ơ
m trò ơ
û
û
da
da
ï
ï
ng nhò phân hoa
ng nhò phân hoa
ë
ë
c ASCII trong bo
c ASCII trong bo
ä
ä
nhơ
nhơ
ù
ù
Hỗ
Hỗ
trơ
ï
luye
ä
n ta

ä
p vie
á
t ch
ư
ơng tr
ì
nh ba
è
ng Assembly
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 2
2
Da
Da
ï
ï
ng le
ng le
ä
ä
nh cu
nh cu
û
û
a Debug
a Debug
<mã le

<mã le
ä
ä
nh > <thông so
nh > <thông so
á
á
>
>
Trong đó mã lệnh là 1 trong các chữ A,B,C,D,E, còn thông
số thì thay đổi tùy theo lệnh.
Các thông số có thể là :
Đòa chỉ : là 1 bộ đòa chỉ đầy đủ segment : offset hay chỉ cần
offset là đủ. Segment có thể dùng tên thanh ghi.
Ex : F000:0100
DS: 200
0AF5
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 3
3
Da
Da
ï
ï
ng
ng
le
le

ä
ä
nh cu
nh cu
û
û
a Debug
a Debug
Tập tin : là 1 tham khảo tên tập tin đầy đủ, ít nhất phải có tên
tập tin.
Danh sách :
Là 1 hay nhiều trò byte hoặc chuổi cách nhau bằng dấu phẩy.
Khoảng : là 1 tham khảo đến vùng bộ nhớ
Trò : là 1 số hệ 16 có tối đa có 4 chữ số
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 4
4
Ta
Ta


p le
p le


nh cu
nh cu



a Debug
a Debug
A <Assemble> :
A <Assemble> :
cho phe
cho phe


p vie
p vie


t t
t t
ửứ
ửứ
ba
ba


n ph
n ph


m ca
m ca


c le

c le


nh maừ ma
nh maừ ma


y
y
d
d






i da
i da
ù
ù
ng gụ
ng gụ
ù
ù
i nhụ
i nhụ


.

.
A [ <
A [ <


ũa ch
ũa ch


>]
>]
Ex :
Ex :
-
-
A 100 dũch ụ
A 100 dũch ụ




ũa ch
ũa ch


CS:100h
CS:100h
-
-
A

A
dũch ụ
dũch ụ




ũa ch
ũa ch


hie
hie


n ta
n ta
ù
ù
i
i
(Debug la
(Debug la


y
y


ũa ch

ũa ch




oa
oa
ù
ù
n CS)
n CS)
-
-
A DS:2000h
A DS:2000h
dũch ụ
dũch ụ




ũa ch
ũa ch


DS:2000h
DS:2000h
7/31/2011
7/31/2011
Chuong 3 Debug

Chuong 3 Debug 5
5
T
T
h
h


du
du
ù
ù
minh ho
minh ho
ù
ù
a le
a le


nh A
nh A
Pha
Pha


i nha
i nha



p le
p le


nh va
nh va


o theo t
o theo t
ửứ
ửứ
ng do
ng do


ng mo
ng mo


t va
t va


ke
ke


t thu
t thu



c ba
c ba


ng Enter.
ng Enter.
Ke
Ke


t thu
t thu


c nha
c nha


p nha
p nha


n Enter ụ
n Enter ụ


do
do



ng tro
ng tro


ng.
ng.
Ex :
Ex :
-
-
A 100
A 100
5514:0100 MOV AH, 2
5514:0100 MOV AH, 2
5514:0102 MOV DL, 41
5514:0102 MOV DL, 41
5514:0104 INT 21H
5514:0104 INT 21H
SEGMENT OFFSET
User goỷ vaứo
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 6
6
C (Compare)
C (Compare)
So sa

So sa
ù
ù
nh 2 vu
nh 2 vu
ø
ø
ng bo
ng bo
ä
ä
nhơ
nhơ
ù
ù
va
va
ø
ø
lie
lie
ä
ä
t kê ca
t kê ca
ù
ù
c ô nhơ
c ô nhơ
ù

ù
co
co
ù
ù
no
no
ä
ä
i dung kha
i dung kha
ù
ù
c nhau.
c nhau.
Cú pháp : C <khoảng> , < đòa chỉ>
Ex : - C 100, 200, 3000 : 1000
So sánh ô nhớ DS:100h với ô nhớ 3000:1000h, ô nhớ DS:101h với
ô nhớ 3000:1001h… Cho đến ô nhớ DS :200h với ô nhớ
3000:1100h.
 So sánh 101 bytes
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 7
7
D (Dump)
D (Dump)
Hie
Hie



n no
n no


i dung bo
i dung bo


nhụ
nhụ


theo da
theo da
ù
ù
ng he
ng he


16 va
16 va


ASCII
ASCII
.
.

Caựch goùi : D <khoaỷng>
Ex : - D F000 : 0
- D ES : 100
- D 100
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 8
8
Le
Le
ä
ä
nh F (
nh F (
Fill)
Fill)
Cu
Cu
ù
ù
pha
pha
ù
ù
p : F <khoa
p : F <khoa
û
û
ng> <danh sa

ng> <danh sa
ù
ù
ch>
ch>
Công du
Công du
ï
ï
ng : la
ng : la
á
á
p
p
đ
đ
a
a
à
à
y trò va
y trò va
ø
ø
o vu
o vu
ø
ø
ng nhơ

ng nhơ
ù
ù
ngay
ngay
ta
ta
ï
ï
i
i
đ
đ
òa ch
òa ch


mong muo
mong muo
á
á
n.
n.
Trò nhập vào từng byte một theo hệ 16
Dấu trừ (-) dùng để lùi lại 1 đòa chỉ.
SPACE BAR dùng để tới 1 đòa chỉ.
ENTER để kết thúc.
7/31/2011
7/31/2011
Chuong 3 Debug

Chuong 3 Debug 9
9
Minh ho
Minh ho
ï
ï
a le
a le
ä
ä
nh
nh
F
F
La
La
é
é
p
p
ñ
ñ
a
a
à
à
y vu
y vu
ø
ø

ng nhô
ng nhô
ù
ù
ta
ta
ï
ï
i
i
ñ
ñ
òa ch
òa ch
æ
æ
offset 100h
offset 100h
chuo
chuo
å
å
i
i


Toi dua em sang song
Toi dua em sang song



.
.
F 100 “TOI DUA EM SANG SONG”
OFFSET 100H
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 10
10
KE
KE
Á
Á
T QUA
T QUA
Û
Û
-F 100 "TOI DUA EM SANG SONG"
-D 100
0ADD:0100 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 TOI DUA EM SANG
0ADD:0110 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI DUA EM S
0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 ANG SONGTOI DUA
0ADD:0130 45 4D 20 53 41 4E 47 20-53 4F 4E 47 54 4F 49 20 EM SANG SONGTOI
0ADD:0140 44 55 41 20 45 4D 20 53-41 4E 47 20 53 4F 4E 47 DUA EM SANG SONG
0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 TOI DUA EM SANG
0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI DUA EM S
0ADD:0170 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 ANG SONGTOI DUA
7/31/2011
7/31/2011
Chuong 3 Debug

Chuong 3 Debug 11
11
D (DUMP)
D (DUMP)
Mục đích : in nội dung bộ nhớ trong MT ra màn hình dưới dạng số hex.
Cú pháp : D [ address]
D [range]
Ex : in nội dung vùng nhớ đã lắp đầy ở ví dụ trước ở đòa chỉ
100h
Ex2 : xem nội dung vùng nhớ 16 bytes bắt đầu ở đòa chỉ F000:100
- D F000:100 L10
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 12
12
Th
Th


du
du
ù
ù
minh ho
minh ho
ù
ù
a le
a le



nh
nh
D
D


a
a


nh va
nh va


o le
o le


nh D
nh D


e
e


xem no
xem no



i dung vu
i dung vu


ng nhụ
ng nhụ


cu
cu


a 30h bytes bo
a 30h bytes bo


nhụ
nhụ


t
t
ửứ
ửứ


ũa ch
ũa ch



0000:0040
0000:0040


e
e


n 0000:006F
n 0000:006F
- D 0000:0040 006F
ẹũa chổ baột ủau
- D 0000:0040 L 30
Soỏ bytes
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 13
13
E (ENTER)
E (ENTER)
Du
Du
ø
ø
ng
ng
đ

đ
e
e
å
å
đư
đư
a d
a d
ư
ư
õ lie
õ lie
ä
ä
u byte va
u byte va
ø
ø
o bo
o bo
ä
ä
nhơ
nhơ
ù
ù
ngay
ngay
ta

ta
ï
ï
i
i
đ
đ
òa ch
òa ch


mong muo
mong muo
á
á
n.
n.
Cách gọi :
- E <đòa chỉ> <danh sách>
Trò nhập vào theo dạng số 16 từng byte một
Dấu - dùng để lùi lại 1 đòa chỉ
Space Bar dùng để tới 1 đòa chỉ
Enter dùng để kết thúc
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 14
14
Minh ho
Minh ho

ï
ï
a le
a le
ä
ä
nh E
nh E
Mu
Mu
ï
ï
c d
c d
í
í
ch : thay
ch : thay
đ
đ
o
o
å
å
i no
i no
ä
ä
i dung bo
i dung bo

ä
ä
nhơ
nhơ
ù
ù
.
.
Cú pháp : - E [address] [ list]
Ex : thay đổi 6 bytes bắt đầu ở đòa chỉ 100 thành “ABCDE”
- E 100 “ABCDE”
Debug la
á
y
đ
oa
ï
n ch


û
i DS
Ne
á
u ta không qui
đ
ònh
đ
òa ch


đ
oa
ï
n
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 15
15
Le
Le


nh U (Unassemble)
nh U (Unassemble)
coõng du
coõng du
ù
ù
ng : in ra 32 bytes maừ ma
ng : in ra 32 bytes maừ ma


y cu
y cu


a
a
ch

ch


ụng tr
ụng tr


nh trong bo
nh trong bo


nhụ
nhụ


ra ma
ra ma


n h
n h


nh d
nh d







i
i
le
le


nh gụ
nh gụ
ù
ù
i nhụ
i nhụ


.
.
cu
cu


pha
pha


p : U [address]
p : U [address]
U [range]
U [range]
Ex : U 100 119

In ra ma

n h

nh ca

c le

nh maừ ma

y t
ửứ

ũa
ch

CS:100

e

n CS:119
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 16
16
Le
Le



nh R (Register)
nh R (Register)
Coõng du
Coõng du
ù
ù
ng : xem va
ng : xem va


s
s
ửỷ
ửỷ
a no
a no


i dung thanh ghi.
i dung thanh ghi.
Cu
Cu


pha
pha


p :
p :

-
-
R enter (xem ta
R enter (xem ta


t ca
t ca


thanh ghi)
thanh ghi)
xem thanh ghi AX :
xem thanh ghi AX :
-
-
R AX
R AX
xem thanh ghi cụ
xem thanh ghi cụ


: R F
: R F
Ex : muo
Ex : muo


n ba
n ba



t thanh ghi cụ
t thanh ghi cụ


CF va
CF va


ZF ta nha
ZF ta nha


p
p
CY va
CY va


ZR.
ZR.
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 17
17
Le
Le
ä

ä
nh N (Name)
nh N (Name)
Coâng du
Coâng du
ï
ï
ng : ta
ng : ta
ï
ï
o ta
o ta
ä
ä
p tin ca
p tin ca
à
à
n
n
ñ
ñ
o
o
ï
ï
c hay ghi tr
c hay ghi tr
ö

ö
ô
ô
ù
ù
c
c
khi du
khi du
ø
ø
ng le
ng le
ä
ä
nh L hay W.
nh L hay W.
Cu
Cu
ù
ù
pha
pha
ù
ù
p :
p :
-
-
N <teân file> [ thoâng so

N <teân file> [ thoâng so
á
á
] L [
] L [
ñ
ñ
òa ch
òa ch
æ
æ
]
]
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 18
18
Th
Th
í
í
du
du
ï
ï
minh ho
minh ho
ï
ï

a le
a le
ä
ä
nh
nh
N
N
Ex : tạo tập tin Love.txt .
Dùng lệnh R để xác đònh vùng đòa chỉ dành cho User.
Dùng lệnh để đưa câu thông báo “ I love you more than I
can say’ ở đòa chỉ 2000:100.
Dùng lệnh D để kiểm tra vùng nhớ tại đòa chỉ 2000:100.
Dùng lệnh N để đặt tên tập tin trên đóa.
- N Love.txt
Dùng lệnh R để đònh số byte cần thiết ghi lên đóa trong 2
thanh ghi BX và CX. Cụ thể trong trường hợp này số
byte cần ghi là 1Eh byte.
BX = 0000 CX = 1E
Dùng lệnh W 2000:100 để ghi dữ liệu đã nhập vào tập tin
ở đòa chỉ bộ nhớ 2000:100.
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 19
19
Thoa
Thoa



t kho
t kho


i Debug va
i Debug va


go
go
ù
ù
i la
i la
ù
ù
i ta
i ta


p tin
p tin
theo ca
theo ca


ch sau :
ch sau :
C :
C :

\
\
> Debug Love.txt
> Debug Love.txt
t
t


m xem Debug
m xem Debug


aừ na
aừ na
ù
ù
p ta
p ta


p tin Love.txt
p tin Love.txt
va
va


o choó na
o choó na



o trong bo
o trong bo


nhụ
nhụ


.
.
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 20
20
Le
Le
ä
ä
nh W (Write)
nh W (Write)
Cu
Cu
ù
ù
pha
pha
ù
ù
p : W [address]

p : W [address]
Thường được sử dụng chung với lệnh N
Ex : tạo tập tin có tên Love.txt
Bước 1 : dùng lệnh E để đưa câu ‘I love you more than I can say” vào ô nhớ ở đòa chỉ
100.
Bước 2 : dùng lệnh D để kiểm tra lại đòa chỉ 100
Bước 3 : dùng lệnh N để đặt tên tập tin : - N Love.txt
Bước 4 : dùng lệnh R để đònh số byte cần ghi lên đóa trong 2 thanh ghi BX và CX. (BX
chứa 16 bit cao, CX chứa 16 bit thấp).
đây số byte cần ghi là 1Eh.
Bước 5 : dùng lệnh W để ghi câu trên đã nhập vào vùng nhớ có đòa chỉ bắt đầu là 100.
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 21
21
Le
Le
ä
ä
nh T (Trace)va
nh T (Trace)va
ø
ø
P
P
cu
cu
ù
ù

pha
pha
ù
ù
p :
p :
-
-
T [= <
T [= <
đ
đ
ia
ia
ï
ï
ch
ch


>][so
>][so
á
á
la
la
à
à
n]
n]

Mục đích : dùng để chạy 1 hay nhiều lần các lệnh
trong bộ nhớ
Ex : - T = 3000:1000
Ex : - T = 3000:1000 <số lần>
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 22
22
Le
Le
ä
ä
nh L (Load)
nh L (Load)
na
na
ï
ï
p ta
p ta
ä
ä
p tin hoa
p tin hoa
ë
ë
c na
c na
ï

ï
p sector lua
p sector lua
ä
ä
n
n
ly
ly
ù
ù
t
t


đó
đó
a va
a va
ø
ø
o bo
o bo
ä
ä
nhơ
nhơ
ù
ù
.

.
Cú pháp : - L <đòa chỉ> [<đóa> <sector><số>]
Dạng 1 : nếu chỉ có đòa chỉ dùng để nạp tập tin.
Tên tập tin phải được gán trước bằng lệnh N.
Tập tin luôn luôn được gán ở đòa chỉ offset 100h
Dạng 2 : nếu có đầy đủ các thông số , dùng để đọc sector
luận lý trên đóa vào bộ nhớ.
Đóa : = 0 ổ đóa A, =1 ổ đóa B, =2 ổ đóa C ….
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 23
23
Le
Le
ä
ä
nh H (Hex Arithmethic)
nh H (Hex Arithmethic)
th
th


c hie
c hie
ä
ä
n phe
n phe
ù

ù
p co
p co
ä
ä
ng va
ng va
ø
ø
tr
tr


he
he
ä
ä
16
16
Cú pháp : - H <trò 1> <trò 2>
Kết quả : hiện ra tổng và hiệu của trò 1 và trò 2
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 24
24
Le
Le



nh S (Search)
nh S (Search)
Coõng du
Coõng du
ù
ù
ng : t
ng : t


m kie
m kie


m trũ trong 1 vu
m trũ trong 1 vu


ng bo
ng bo


nhụ
nhụ


.
.
Cu
Cu



pha
pha


p :
p :
-
-
S <khoa
S <khoa


ng> <danh sa
ng> <danh sa


ch>
ch>
Gia
Gia


i th
i th


ch : t
ch : t



m kie
m kie


m trũ co
m trũ co


hie
hie


n die
n die


n trong vu
n trong vu


ng bo
ng bo


nhụ
nhụ





aừ ch
aừ ch




ũnh hay khoõng? Ne
ũnh hay khoõng? Ne


u co
u co


Debug hie
Debug hie


n ca
n ca


c
c


ũa ch
ũa ch





a
a


u cu
u cu


a nh
a nh


ừng nụi co
ừng nụi co


ch
ch
ửự
ửự
a danh sa
a danh sa


ch.
ch.

Ex :
Ex :
-
-
S 100 L 1000
S 100 L 1000


DOS
DOS


18AF : 0154
18AF : 0154
18AF : 0823
18AF : 0823
Ex2 :
Ex2 :
-
-
S 2000 2200 13,15,8A, 8
S 2000 2200 13,15,8A, 8
7/31/2011
7/31/2011
Chuong 3 Debug
Chuong 3 Debug 25
25
Le
Le



nh M (Move)
nh M (Move)
Coõng du
Coõng du
ù
ù
ng : che
ng : che


p no
p no


i dung vu
i dung vu


ng nhụ
ng nhụ




e
e


n 1

n 1


ũa ch
ũa ch


kha
kha


c.
c.
Cu
Cu


pha
pha


p :
p :
-
-
M <khoa
M <khoa


ng>

ng>
Ex :
Ex :
-
-
M 100 105 200
M 100 105 200
Che
Che


p 5 bytes t
p 5 bytes t
ửứ
ửứ
DS:100
DS:100


e
e


n DS:200
n DS:200
Ex2 :
Ex2 :
-
-
M CS:100 L 50 ES:300

M CS:100 L 50 ES:300
Che
Che


p 50 bytes t
p 50 bytes t
ửứ
ửứ
CS:100
CS:100


e
e


n ES:300
n ES:300

×