一、工具下载()
主要工具:
1、dosbox DOSBox0.74-win32-installer.exe(32位)
下载地址:
http://www.dosbox.com/download.php?main=1
http://sourceforge.net/projects/dosbox/files/
附上某盘地址:https://pan.baidu.com/s/1vgVBvP2RfWjLALpCIyJ7NA
2、masm 5.0
下载地址:
http://www.x86asm.com/download/tool/masm/masm500.zip
附上某盘地址:https://pan.baidu.com/s/1Yw7vBfjU-GiucwQY08QefQ
二、安装
1、dosbox DOSBox0.74-win32-installer.exe
安装地址填写默认的地址即可
默认安装目录是: 32位 C:\Program Files\DOSBox-0.74 或者 64位 C:\Program Files (x86)\DOSBox-0.74
2、masm 5.0 安装
解压出来并在c盘下建立一个masm文件夹放进去,当然也可以放在其他盘
这时发现里面只有
c:\masm\masm.exe c:\masm\link.exe c:\masm\lib.exe c:\masm\cref.exe
我们还要添加另外两个文件
debug.exe 用于调试
ml.bat简化操作 c:\masm\ml.bat 使用方式: ml name (直接汇编文件名,不加后缀)
//
masm文件夹内至少要包含这4个文件:masm.exe, link.exe, debug.exe, exe2bin.exe。其中:
masm.exe:汇编程序,用于汇编源程序(.asm),得到目标程序(.obj);
link.exe:连接程序,用于连接目标程序,得到可执行程序(.exe);
debug.exe:调试程序,用于调试可执行程序。
还可以下载其它的程序加进去
///
然后文件夹masm下的文件夹里面
三、配置
dosbox
找到dosbox的配置文件DOSBox 0.74 Options.bat
可以通过右击快捷方式打开文件所在位置
然后双击打开
拉至文件末尾找到 [autoexec]
添加以下内容: (比如我的汇编文件都放在d:\masmcode (暂且称作 2号目录) (注意:此目录可改为你自己选定的,但目录名不可超过8个字符,也不可为中文))
::双冒号是注释作用
::mount 挂载真实机器的路径到dosbox里面成为逻辑盘符
::举例: mount c: d:\a\b\c
::挂载真实机器的路径d:\a\b\c到dosbox里成为c:盘
::在dosbox下对C:盘的操作等于对真实机器路径d:\a\b\c的操作
::=======================================
mount c: c:\
::真实机器的路径C:\ 挂载成 dosbox里C:盘
mount d: d:\
::真实机器的路径D:\ 挂载成 dosbox里D:盘
path c:\masm
::设置dosbox下环境变量PATH,可执行命令在当前目录搜索不到时会从这个目录下找
::比如当前目录是D:\输入masm.exe,找不到时,会看看c:\masm目录下有没有masm.exe
::(注意:此目录是上面的1号目录,如果更改过,请替换成你自己的)
d:
::切换到dosbox下的D:盘
cd d:\masmcode
::切换到dosbox下的源代码目录
::(注意:此目录是上面的2号目录,如果更改过,请替换成你自己的)
cls
::清屏
::=======================================
添加后的配置文件
四、测试
1)运行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
2)保存文件后返回DOSBOX的命令行,输入命令:MASM 文件名.asm,生成目标文件文件名.OBJ(生成过程中可以修改目标文件名,直接回车可保持默认目标文件名)。
注意:此时可能生成三个文件:*.obj、*.lst和*.crf文件(Windows10 x64系统可能只会生成*.obj文件)。其中,列表文件*.lst和交叉引用文件非必选,前者是汇编语言汇编的机器语言与汇编语言对照表,可用于调试;后者给出了用户定义的所有符号和对每个符号定义、引用的行号。
3)输入命令:LINK 文件名.OBJ,链接生成可执行文件文件名.EXE。
注意:由于在上述代码中未定义堆栈段,故在链接时会提示:LINK : warning L4021: no stack segment,因不会影响执行文件的生成,故暂时忽略。
另外,此时可能生成两个文件:*.exe和*.map文件(Windows10 x64系统可能只会生成*.exe文件)。其中,地址映射文件*.map给出内存地址分配的有关信息。
4)输入命令:DEBUG 文件名.EXE,在DEBUG的命令提示符“-”出现后开始调试,以下是部分调试命令及截图:
输入命令:R,查看程序运行前的寄存器组初始值;
输入命令:U,查看程序反汇编代码。从反汇编代码中可看出,变量会被汇编为直接寻址方式,使用变量在数据段内的有效地址表示。
五、结束