1. 获取工具
Windows和Mac都下载这个,仅Dos环境有区别,汇编时用到的文件是通用的
链接: https://pan.baidu.com/s/1KWMNPnrbNGPytZ9FZNM8GA 密码: 0mp7
2. 安装Dos环境
下载完成后,Windows根据dosbox安装及dosbox下masm的使用.doc
安装
Mac直接点击Boxer.app
即可运行Dos环境(后文将Boxer和dosbox统称为dosbox),不推荐用mac版的dosbox,版本过于久,且不能粘贴(不可忍)
注意,其他文件后面需要用到(特别留意MASM
文件夹,里面有MASM.EXE和LINK.EXE汇编时用),妥善保存
3. 尝试
3.1 编写代码
用任意编辑器写完代码,将后缀名改为.asm
把源代码文件放到MASM
文件夹中,使得源代码文件与MASM.EXE、LINK.EXE两程序在同一层
3.2 挂载目录
挂载
Dosbox是虚拟机环境,想要在其中访问本机的文件,需要将本机的文件夹挂载到dosbox中
例mounnt c d:\MASM5\MASM
是将本机D盘中的\MASM5\MASM挂载到dosbox的C盘
切换虚拟磁盘
Dosbox双击打开默认是在Z盘中,执行完上面的挂载操作后,键入命令c:
切换到doxbox的C盘中,此时操作C盘中的文件,(例)即是操作本机中d:\MASM5\MASM中的文件
简单指令
更多命令请查DOS命令
切换磁盘:盘符:
。例,c:
切换到C盘
挂载:mount 盘符 本机文件夹
。例,mount c d:\MASM5\
将本机中d:\MASM5\挂载到dosbox的C盘中
卸载:unmount 盘符
。例,先离开想要卸载的磁盘(切换到其他磁盘),再执行unmount c
卸载挂载在C盘上的文件夹
切换目录:cd 目标路径
,.
是当前文件夹,..
是上一文件夹。例,cd ./MASM
切换到当前你文件夹中的MASM文件夹
列出所有文件:dir
。例,当前在C:\MASM5\中年,输入dir
将列出当前文件夹中的所有文件和文件夹
3.3 开始汇编
确保环境
确保编写的汇编源代码文件在MASM文件夹中,即与DEBUG.EXE、MASM.EXE、LINK.EXE在同一文件夹内。若没有,快把源文件拿过来放一起
汇编和链接
作为初学者,先不关系具体发生了什么
两条命令
masm 文件名;
link 文件名;
这就是要求把源代码文件和这些工具放在同一个文件夹内的原因,可以不用写全路径,直接输名字即可使用
第一行,运行结果得到中间文件XXX.OBJ。注意1.不加扩展名,2.加分号(为了快速处理)。不加分号需要手动配置一些参数
第二行,运行结果得到可执行文件XXX.EXE。注意1.不加扩展名,2.加分号(为了快速处理)。不加分号需要手动配置一些参数
3.4 使用DEBUG工具
使用DEBUG,可以查看程序运行时的内存和寄存器的数据
启动
命令:debug XXX.EXE
,注意加上.exe
扩展名
常用命令
更多命令请点击
查看内存:d
,在后面加十六进制偏移地址值,可以查看相应地址的内存
查看寄存器:r
单步执行:t
,输入一次执行一步,并显示寄存器值
快速执行:g
,不打断执行之后的代码
退出:q
,到达程序最后后,需手动退出。继续单步调试会执行后面的代码
4. 示例
代码
code segment
assume cs:code
start:
; 给ax寄存器传值,十六进制数b
mov ax, 0bh
mov ax, 4c00h ; 4c00h表示程序退出,并返回00,传递退出信息
int 21h
code ends
end start
截图
-
挂载成功后,切换到c盘,并列出当前文件夹内容
-
汇编,两步
链接时有无栈段警告,可忽略
- 使用DEBUG示例
执行到第5行时,AX值被修改为BH,紧接着又被修改成4C00H