大二下的时候学了汇编,当时用的是 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 行)后面是对应的字符‘.’表示没有该数字对应的字符。
致谢
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~