debug 的基本用法
接下來,來講述一下 debug 的基本用法
debug 基本指令 | 指令全稱 | 用法 | 用途 |
---|---|---|---|
? | ---------- | ? | 顯示debug的命令列表 |
A | assemble | A [ address ] | 將輸入源程序的指令匯編成目標代碼並從指定的地址單元開始存放。若省缺起始地址,則從當前CS:100地址開始存放。A命令按行匯編,主要用於小段程序的匯編或對目標程序的修改 |
C | compare | C range address | 比較內存的兩個部分 |
D | dump | D [ range ] | 顯示部分內存的內容 |
E | enter | E address [ list ] | 從指定地址開始,將數據輸入 |
F | fill | F range list | 使用指定值填充一段內存 |
G | go | G [ = address ] [ addresses ] | 運行在內存中的可執行文件 |
H | hex | H value1 value2 | 執行十六進制運算 |
I | input | I port | 顯示來自特定端口的 1 字節值 |
L | load | L [ address ] [driver ] [ firstsector ] [ number ] | 將文件或磁盤扇區內容加載到內存 |
M | move | M range address | 復制內存塊中的內容 |
N | name | N [ pathname ] [ arglist ] | 指定 Debug l(加載)或 w(寫入)命令的可執行文件的名稱,或者指定正在調試的可執行文件的參數 |
O | output | O port byte | 向輸出端口發送 1 個字節的值 |
P | proceed | P [ =address ] [ number ] | 執行循環、重復的字符串指令、軟件中斷或子例程;或通過任何其他指令跟蹤 |
Q | quit | Q | 退出 debug會話,不保存當前測試文件 |
R | register | R [ register ] | 若給出寄存器名,則顯示該寄存器的內存並可進行修改。缺省寄存器名,則顯示所有寄存器的內容及當前值( 不能修改 ) |
S | search | S range list | 在部分內存中搜索一個或多個字節值的模式 |
T | trace | T [ =address] [ value ] | 執行一條指令,然后顯示所有寄存器的內容、所有標志的狀態和Debug下一步要執行的指令的解碼形式 |
U | unassemble | U [ range ] | 反匯編字節並顯示相應的原語句 |
W | write | W [address ] [ drive ] [ firstsector ] [ number ] | 將測試文件寫入磁盤 |
XA | allocate expanded memory | XA [ # pages ] | 分配擴展內存 |
XD | deallocate expanded memory | XD [ handle ] | 釋放擴展內存 |
XM | map expanded memory pages | XM [ Lpage ] [ Ppage ] [ handle ] | 映射擴展內存頁 |
XS | display expanded memory status | XS | 顯示擴展內存的狀態 |
以上便是debug的簡介。
學習匯編語言並且調用debug調試的時候,主要使用到 -L -U -D -G -T -P 指令
-L 裝入 -G 運行 -U 反匯編 -T 單步(可以進入子程序) -P 單步(不進入子程序)-D 查詢內存
匯編語言程序建立步驟:
- edit 建立源文件 格式:edit xxx.asm ( 必須以 asm 為擴展文件名,否則不能使用 masm 調用 ),生成 obj 文件。
- masm 生成鏈接文件 格式:masm xxx.asm 然后生成 obj 文件,obj 文件是可連接文件,接下來需要使用link鏈接文件生成exe
- link 生成 exe 文件 格式:link xxx.obj 生成 exe 可執行文件