1. 程式人生 > >Masm 如何除錯彙編程式碼

Masm 如何除錯彙編程式碼

大二下的時候學了彙編,當時用的是 Masm 軟體,但是一直沒有去折騰,今天折騰了下,發現原來除錯這麼有用!!!強烈建議掌握一下,比自己一行行檢查錯誤快多了。

題目

已知資料段有:

FIRST  DB 12H, 34H
SECOND DB 56H, 78H

(1)要求採用傳送指令編寫一段程式,實現 FIRSTSECOND 單元的內容互換, FIRST + 1 單元和 SECOND + 1 單元的內容互換。

(2)設 (SS) = 2000H,(SP) = 3456H,用堆疊指令編寫一段程式完成上述要求,並畫出堆疊的資料變化示意圖。

程式碼

(1)

DATAS SEGMENT
FIRST DB 12H,34H
SECOND DB 56H,78H
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV AL,FIRST
    MOV BL,SECOND
    MOV FIRST,BL
    MOV SECOND,AL
    MOV AL,FIRST+1
    MOV BL,SECOND+1
    MOV FIRST+1,BL
    MOV SECOND+1,AL
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

(2)

DATAS SEGMENT
FIRST DB 12H,34H
SECOND DB 56H,78H
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;MOV AL,FIRST
    ;MOV AH,FIRST+1
    ;MOV BL,SECOND
    ;MOV BH,SECOND+1
    ;PUSH AX
    ;PUSH BX
    PUSH WORD PTR FIRST
    PUSH WORD PTR SECOND
    POP WORD PTR FIRST
    POP WORD PTR SECOND
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

除錯

程式碼寫完,記得儲存一下,執行不報錯就能進行除錯了。點選下圖所示按鈕。
在這裡插入圖片描述

然後,每次按 t ,再回車,就是執行一條命令。

如果你想看某一個位置的資料變化,就要輸入 d + 地址,如下圖所示。
在這裡插入圖片描述

可以看到,程式是實現了 FIRSTSECOND 單元的內容互換, FIRST + 1 單元和 SECOND + 1 單元的內容互換的功能的。

其他命令

-u:檢視彙編程式碼。
-t:執行下一條語句。
-g:跳轉到該記憶體所對應的語句(再用 t 命令執行該條命令)。
-r:檢視暫存器的內容(後可直接接暫存器的名稱,就只檢視該暫存器的內容)。
-d:後接記憶體地址,檢視改地址後面 8 * 16 個位元組空間的地址(每行 16 個位元組,共 8 行)後面是對應的字元‘.’表示沒有該數字對應的字元。

致謝

彙編 debug 與 masm 命令

版權宣告:本文為博主原創文章,如有錯誤,懇請大家在評論區指出,在下不勝感激~如要轉載註明出處即可~
本文首發於個人部落格:Wonz の Blog