debug与DOSBox安装&&debug命令操作
文章目錄
- 一. DOSBox && debug使用
- 1.安裝配置(以下方法們按照從麻煩到簡便的順序)
- (1) 多步驟(可行,但不推薦)
- (2)一步到位(強烈推薦)
- 2. 窗口大小
- 二. debug兩種狀態
- 三.debug命令及操作
- ? :查看文檔
- A :逐步匯編
- 1.不給地址的話,默認為0101或者當前的IP地址
- 2.從給定地址adress開始輸入匯編語句,把語句匯編成機器代碼依次存放在給定地址開始的存儲器
- R : read&&write register顯示和修改寄存器
- 1.顯示寄存器狀態
- 2.修改寄存器
- U : 反匯編
- 1.若省略地址,從上一個U命令的最后一個指令的下一個單元開始顯示32個字節。
- 2.若只給起始地址,只對20H個字節的機器代碼反匯編顯示
- 3.若給定始末地址,對指定地址的機器代碼反匯編顯示
- D : 以十六進制顯示內存區域的內容
- 1.若未給出范圍,默認為128字節存儲單元。
- 2.若給出一個特定地址,則顯示對應的存儲單元的內容
- 3.若給定一個查看范圍,則顯示范圍內的儲存單元們的內容
- 4.若給定起點和長度,長度以參數L為標識,則從起點開始顯示規定長度的內容
- E : 改變內存單元的內容
- 1.若只給出地址,可改變對應地址開始的連續的一個至八個字節
- 2.若給出地址以及一個或多個數據,可連續修改內存中的內容
- T:單步執行
- 1.若不給任何參數,則從CS : IP 開始執行
- 2.若給出地址,不給出指令數參數,則在指定地址的指令執行后,不再執行,并顯示寄存器狀態
- 3.若指定地址和指令數,則從指定地址開始執行對應的指令數量
- G : 連續執行
- 1.若不給出任何參數,則從當前物理地址開始運行,直到運行終止指令才停止
- 2.若只給出起始地址,則從指定地址開始運行,直到運行終止指令才停止
- 3.若給定起始地址和斷點地址,則從指定地址開始運行,運行到斷點結束
- P : 執行匯編程序,單步跟蹤。與T命令不同的是:P命令不會跟蹤進入子程序或軟中斷。
一. DOSBox && debug使用
DOSBox下載 : https://sourceforge.net/projects/dosbox/files/dosbox/0.74-2/DOSBox0.74-2-win32-installer.exe/download
debug下載鏈接:https://pan.baidu.com/s/1c1rph04y4ZAZrTQfZJuazA
提取碼:bxcc
1.安裝配置(以下方法們按照從麻煩到簡便的順序)
(1) 多步驟(可行,但不推薦)
- 打開DOSBox
- 輸入自定義的驅動器盤符X ,以及你DOSBox的路徑: mount X Y:……
- 回車,輸入你剛才定義的驅動器盤符
- 進入X盤之后,你就可以開始調試模式啦,bingo(怎么調試待會再說呀~)
- 直接把debug拖進DOSBox中,即點住debug后不放拖到DOSBox應用程序上
此時會出現用DOSBox打開的提示字樣
(2)一步到位(強烈推薦)
雙擊打開DOSBox文件目錄中的 DOSBox 0.74-2 Options
在文件末尾,可以看到[autoexec]區段,在最后加入咱上個方法輸入的東西,
MOUNT X Y:……
X:
Ctrl + S保存一下之后,再次打開DOSBox自動掛載到指定驅動盤符,直接輸入debug指令就OK啦
2. 窗口大小
配置完這個新朋友很開心,可是定睛一看,這么小的窗口,還不能調大小?!
有點子不友善哇,讓我們來調教一下這個小妖精~
方法來自貼吧大神https://tieba.baidu.com/p/2150370425?red_tag=0020431408
依然是找到DOSBox里的DOSBox 0.74-2 Options
找個區段,添加以下代碼
[sdl]
fullscreen=false
fulldouble=false
fullresolution=original
windowresolution=1080x800
output=opengl
autolock=true
sensitivity=100
waittrue
priority=higher,normal
mapperfile=mapper-0.74.map
usescancodes=true
[render]
frameskip=0
aspect=false
scaler=normal2x
可以在windowresolution里調你想要的分辨率
二. debug兩種狀態
- 接收debug命令的狀態
- 命令下的相關操作狀態
兩者之間切換用shift
三.debug命令及操作
- 確定與退出都按回車鍵
- 建議初學者不要對CS、IP、SS、SP中的內容進行修改
- "-"為提示符
- 89D8 H = MOV AX,BX
- 修改一個按回車,修改多個按空格
- HLT:暫停,涉及到硬件處理
? :查看文檔
首先讓我們打個“?”,看看都有啥指令
一共才二十來個指令,而常用指令有才六個~
A :逐步匯編
assemble匯編: 以匯編的形式在內存中輸入一條機器指令
ps:起始的偏移地址一定為0100
A [adress]
[ ]表示其中的內容可省略
1.不給地址的話,默認為0101或者當前的IP地址
2.從給定地址adress開始輸入匯編語句,把語句匯編成機器代碼依次存放在給定地址開始的存儲器
eg:
- 用A命令分別把0001,0002送到AX,BX中,再AX = AX + BX
- 再用D命令顯示下結果
//D命令顯示相應內存的內容 - 用U命令反編譯,把機器代碼翻譯為匯編語句
//U : 反匯編反匯編,即把機器指令翻譯成字節碼顯示
R : read&&write register顯示和修改寄存器
1.顯示寄存器狀態
這實在是很心酸的一張照片哩,鑒于筆者的后置像素太渣,
還是借助外援拍圖后期修改的,嗚嗚┭┮﹏┭┮
2.修改寄存器
-R 寄存器名稱
eg:修改AX的值,AX從0000變為我們指定的0001
U : 反匯編
unssemble反匯編:把機器代碼反匯編顯示
-U [地址]
1.若省略地址,從上一個U命令的最后一個指令的下一個單元開始顯示32個字節。
2.若只給起始地址,只對20H個字節的機器代碼反匯編顯示
3.若給定始末地址,對指定地址的機器代碼反匯編顯示
D : 以十六進制顯示內存區域的內容
dump
-D[地址或范圍]
1.若未給出范圍,默認為128字節存儲單元。
從左至右依次是:
段地址:偏移地址 以十六進制的形式顯示內存值 以ASCII碼的形式顯示內存值
其中 物理地址=段地址 × 16D + 偏移地址,16D也就是左移四位
2.若給出一個特定地址,則顯示對應的存儲單元的內容
3.若給定一個查看范圍,則顯示范圍內的儲存單元們的內容
4.若給定起點和長度,長度以參數L為標識,則從起點開始顯示規定長度的內容
-D[起點][L長度]
E : 改變內存單元的內容
enter
-E 地址 [內容]
注意哦ヾ(●′?`●) 像地址只要的不帶[]的參數,必須有!
otherwise,看error來找你敘舊~
1.若只給出地址,可改變對應地址開始的連續的一個至八個字節
2.若給出地址以及一個或多個數據,可連續修改內存中的內容
T:單步執行
trace
執行執行以cs:ip開始的一條或n條機器指令,并顯示寄存器的內容
-[=地址][指令數]
notes : 地址前面的等于不可省,即如果給出地址參數,則一定要在地址前面加上等于
否則,error來找你敘舊~
1.若不給任何參數,則從CS : IP 開始執行
2.若給出地址,不給出指令數參數,則在指定地址的指令執行后,不再執行,并顯示寄存器狀態
3.若指定地址和指令數,則從指定地址開始執行對應的指令數量
G : 連續執行
go 連續執行機器指令
-G [=起始地址][斷點地址]
1.若不給出任何參數,則從當前物理地址開始運行,直到運行終止指令才停止
遇不到就會卡死在這里……
2.若只給出起始地址,則從指定地址開始運行,直到運行終止指令才停止
3.若給定起始地址和斷點地址,則從指定地址開始運行,運行到斷點結束
P : 執行匯編程序,單步跟蹤。與T命令不同的是:P命令不會跟蹤進入子程序或軟中斷。
P命令的使用方式與T命令的使用方式完全相同。
執行循環、重復的字符串指令、軟件中斷或子例程序。
#持續更新ing
總結
以上是生活随笔為你收集整理的debug与DOSBox安装&&debug命令操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛!达摩院孵化开源项目,让数字人&quo
- 下一篇: 聊聊AI浏览器