天天看點

MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

MASM調試彙編代碼(指令行方式)

以 【輸出helloworld】為例,講解MASM用指令方式調試彙編代碼的方法。

目錄

  • MASM調試彙編代碼(指令行方式)
      • 總覽
      • t指令
      • p指令
      • r指令
      • u指令
      • g指令
      • d指令
      • q指令

代碼:

DATA    SEGMENT                           ;資料段
	HELLO DB 'Hello World!',0DH,0AH,'$'
DATA    ENDS

CODE    SEGMENT                           ;代碼段
				ASSUME CS:CODE,DS:DATA            ;段寄存器分别與哪些段有關
START:  MOV   AX,DATA
				MOV   DS,AX                       ;設定資料段

				MOV   DX,OFFSET HELLO					  	;輸出
				MOV   AH,09H
				INT   21H

				MOV  AX,4C00H
				INT  21H
CODE    ENDS                              ;代碼段結束
				END START                         ;源代碼結束
           
進入調試的方法:

debug 程式名.exe

debug hello.exe

總覽

常用指令 :t、r、d

  1. t:執行下一條語句。
  2. u:檢視彙編代碼。
  3. g:跳轉到該記憶體所對應的語句
  4. r:檢視寄存器的内容(後可直接接寄存器的名稱,就隻檢視該寄存器的内容)。
  5. d:後接記憶體位址,檢視該位址後面 8 * 16 個位元組空間的位址(每行 16 個位元組,共 8 行)後面是對應的字元‘.’表示沒有該數字對應的字元。
  6. p:與T指令一樣完成跟蹤程式的運作, 但遇到子程式、中斷程式、循環時并不跟蹤下去, 而是把它們當作一條指令來執行。
  7. q:退出debug

t指令

  • T 【起始位址】【指令條數】
    • 逐條跟蹤程式的運作, 同時顯示出各寄存器的内容、狀态标志和下一條要執行的指令
    • 當執行夠指定的指令數後就暫停程式的運作。
    • 如果不指定起始位址, 則從CS:IP處開始執行。
    • 不指定指令條數, 則認為隻執行一條指令。
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

p指令

格式:

  • p 【起始位址】【指令條數】
    • 與T指令一樣完成跟蹤程式的運作, 但遇到子程式、中斷程式、循環時并不跟蹤下去, 而是把它們當作一條指令來執行。

r指令

格式:

  • r
    • 顯示目前所有寄存器内容, 狀态标志及将要執行的下一條指令的位址、代碼和彙編指令形式。
  • r 寄存器
    • 顯示并修改指定寄存器的内容
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

u指令

格式

  • u 【位址】
  • u 【位址1】【位址2】

将指定位址範圍内的機器代碼翻譯成彙編源程式指令顯示出來, 并同時顯示位址及代碼。

反彙編時一定确認指令的起始位址, 否則得不到正确的結果。

MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

g指令

運作程式指令

格式:

  • g 【起始位址】【斷點位址】

從起始位址開始執行程式, 直到程式結束或遇到斷點位址為止,如果不指定起始位址, 則從CS:IP處開始執行。

如果程式執行到結束,則顯示"Program terminated normally"。如果遇到斷點, 則程式停止執行, 并顯示當時各寄存器的内容 和下一條要執行的指令。

MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

d指令

格式:

  • d 【位址】
  • d 【位址1】 【位址2】

說明:D指令在螢幕上顯示的内容分為三部分, 左邊是每一行存儲單元的起始位址, 中間是各位元組單元的内容, 右邊是各單元内容對應的ASCII碼字元( 不可顯示的字元用"."代替)。

MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)
MASM調試彙編代碼(指令行方式)MASM調試彙編代碼(指令行方式)

q指令

直接輸入q,退出debug

繼續閱讀