宿主机:ThinkPad E431 Windows10专业版
作者:不笑猫哟
参考资料:
https://blog.csdn.net/doniexun/article/details/45438457
https://blog.csdn.net/xiang_shao344/article/details/77941353
分享资料:
链接:https://pan.baidu.com/s/1UogLNoyrFp0oM1_QJY2FAQ密码:xjua
运行环境搭建:
下载DOSBOX
工具介绍:DOSBox 是一个 DOS 模拟程序,由于它采用的是 SDL 库,所以可以很方便的移植到其他的平台。目前,DOSBox 已经支持在 Windows、Linux、MacOS X、BeOS 、palmOS、Android 、webOS、os/2等系统中运行。不少DOS下的游戏都可以直接在该平台上运行。
工具官网:http://www.dosbox.com/
项目主页:http://sourceforge.net/projects/dosbox/
下载链接:http://sourceforge.net/projects/dosbox/files/dosbox/0.74/DOSBox0.74-win32-installer.exe/download(32位)
说明:由于项目已经停更,目前官网上指出,DOSBOX可以运行于32位和64位的Windows Vista和Windows 7之上,亲测windows10专业版亦可运行
安装DOSBox
安装下载到的DOSBox0.74-win32-installer.exe,直接一路Next完成安装。
配置DOSBOX
运行DOSbox会弹出两个窗口,如下图,我们需要用到的是较小的那个窗口
用记事本打开C:\Users\xiaof\AppData\Local\DOSBox\dosbox-0.74.conf 路径中中xiaof是用户名,改成自己的用户名即可,若文件不存在,运行一下DOSbox即可
打开dosbox-0.74.conf后,如下图,找到[autoexec],在[autoexec]下方添加下面两行,挂在路径可以自己自定义,但路径必须存在
MOUNT C D:\DOSBox-0.74\mount # 将目录D:\DOSBox-0.74\mount挂载为DOSBOX下的C:
set PATH=$PATH$;D:\DOSBox-0.74\mount # 将D:\DEBUG写入环境变量PATH中
测试DOSbox
1、 在挂载路径新建文件夹或文件
2、 打开DOSbox
3、 输入C:进入DOSbox的C盘
4、 输入dir查看是否有自己新建的文件夹或文件
5、 3、4步若是成功则说明挂载成功,否则不成功
6、 运行环境搭建完毕
编译环境搭建
方式一:
1、 解压网友分享的masm.rar解压到挂载路径路径下
2、 运行DOSBOX,在命令符C:\>下输入命令:EDIT 文件名.asm,启动EDIT.EXE进入代码编辑状态,并输入如下样例程序:
code segment
assume cs:code
start:
mov ax,5h
mov bx,6h
add ax,bx
mov ah,4ch ; 调用DOS的4C号功能
int 21h ; 退出DEBUG状态,返回DOS
code ends
end start
3、 当进入DOSBOX编辑界面,随意可以按Windows键退出DOSBOX编辑界面;EDIT及以下命令的拼写忽略大小写。
4、 保存文件后返回DOSBOX的命令行,输入命令:MASM 文件名.asm,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)。
5、 此时可能生成三个文件:*.obj、*.lst和*.crf文件(Windows10 x64系统可能只会生成*.obj文件)。其中,列表文件*.lst和交叉引用文件非必选,前者是汇编语言汇编的机器语言与汇编语言对照表,可用于调试;后者给出了用户定义的所有符号和对每个符号定义、引用的行号。
6、 输入命令:LINK 文件名.OBJ,链接生成可执行文件文件名.EXE。
7、 由于在上述代码中未定义堆栈段,故在链接时会提示:LINK : warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。
8、 此时可能生成两个文件:*.exe和*.map文件(Windows10 x64系统可能只会生成*.exe文件)。其中,地址映射文件*.map给出内存地址分配的有关信息。
输入命令:DEBUG 文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试,以下是部分调试命令及截图:
输入命令:R,查看程序运行前的寄存器组初始值;
输入命令:U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。
输入命令:T,单步调试;
输入命令:D,观察内存变化(D后不带地址或范围,默认显示上一个D命令之后的80字节内容);
输入命令:G 地址,程序从当前位置直接运行到指定地址处停下。
输入命令:E 地址修改内存中的内容,如:E DS:0100,输入空格可逐个字节修改,回车停止修改。
方式二:
1. MASM32
2. 右键此电脑→属性→高级系统设置→环境变量
3. 在系统变量中找到Path变量
4. 双击Path变量→新建→如下图,粘贴masm32安装路径下的bin路径
5. 一路确定即可
6. 打开masm编辑程序(一般会在桌面产生一个masm的快捷方式)
7. 保存文件后,点击下图的红框图标进入编译界面
8. 在弹出来的dos界面进入汇编文件所在的路径ml /c 文件名.asm
9. 完成后上步后会在源文件所在目录下生成对应的文件名.obj
10. link16 TEST.obj即可,出现的什么选项不用管直接回车
11. 完成上步后会生成exe文件
12. 生成的exe文件可以在DOSbox中运行
编译环境搭建完成