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

调试

代码写完,记得保存一下,运行不报错就能进行调试了。点击下图所示按钮。
Masm 如何调试汇编代码

然后,每次按 t ,再回车,就是执行一条命令。

如果你想看某一个位置的数据变化,就要输入 d + 地址,如下图所示。
Masm 如何调试汇编代码

可以看到,程序是实现了 FIRSTSECOND 单元的内容互换, FIRST + 1 单元和 SECOND + 1 单元的内容互换的功能的。

其他命令

-u:查看汇编代码。
-t:执行下一条语句。
-g:跳转到该内存所对应的语句(再用 t 命令执行该条命令)。
-r:查看寄存器的内容(后可直接接寄存器的名称,就只查看该寄存器的内容)。
-d:后接内存地址,查看改地址后面 8 * 16 个字节空间的地址(每行 16 个字节,共 8 行)后面是对应的字符‘.’表示没有该数字对应的字符。

致谢

汇编 debug 与 masm 命令

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~
本文首发于个人博客:Wonz の Blog