㈠ 電腦XP系統怎麼使用debug查看內存和匯編指令
簡單介紹下debug查看內存中的機器碼,已經查看匯編指令的方法。
-r 參數用來查看CPU中寄存器的值,以及改變寄存器的值。
至於那些神馬AX,BX,CX,DX的都不用說了,CS跟IP更不用說了,指向了要執行的下一條指令。
可以用-r cs或者-r ip來改變它們的值。如圖:
這樣我們就可以讓CS:IP指向我們希望的指向內存地址,從而可能執行我們預先在該地址存放好的代碼。
-D命令:用來查看內存中的值。比如:
如圖:最左邊的是內存的地址,用基地址:偏移量的方式給出,中間存放的是內存中的機器碼,一行剛好15個位元組,而最右邊則是對這些數據敵對應的可顯示的ASCII字元,對於沒有的,則用.代替。所以如果想看一下,右邊輸出hello之類的 東西,則可以向指令裡面寫如這些字元的ASCII碼。
-E命令:改寫內存中的內容。上面已經說到了,下面我們來試試,用E改變CS:IP裡面存放的指令。
如圖:使用' 『的格式就可以向裡面輸入字元了,右邊出現了字元hello,所以我們可以認為中間的數據就是對應字元的ASCII碼,我們之所以看到h是68,那是因為這是十六進制的數據,h真正的ASCII碼應該是6*16+8=104,所以是吻合的。比如我們像內存裡面寫入:61(也就是6*16=97)
而0到9幾個數字ASCII碼的十六機制剛好是3x,也就是48+x.這點必須的搞清楚。
好,搞了這么長時間的E命令,我們在看看U命令,它用來查看機器碼對應的匯編代碼。比如:
可以看到十六進制的61對應的匯編還是61?所以我們可以用-e寫入機器碼,然後用-u來查看匯編指令。
-A:以匯編的形式向內存寫入指令。比如:
還有一個命令就是-t,也就是執行,不多說了。
㈡ 系統如何調用debug查看CPU匯編指令和內存
Debug是DOS(Disk Operating System,磁碟操作系統)、windows提供的實模式(8086方式)程序的調試工具。使用它,可以查看CPU各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序的運行。
查看更詳細的介紹DEBUG網路
一般我們常用到的Debug參數:
r命令查看、修改CPU寄存器的內容;
d命令查看內存中的內容;
e命令改寫內存中的內容;
u命令將內存中的機器指令翻譯成匯編指令;
t命令執行一條機器指令;
a命令以匯編指令的格式在內存中寫入一條機器指令。
打開界面如下:
將debug.exe拷貝到D盤(某盤根目錄),在DOSBOX中輸入「mount c D:\」命令(此命令輸入後有「Drive C is mounted as local directory d:\」,再輸入「c:」回車。然後輸入debug,結果如下:
例如輸入u可以查看系統的匯編指令,一直輸入u會列出系統所有的匯編指令。如下圖所示:
㈢ 匯編語言怎麼在寫進DOS
-A 匯編語句命令
-C 儲存器內容比較
-D 顯示儲存器內容
-E 修改儲存器內容
-F 修改儲存塊內容
-G 按預選斷點執行
-H 十六進制加減計算
-I 讀\寫輸入位元組
-L 裝入絕對文件或磁碟扇區
-M 定義文件參數
-N 定義文件參數
-O 向埠port發出從指定地址開始的byte個位元組數據
-Q 結束調試程序
-R 顯示寄存器\標志位內容
-S 對字元檢索
-T 執行和顯示跟蹤
-U 反匯編命令
-W 寫文件或絕對磁碟扇區
Debug-PC之開山老祖
Debug 原意是殺蟲子。這里是機器調試工具。
其實,Debug的由來,還有一則趣聞,在早期美國的一計算機房中,科學家正在緊張的工作。同時,許多台大型的計算機也在不停的運行著。大概是由於,機器過熱,引來許的小蟲子,以至於,計算機無法正常運行。科學們,只好停下來,捉蟲子...蟲子捉完了,計算機運行也正常了,後來,這個名詞就沿用至今了....
雖然,現在好的軟體越來越多了,但是有些,我們只需動手,用Debug就可解決,且快而好!接下來,我們就一起學習Debug在各方面的運用吧!(在殺毒、加解密、系統...)下面我和大家一起學習一些,Debug的用法,雖然,現在好的軟體越來越多了,但是有些,我們只需動手,用Debug就可解決,且快而好!
Debug常用命令集
名稱 解釋 格式
a (Assemble) 逐行匯編 a [address]
c (Compare) 比較兩內存塊 c range address
d (Dump) 內存16進制顯示 d [address]或 d [range]
e (Enter) 修改內存位元組 e address [list]
f (fin) 預置一段內存 f range list
g (Go) 執行程序 g [=address][address...]
h (Hexavithmetic) 制算術運算 h value value
i (Input) 從指定埠地址輸入 i pataddress
l (Load) 讀盤 l [address [driver seetor]]
m (Move) 內存塊傳送 m range address
n (Name) 置文件名 n filespec [filespec...]
o (Output) 從指定埠地址輸出 o portadress byte
q (Quit) 結束 q
r (Register) 顯示和修改寄存器 r [register name]
s (Search) 查找位元組串 s range list
t (Trace) 跟蹤執行 t [=address] [value]
u (Unassemble) 反匯編 u [address ]或range
w (Write) 存檔 w [address[driver sector secnum]]
? 聯機幫助 ?
㈣ 跪求匯編語語言命令詳解
哈哈,太多了
匯編命令詳解
名稱 解釋 格式
a (Assemble) 逐行匯編 a [address]
c (Compare) 比較兩內存塊 c range address
d (Dump) 內存16進制顯示 d [address]或 d [range]
e (Enter) 修改內存位元組 e address
f (fin) 預置一段內存 f range list
g (Go) 執行程序 g [=address][address...]
h (Hexavithmetic) 制算術運算 h value value
i (Input) 從指定埠地址輸入 i pataddress
l (Load) 讀盤 l [address [driver seetor>
m (Move) 內存塊傳送 m range address
n (Name) 置文件名 n filespec [filespec...]
o (Output) 從指定埠地址輸出 o portadress byte
q (Quit) 結束 q
r (Register) 顯示和修改寄存器 r [register name]
s (Search) 查找位元組串 s range list
t (Trace) 跟蹤執行 t [=address] [value]
u (Unassemble) 反匯編 u [address ]或range
w (Write) 存檔 w [address[driver sector secnum>
? 聯機幫助 ?
debug小匯編a命令
debug小匯編a命令是一個很有用的功能,許多的小程序都要他來做。
編一些小程序比匯編要來得方便,快潔。
在Debug中,中斷是非常有用的,首先,讓我們先了解一下中斷。
所謂中斷,其實,就是,當你做某事時,有人過來找你有其他事,你先放下手中的事(計算機中,稱為保護現場)
,再去與叫你的那個人辦事去,等完了,你又回,接著做剛才的事。這是個很通俗的講法。
計算機在運行時,也會出現這種情況,我們叫之中斷。
下面是他的一些常用中斷向量的入口值詳解:(記住哦,很用的...呵呵)
IBM PC 中斷 int10
ooH 屏幕方式設置
入口:AH=0,AL=顯示方式代碼(0--6)
0:40*25 黑白
1:40*25 彩色
2:80*25 黑白
3:80*25 彩色文本
4:320*200 彩色
5:320*200 黑白
6:640*200 黑白圖形模式
7:80*25 單色字元(單色顯示器)
0BH 色彩設置
入口:AH=0B,BL=0 設背景色,BH=0--15 BL=1 設調色碼,BH=0--1
0CH 寫圖形點
入口:AH=0C,CX:DX=列號:行號,AL=顏色
ODH 讀圖形點
入口:AH=0D,CX:DX=列號:行號
返回:AL=顏色
0EH 在當前頁、當前游標處寫字元
入口:AH=0E,AL=字元的ASCII碼,BL=前景色
OFH 顯示器狀態
入口:AH=0F
返回:AL=當前顯示器方式,AH=屏幕列數,BH=當前頁號
01H 游標設置
入口:AH=1,CH=游標起始行號(00--0C),CL=游標結束行號(00--0C)
註:CH > CL
02H 游標定位
入口:AH=2,BH=頁號,DH:DL=起始行:列
03H 讀游標位置
入口:AH=3,BH=頁號。
返回:DH:DL=起始行:列
06H 窗口上卷
入品:AH=6,AL=窗口上卷行數,CH:CL-DH:DL 窗口坐標
註:AL=0 卷動整個窗口
07H 窗口下卷
入口:AH=7,AL=窗口下卷行數,CH:CL-DH:DL 窗口坐標
08H 讀當前游標處字元和屬性
入口:AH=8,BH=頁號。
返回:AH:AL=字元的顏色:字元的ASCII碼
註:顏色代碼見下對照表
09H:在當前游標處寫字元和屬性
註:游標不下移
入口:AH=9,BH=頁號,BL:AL=字元的顏色:字元的ASCII碼,CX=重復次數
1 2 3 4 5 6 7 8
BL R G B I R G B
閃爍 字元底色 加亮 字元顏色
中斷向量號表
中斷號 解釋 中斷號 解釋
0 除數為0錯 19 引導裝入程序
1 音步中斷 1A 日時調用
2 不可屏蔽中斷NMI 1B 鍵盤阻斷時得到控制權
3 斷電中斷(CCH) 1C 時鍾中斷時得到控制權
4 溢出中斷 1D 指向CRT初始參數表
5 屏幕列印中斷 1E 指向盒帶參數表
6-7 保留 1F 1KB圖形模式
8 計時器中斷(18.2秒) 20 結束DOS程序
9 鍵盤中斷 21 DOS功能調用
A-D 保留 22 結束地址(建義用EXEC)
E 軟盤機中斷 23 DOS Crtl-Break退出地址
F 保留 24 DOS致命錯向量
10 屏幕I/O調用 25 DOS絕對磁碟讀
11 設備檢查調用 26 DOS絕對磁碟寫
12 存儲器檢查調用 27 結束程序並駐留(建義用31h)
13 軟盤機I/O調用 28-3F DOS保留
14 RS-233I/O調用 40-7F 未用
15 盒帶機I/O調用 80-85 BASIC保留
16 鍵盤I/O調用 86-F0 BASIC解釋程序用
17 列印機I/O調用 F1-FF 未用
18 ROM-BASIC入口
指令名詳解
call 指令(過程調用)(控制指令-長轉移)
詳解:
段內直接調用
段內間接調用(寄存器)
段內間接調用(存儲器)
段間直接調用
段間間接調用
指令名
jmp 指令(無條件轉移指令)(控制指令-長轉移)
詳解:
段內直接跳轉
短段內直接跳轉
段內間接跳轉(寄存器)
段內間接跳轉(存儲器)
段間直接跳轉
段間間接跳轉
指令名
ret 指令(過程返回)(控制指令-長轉移)
詳解:
段內返回
段內返回立即數加於sp
段間返回
段間返回立即數加於sp
na/jnbe 指令(控制指令-短轉移) 不小於或不等於時轉移
jae/jnb 指令 (控制指令-短轉移) 大於或等於時轉移
jb/jnae 指令 (控制指令-短轉移) 小於轉移
jbe/jna 指令 (控制指令-短轉移) 小於或等 於轉移
jg/jnle 指令(控制指令-短轉移) 大於轉移
jge/jnl 指令 (控制指令-短轉移) 大於或等於轉移
jl/jnge 指令 (控制指令-短轉移) 小於轉移
jle/jng 指令 (控制指令-短轉移) 小於或等 於轉移
je/jz 指令 (控制指令-短轉移) 等於轉移
jne/jnz 指令 (控制指令-短轉移) 不等於轉移
jc 指令 (控制指令-短轉移) 有進位時轉移
jnc 指令 (控制指令-短轉移) 列進位時轉移
jno 指令 (控制指令-短轉移) 不溢出時轉移
jnp/jpo 指令 (控制指令-短轉移) 奇偶性為奇數時轉移
jns 指令 (控制指令-短轉移) 符號位為"0"轉移
jo 指令 (控制指令-短轉移) 溢出轉移
jp/jpe 指令 (控制指令-短轉移) 奇偶性為偶數時轉移
js 指令 (控制指令-短轉移) 符號位為"1"時轉移
loop 指令 (循環控制指令-短轉移) cx 不為0時循環
loope/loopz 指令 (循環控制指令-短轉移) cx 不為0且標志 z=1 時循環
loopne/loopnz 指令 (循環控制指令-短轉移) cx 不為0且標志 z=0 時循環
jcxz 指令 (循環控制指令-短轉移) cx 為0時轉移
★int 指令 (中斷指令) 中斷指令(後詳解)
into 指令 (中斷指令) 溢出中斷
iret 指令 (中斷指令) 中斷返回
指令名
shl 指令(邏輯左移)
sal 指令(算術左移)
shr 指令(邏輯右移)
sar 指令(算術右移) 寄存器,1
rol 指令(循環左移) 寄存器,cl
ror 指令(循環右移) 存儲器,1
rcl 指令(通過進位的循環左移)存儲器,cl
rcr 指令(通過進位的循環右移)(邏輯運算)
not 指令(取反運算)寄存器求反
(邏輯運算)存儲器求反
and 指令(與運算) (邏輯運算)
寄存器 and 寄存器 寄存器
寄存器 and 存儲器 寄存器
存儲器 and 寄存器 存儲器
立即數 and 存儲器 存儲器
立即數 and 累加器 累加器
or 指令(或運算)(邏輯運算)
寄存器 or 寄存器 寄存器
寄存器 or 存儲器 寄存器
存儲器 or 寄存器 存儲器
立即數 or 存儲器 存儲器
立即數 or 累加器 累加器
test 指令(測試) (邏輯運算)
寄存器 test 寄存器
寄存器 test 存儲器
寄存器 test 立即數
存儲器 test 立即數
累加器 test 立即數
movs 指令(串傳送)(字元串操作指令)
單個傳送
重復傳送
cmps 指令(串比較) (字元串操作指令)
單個比較
重復比較
scas 指令(串掃描)(字元串操作指令)
單個搜索
重復搜索
lods 指令(裝入串)
(字元串操作指令)
單個裝載
重復裝載
stos 指令(保存串) (字元串操作指令)
單個存儲
重復存儲
mov 指令(傳送字或位元組)(數據傳送命令)
寄存器與寄存器間傳送
存儲器與寄存器間傳送
立即數傳送給存儲器
立即數傳送給寄存器
存儲器傳送給累加器
累加器傳送存儲器
寄存器傳送給段寄存器
存儲器傳送給段寄存器
段寄存器傳送給寄存器
段寄存器傳送給存儲存器
pop 指令(把字彈出堆棧) (數據傳送命令)
push 指令(把字壓入堆棧)
存儲器
寄存器
段寄器
xchg 指令(交換字或位元組) (數據傳送命令)
寄存器與寄存器交換
存儲器與寄存器交換
寄存器與累加器交換
in 指令(埠輸入) (數據傳送命令)
直接輸入
間接輸入
out 指令(埠輸出) (數據傳送指令)
直接輸出
間接輸出
add 指令(加法)(算術指令)
adc 指令(帶進位加法)
寄存器+寄存器 寄存器
寄存器+存儲器 寄存器
存儲器+寄存器 存儲器
立即數+存儲器 存儲器
立即數+累加器 累加器
inc 指令(加1)(算術指令)
存儲器增量
寄存器增量
sub 指令(減法) (算術指令)
sbb 指令(帶借位減法)
寄存器-寄存器 寄存器
寄存器-存儲器 寄存器
存儲器-寄存器 存儲器
立即數-存儲器 存儲器
立即數-累加器 累加器
dec 指令(減1)(算術指令)
存儲器減量
寄存器減量
nec 指令(求反,以0減之)
寄存器求補
存儲器求補
cmp 指令(比較)(算術指令)
寄存器與寄存器比較
寄存器與存儲器比較
寄存器與立即數比較
存儲器與立即數比較
累加器與立即數比較
mul 指令(無符號乘法) (算術指令)
imul 指令(整數乘法)
與8位寄存器相乘
與16位寄存器相乘
與8位存儲單元相乘
與16位存儲單元相乘
div 指令(無符號除法)(算術指令)
idiv 指令(整數除法)
被8位寄存器除
被16位寄存器除
被8位存儲單元除
被16位存儲單元除
Debug實戰
1.查看主板的生產日期,版本
D ffff:05
D fe00:0e
2.模擬Rest鍵功能
A
:100 jmp ffff:0000
:105
g
3.快速格式化軟盤
L 100 0 0 * '插入一張己格式化軟盤
W 100 0 0 * '放入一張欲格式化軟盤
註:* 分別為:720K e |1.2M id |1.44M 21
4.硬碟格式化兩種方法
(1)G=c800:05
(2) A 100
mov ax,0703
mov cx,0001
mov dx,0080
int 13
int 3
g 100
5.加速鍵盤
A
mov ax,0305
mov bx,0000
int 16
int 20
rcx
10
n fast.com
w
q
6.關閉顯示器(恢復時,按任意鍵)
A
mov ax,1201
mov bl,36
int 10
mov ah,0
int 16
mov ax,1200
int 10
rcx
10
n crt-of.com
w
q
7.硬碟DOS引導記錄的修復
在軟碟機中放入一張己格式化軟盤
debug
-l 100 2 0 1
-w 100 0 50 1
把軟盤放入故障機軟碟機中
debug
-l 100 0 50 1
-w 100 2 0 1
-q
8.清coms中setup口令
debug
-a
mov bx,0038
mov cx,0000
mov ax,bx
out 70,al
inc cx
cmp cx,0006
jnz 0106
int 20
-rcx
:20
-nclearpassword.com
-w
-q
註:以上適合super與dtk機,對於ast機,因為他的口令放在coms的4ch-51h地址處,只要將:mov bx,0038 改為: mov
bx,004c即可
9.取消coms的密碼(將coms數據清為初始化)
-o 70,10
-o 71,10
-g
-q
10.將硬碟主引導記錄保存到文件中
debug
-a
mov ax,0201
mov bx,0200
mov cx,0001
mov dx,0080
mov int 13
int 3
-rcx
:200
-nboot.dat
-w
-q
11.調用中斷實現重啟計算機(可以成文件)
debug
-a
int 19
int 20
-rcx
:2
-nreset.com
-w
-q
DEBUG主要命令
DEBUG是為匯編語言設計的一種高度工具,它通過單步、設置斷點等方式為匯編語言程序員提供了非常有效的調試手段。
一、DEBUG程序的調用
在DOS的提示符下,可鍵入命令:
C:\DEBUG [D:][PATH][FILENAME[.EXT>[PARM1][PARM2]
其中,文件名是被調試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲器中,用戶可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。命令中的D指定驅動器PATH為路徑,PARM1和PARM2則為運行被調試文件時所需要的命令參數。
在DEBUG程序調入後,將出現提示符,此時就可用DEBUG命令來調試程序。
二、DEBUG的主要命令
1、顯示存儲單元的命令D(DUMP),格式為:
_D[address]或_D[range]
例如,按指定范圍顯示存儲單元內容的方法為:
-d100 120
18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...
18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.
7
18E4:0120 8B
其中0100至0120是DEBUG顯示的單元內容,左邊用十六進製表示每個位元組,右邊用ASCII字元表示每個位元組,·表示不可顯示的字元。這里沒有指定段地址,D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個位元組的內容。如果完全沒有指定地址,則顯示上一個D命令顯示的最後一個單元後的內容。
2、修改存儲單元內容的命令有兩種。
·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內容表來替代指定范圍的存儲單元內容。命令格式為:
-E address
例如,-E DS:100 F3'XYZ'8D
其中F3,'X','Y','Z'和各佔一個位元組,該命令可以用這五個位元組來替代存儲單元DS:0100到0104的原先的內容
第二種格式則是採用逐個單元相繼修改的方法。命令格式為:
-E address
例如,-E DS:100
則可能顯示為:
18E4:0100 89.-
如果需要把該單元的內容修改為78,則用戶可以直接鍵入78,再按"空格"鍵可接著顯示下一個單元的內容,如下:
18E4:0100 89.78 1B.-
這樣,用戶可以不斷修改相繼單元的內容,直到用ENTER鍵結束該命令為止。
·填寫命令F(FILL),其格式為:
-F range list
例如:-F 4BA:0100 5 F3'XYZ'8D
使04BA:0100~0104單元包含指定的五個位元組的內容。如果list中的位元組數超過指定的范圍,則忽略超過的項;如果list的位元組數小於指定的范圍,則重復使用list填入,直到填滿指定的所有單元為止。
3)檢查和修改寄存器內容的命令R(register),它有三種格式如下:
·顯示CPU內所有寄存器內容和標志位狀態,其格式為:
-R
例如,-r
AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000
DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC
18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000
·顯示和修改某個寄存器內容,其格式為:
-R register name
例如,鍵入
-R AX
系統將響應如下:
AX F1F4
:
即AX寄存器的當前內容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內容,如:
-R bx
BX 0369
:059F
則把BX寄存器的內容修改為059F。
·顯示和修改標志位狀態,命令格式為:
-RF系統將響應,如:
OV DN EI NG ZR AC PE CY-
此時,如不修改其內容可按ENTER鍵,否則,可鍵入欲修改的內容,如:
OV DN EI NG ZR AC PE CY-PONZDINV
即可,可見鍵入的順序可以是任意的。
4)運行命令G,其格式為:
-G[=address1][address2[address3…>
其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。後面的地址均為斷點地址,當指令執行到斷點時,就停止執行並顯示當前所有寄存器及標志位的內容,和下一條將要執行的指令。
5)跟蹤命令T(Trace),有兩種格式:
·逐條指令跟蹤
-T [=address]
從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值。如未指定地址則從當前的CS:IP開始執行。
·多條指令跟蹤
-T [=address][value]
從指定地址起執行n條指令後停下來,n由value指定。
6)匯編命令A(Assemble),其格式為:
-A[address]
該命令允許鍵入匯編語言語句,並能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區中。必須注意:DEBUG把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其後應加以說明,如100D。
7)反匯編命令U(Unassemble)有兩種格式。
·從指定地址開始,反匯編32個位元組,其格式為:
-U[address]
例如:
-u100
18E4:0100 C70604023801 MOV WORD PTR[0204],0138
18E4:0106 C70606020002 MOV WORD PTR[0206],0200
18E4:010C C70606020202 MOV WORD PTR[0208],0202
18E4:0112 BBO4O2 MOV BX,0204
18E4:0115 E80200 CALL 011A
18E4:0118 CD20 INT 20
18E4:011A 50 PUSH AX
18E4:011B 51 PUSH CX
18E4:011C 56 PUSH SI
18E4:011D 57 PUSH DI
18E4:011E 8B37 MOV SI,[BX]
如果地址被省略,則從上一個U命令的最後一條指令的下一個單元開始顯示32個位元組。
·對指定范圍內的存儲單元進行反匯編,格式為:
-U[range]
例如:
-u100 10c
18E4:0100 C70604023801 MOV WORD PTR[0204],0138
18E4:0106 C70606020002 MOV WORD PTR[0206],0200
18E4:010C C70606020202 MOV WORD PTR[0208],0202
或
-u100 112
18E4:0100 C70604023801 MOV WORD PTR[0204],0138
18E4:0106 C70606020002 MOV WORD PTR[0206],0200
18E4:010C C70606020202 MOV WORD PTR[0208],0202
可見這兩種格式是等效的。
8)命名命令N(Name),其格式為:
-N filespecs [filespecs]
命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其後用L或W命令把文件裝入存檔。filespecs的格式可以是:
[d:][path] filename[.ext]
例如,
-N myprog
-L
-
可把文件myprog裝入存儲器。
9)裝入命令(Load),有兩種功能。
·把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中。其格式為:
-L[address[drive sector sector]
·裝入指定文件,其格式為:
-L[address]
此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區中。
10)寫命令W(Write),有兩種功能。
·把數據寫入磁碟的指定扇區。其格式為:
-W address drive sector sector
·把數據寫入指定的文件中。其格式為:
-W[address]
此命令把指定的存儲區中的數據寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數據從CS:0100開始。要寫入文件的位元組數應先放入BX和CX中。
11)退出DEBUG命令Q(Quit),其格式為:
-Q
它退出DEBUG,返回DOS。本命令並無存檔功能,如需存檔應先使用W命令。
問題:初學者問一個低級問題,執行debug-a後,如果有一行輸入錯誤,如何更改這一行?
回答:
加入進行如下輸入:
D:\PWIN95\Desktop>debug
-a
2129:0100movax,200
2129:0103movbx,200
2129:0106movcx,200
2129:0109
此時,發現movbx,200一句錯誤,應為movbx,20,可以敲回車返回"-"狀態,然後輸入:
-a103
2129:0103movbx,20
如果多或者少若干行,不必重新輸入,可以用M命令移動後面的程序來去掉或者增加程序空間.
A.程序調用命令
C>DEBUG [D:] [PATH] [FILENAME[.EXT]] [PARM1] [PARM2]
其中,文件名是被調試文件的名字。如未鍵入文件名。可用DEBUG命令N和L把需要文件裝入存儲器後再調試。D指定驅動器,PATH為路徑,FILENAME為文件名,PARM為命令參數
B.顯示存儲單元命令
-D [ADDRESS]或 ;ADDRESS 地址
-D [RANGE] ;RANGE 范圍
C.修改存儲單元內容命令
-E ADDRESS [LIST]
D.檢查和修改寄存器內容命令
-R [REGISTER NAME] ;Register name 寄存器名字
E.匯編命令
-A [ADDRESS]
F.跟蹤命令
-T [=ADDRESS] [VALUE] ;Value 變數值
G.運行命令
-G [=ADDRESS ] [ADDRESS2 [ADDRESS3]
H.反匯編命令
-U [ADDRESS]
-U [RANGE]
I.命名命令
-N FILESPECS [FILESPECS]
FILESPECS的格式可為[D:][PATH]FILENAME [.EXT]
J.裝入命令
-L [ADDRESS[DRIVE SECTOR SECTOR]] ;DRIVE SECTOR 磁碟 扇區
K.寫命令
W ADDRESS DRIVE SECTOR
L.退出命令
-Q