大二选了汇编这门神奇的课,学了一个多月都是纸上谈兵,很是不爽。最近趁着闲给自己的 mbp 配了一下汇编的环境,顺带给自己的博客搭了一个文件服务器,然后写篇博客整理一下。
下载安装 DOSBox 链接到标题
这一步我们选择最优雅的方式:通过 Homebrew 下载。
$ brew install dosbox
然后我们通过终端运行就可以启动 DOSBox 了。
$ dosbox

挂载 DOS 的盘符 链接到标题
DOSBox 需要有一个自己的工作路径,我们可以通过
Z:>MOUNT C {path}
指令来挂载,然后就可以切换了。

当然这一步也可以直接写到 DOSBox 的配置文件中,让之后我们每一次启动它都可以直接执行这两句话。
首先我们先打开它的配置文件,一般是 ~/Library/Preferences/DOSBox\ 0.74-3\ Preferences。
然后在这个文件的底部加上这么几行:
# 挂载 ~/Program/assembly_language 目录为 C 盘 
mount C ~/Program/assembly_language 
# 进入 C 盘(~/Program/assembly_language 目录) 
C:
就可以自动挂载了。
下载常用工具 链接到标题
下载下来后解压到我们刚刚挂载 C 盘的那个目录下,此时启动 DOSBox 就可以使用这些工具了。

工具的使用方法 链接到标题
编译运行一个汇编文件 链接到标题
step1: 在挂载的文件夹内新建一个文件 TEST.ASM
step2: 写入下面的数据
DATAS SEGMENT
    ;此处输入数据段代码  
    ;13、10都是十进制,分别表示垂直制表符、退格,'$'表示字符串结尾
    STRING  DB  'Hello World!',13,10,'$'
DATAS ENDS
STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    
    LEA  DX,STRING
    MOV  AH,9
    INT  21H
    
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
step3: 使用 dir 指令确保文件已在

step4: 使用 masm {fileName} 指令将代码文件(.asm)汇编成目标码文件(.obj)(这里输入三个空格即可)

step5: 使用 link {fileName} 指令将目标码文件链接为机器码文件(.exe)(这个 warning 不用管,我们的代码里没声明堆栈段导致的)

step6: 执行 TEST.EXE 文件即可

DOSBox 的调试功能 链接到标题
step1: 使用 debug {fileName} 指令进入调试模式

step2: 通过参数 r 查看、修改寄存器内的值

step3: 通过参数 u {lineNum} 查看汇编指令,行数省略时默认 10 行

step4: 通过参数 t 执行下一条汇编指令并打印各个寄存器的值

step5: 通过参数 d {memory_segmentation:offset_address} 查看指定内存单元

step6: 通过参数 q 退出调试模式

彩蛋 链接到标题
既然已经给 Mac 配上了 dos 环境,那古早的 dos 游戏就不得不品尝了。

