课后作业:
- 搭建汇编环境,要求是X86指令集
- 预习2-3章
工具:DOSBOX与MASM32
工具准备
1.下载DOSBOX
下载地址:http://www.dosbox.com/
点击downlods
**2.MASM32
下载地址:
http://www.masm32.com/download.htm
点击downlod
在D盘建立DEBUG文件
安装
1.DOSBOX
我放在了D盘下
2.MASM32
链接:https://pan.baidu.com/s/1Aole8bqs8bEU0AXCOuUVKQ
提取码:h8ck
至少需要:masm.exe,link.exe,debug.exe,exe2bin.exe四个文件
masm.exe:汇编程序,用于汇编源程序(.asm),得到目标程序(.obj);
link.exe:连接程序,用于连接目标程序,得到可执行程序(.exe);
debug.exe:调试程序,用于调试可执行程序。
将这些文件放到D:\DEBUG中
配置环境
在DOSBOX的安装目录下,双击文件DOSBox 0.74 Options.bat记事本会打开配置文件dosbox-0.74.conf
将光标定位到dosbox-0.74.conf文件的[autoexec]节点(一般在该文件末尾)
mount c d:\DEBUG
PATH=%PATH%; d:\DEBUG
调试程序
记事本编写,后缀为.asm,放到D:\DEBUG下
assume cs:codesg
codesg segment
mov ax,0123h
mov bx,0456h
add ax,bx
add ax,ax
mov ax,4c00h
int 21h
codesg ends
end
打开DOSBOX
输入c:
dir
显示文件
- masm 1.asm 生成目标文件1.obj
- link 1.obj,生成可执行文件1.exe
注意:由于在上述代码中未定义堆栈段,故在链接时会提示:LINK : warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。
- debug 1.exe
会出现-
开始调试
-R,查看程序运行前的寄存器组初始值;
-U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。
-T,单步调试;
-D,观察内存变化(D后不带地址或范围,默认显示上一个D命令之后的80字节内容);
-G 地址,程序从当前位置直接运行到指定地址处停下。
-E 地址修改内存中的内容,如:E DS:0100,输入空格可逐个字节修改,回车停止修改。
参考资料:
1.https://blog.csdn.net/doniexun/article/details/45438457
2.https://blog.csdn.net/weixin_38504735/article/details/83309524?utm_source=distribute.pc_relevant.none-task
3.https://blog.csdn.net/xyisv/article/details/69062382?utm_source=distribute.pc_relevant.none-task
4.https://blog.csdn.net/lanchunhui/article/details/78151569?utm_source=distribute.pc_relevant.none-task