Masm 如何除錯彙編程式碼
阿新 • • 發佈:2018-11-10
大二下的時候學了彙編,當時用的是 Masm 軟體,但是一直沒有去折騰,今天折騰了下,發現原來除錯這麼有用!!!強烈建議掌握一下,比自己一行行檢查錯誤快多了。
題目
已知資料段有:
FIRST DB 12H, 34H
SECOND DB 56H, 78H
(1)要求採用傳送指令編寫一段程式,實現 FIRST
和 SECOND
單元的內容互換, 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
+ 地址
,如下圖所示。
可以看到,程式是實現了 FIRST
和 SECOND
單元的內容互換, FIRST + 1
單元和 SECOND + 1
單元的內容互換的功能的。
其他命令
-u
:檢視彙編程式碼。
-t
:執行下一條語句。
-g
:跳轉到該記憶體所對應的語句(再用 t 命令執行該條命令)。
-r
:檢視暫存器的內容(後可直接接暫存器的名稱,就只檢視該暫存器的內容)。
-d
:後接記憶體地址,檢視改地址後面 8 * 16 個位元組空間的地址(每行 16 個位元組,共 8 行)後面是對應的字元‘.’表示沒有該數字對應的字元。
致謝
版權宣告:本文為博主原創文章,如有錯誤,懇請大家在評論區指出,在下不勝感激~如要轉載註明出處即可~
本文首發於個人部落格:Wonz の Blog 。