大二选了汇编这门神奇的课,学了一个多月都是纸上谈兵,很是不爽。最近趁着闲给自己的 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 游戏就不得不品尝了。