Windows10 下汇编环境的搭建和使用

618 阅读4分钟

1. 软件准备

码云仓库地址:gitee.com/yanghuax/DO…
Github 仓库地址:github.com/xDarkLemon/…

2. 安装和测试

2.1 安装

双击 DOSBox0.74-3-win32-installer.exe 安装 DosBox,如果为 64 位系统,则将安装根目录设置为 C:\Program Files(x86)。 安装完成后,新建工作区目录如 D:\Dos,并新建子目录 ASM 用于存放汇编代码、子目录 MASM 用于存放上述下载的四个可执行文件。

D:\Dos
├─ ASM
└─ MASM
   ├─ LINK.EXE
   ├─ MASM.EXE
   ├─ debug.exe
   └─ exe2bin.exe

2.2 目录挂载(可选)

为了方便后续操作,可以考虑将 DosBox 目录映射为本地目录。在 DosBox 的安装目录下双击 DOSBox 0.74-3 Options.bat 打开配置文件,在文件的最后部分加上挂载内容:

[autoexec]
# Lines in this section will be run at startup.
# You can put your MOUNT lines here.
mount d d:\dos  # 将 DosBox 的 d 目录映射为本地的 d:\dos 目录
d:              # 切换到 d 目录,即本地的 d:\dos 目录
上述红色部分为 DosBox 启动后自动执行的命令,对应于上述的配置内容。

2.3 代码测试

在 ASM 目录下新建 demo.asm 文件,内容如下:

assume cs:codesg
codesg segment
start:
	mov ax,0123h	;将0123H送入寄存器AX
	mov bx,0456h	;将0456H送入寄存器BX
	add ax,bx	;(AX)=(AX)+(BX)
	add ax,ax	;(AX)=(AX)+(AX)
	mov ax,4c00h
	int 21h		;程序返回指令
codesg ends
end start

通过编译和链接将汇编源代码转换为可执行文件。基于可执行文件 MASM.EXE 编译源文件,指令格式为:

masm d:\asm\demo.asm;

如果上述指令不带分号则系统要求我们依次输入目标文件名、是否生成列表文件和交叉文件等编译过程的中间结果,加上分号后使用默认设置。

编译完成后,在当前目录 D:\Dos\MASM 下生成 DEMO.OBJ 目标文件。然后基于可执行文件 LINK.EXE 链接文件,指令格式为:
link demo;
链接完成后,在当前目录 D:\Dos\MASM 下生成 DEMO.EXE 可执行文件。
DEMO.EXE

3. 代码调试

MASM 目录下的 debug.exe 用于汇编代码的调试,执行以下命令即可进入调试模式。

debug demo.exe;

3.1 u 命令

汇编源代码以机器指令的形式执行,u 命令将内存中的机器指令翻译成汇编代码。

蓝色部分为代码的存放地址,076A 表示段地址,冒号后面部分为偏移地址。绿色部分和红色部分为机器码和汇编代码的一一对应,如汇编代码中的 mov 操作对应于机器码 B8,add 操作对应于 03。

u 命令可以查看指定内存单元的机器码和汇编代码,格式为:

u 段地址:偏移地址

3.2 r 命令

r 命令用于查看各寄存器的内容。

如图,r 命令查看当前状态下各寄存器的内容。包括通用寄存器 AX、BX、CX 和 DX,变址寄存器 SI 和 DI,段寄存器 SS、DS、ES 和 CS,指针寄存器 IP 等,最后 8 个变量为标志寄存器的内容。

3.3 d 命令

d 命令用于查看内存中的内容。

蓝色部分为内存地址,由段地址和偏移地址构成。红色部分为对应内存中的十六进制内容,绿色部分为对应部分的 ASCII 码内容。

同样,d 命令可以查看指定内存单元的内容,格式为:

d 段地址:偏移地址

3.4 t 命令

t 命令用于执行一条机器指令。

上述代码第一条语句的功能是将0123H送入寄存器AX,t 命令执行后,红色部分标出当前状态下寄存器 AX 的内容。蓝色部分表示下一次即将执行的指令,对应于 CS:IP 确定的内存单元的内容。

最后,使用 p 命令运行 int21 指令,程序正常退出。

3.5 g 命令

g 命令用于运行指定内存单元处的指令,格式为:

g 段地址:偏移地址

4. 总结

  1. 本文介绍了在 Windows10 下 DosBox 汇编环境的搭建和 debug 汇编代码的常用命令

  2. 参考:汇编语言/王爽著.——北京:清华大学出版社,2003