閱讀274 返回首頁    go 阿裏雲 go 技術社區[雲棲]


匯編語言debug的使用方法

進入Windows操作係統,輸入cmd回車
輸入debug 回車,這樣就進入了 debug模式
1: 輸入 -r 查看或者修改寄存器,可以修改CS IP來指向要執行匯編的內存地址
   -r 回車 查看
   -r ax 回車 修改 ax的值
   -r cs 回車  修改 cs的值
   -r ip 回車 修改 ip的值
 
2: 輸入-D 查看內存中的信息
   -d 1000:0000 查看段地址為1000H ,偏移地址為0開始的內存信息
   -d 1000:0000 00ff 就是查看 1000:0000 到1000:00ff的內存信息
   查看主板生產日期
  -d fff0:0000 00ff 可以看到右下角的 08/14/08 格式月/日/年, 08年8月14號生產的主板
    這裏的生產日期是隻讀的,無法修改,通過-e修改表麵上看是改過了,下次打開後又恢複之前數據了
    如果直接用 -d 0100 則會顯示 DS:0100處的內存信息,也就是顯示段地址為ds,便宜地址為0100的內存信息。
    -d ds:0100  也可以這麼使用
3:輸入-E修改內存中位置的信息
   -e 1000:0000 1a 00 09 10 a1 61 這樣就可以修改對應段地址為1000H ,偏移地址為0開始的內存信息
   -e 1000:0000 'a+b' 這樣就會在內存1000:0000處寫入61H(a的ASICC碼) 1000:0001處+ 1000:0002 62


4:輸入-u查看指定位置對應的匯編指令
   -u 1000:0000 查看該處的匯編指令
   -u cs:0000 查看段地址為cs處的匯編指令
5: 輸入-t 執行指令
   -t 執行CS:IP所指向的第一個指令,如果要執行自己寫入內存的指令,應該先通過-r來改變CS IP的值,然後再執行 -t 執行
   -t 指令默認執行第一條指令後停止。但是當遇到修改SS的指令時,會把緊接的下一條指令也執行了。
6:輸入-a 輸入匯編指令
   -a 1000:0000 回車
這樣就可以直接在1000:0000處輸入匯編指令了,注意再輸入完之後,輸入一個空格,表示輸入完畢,輸入完畢後,通過-r修改CS ip來指向對應的內存地址,然後就可以通過-t逐行執行了,每執行一次通過-r來看對應的寄存器的變化。
  -a 回車 直接輸入匯編指令,默認會在cs:ip處輸入,所以直接用-a 回車輸入匯編指令,然後用-t執行那麼執行的就是剛剛輸入的匯編指令,這樣可以用來調試匯編指令
 
7:輸入-g 直接跳轉到哪步執行
   用-t是需要一步一步執行,但是往往遇到loop循環時候,次數很多,必須要用-g跳到指定行執行
   -g 0019 直接跳到便宜地址為0019h處執行
 
 
 最後用DEBUG加載.exe文件
  用RadASM編寫好asm文件(新建選擇masm編譯器,dos)編寫好後用編譯、鏈接、運行,此時生成了對應的exe文件。比如在:D:\RadASM\Masm\Projects\test\test.exe
  再用命令 debug D:\RadASM\Masm\Projects\test\test.exe 回車
  -u 查看對應test.exe裏的匯編指令 -t執行 -g 跳轉到哪個偏移地址執行

最後更新:2017-04-03 05:39:37

  上一篇:go 【算法小總結】拓撲排序+例題解析
  下一篇:go 從Storm和Spark 學習流式實時分布式計算的設計