第四章 第一个程序
4.0 mac上配置dosbox
mac上安装debug环境
下载DosBox和常用的汇编工具,在下方的百度云中下载。
链接: https://pan.baidu.com/s/1s-Ot_C7yVqQ7g3NI0kB32g 提取码: r2l2
DosBox也可以在官网下载`https://www.dosbox.com/`
- 下载后解压,把DosBox放入Mac的
应用程序
中,然后解压常用汇编工具
,压缩后放到任意路径。例如~/DosBoxToos
- 打开DosBox 执行指令
mount C ~/DosBoxTools
挂载~/DosBoxTools
为C盘 - 在DosBox中执行
C:
跳转到C盘 - 现在就可以执行debug命令了
其中第二步,可以在
~/Library/Preferences/Dosbox 0.74 Preferences
中配置,避免每次都要挂载。
debug常用指令
R: 查看、改变CPU寄存器的内容
D: 查看内存中的内容
E: 改写内存中的内容
U: 将内存中的机器指令翻译成汇编指令
T: 执行一条机器指令
A: 以汇编的格式在内存中写入一条机器指令
4.1 一个元层序从写出到执行的过程
源文件-> 编译链接-> 执行
4.2源程序
assume cs:codesg ;表示codesg在代码段
codesg segment ;自定义一个叫codesg的段
mov ax,0123 ;代码
mov bx,0456
add ax,bx
codesg ends ;标记为自定义段结束
end ;标记为程序结束
4.3 编辑源程序
- 在dosbox中执行edit
- 其他ide编辑也可以
4.4 编译
假设MASM.exe 在C:\目录下
- 输入masm.exe按回车执行,可看到如下界面
- 输入刚才保存的源码位置+文件名,例如c:\1.asm
- 表示此步骤表示输出的文件为1.obj,再此可以输入其他名称,或者不输入直接按回车
- 会出现NUL.LST 生成目标文件的中间结果,可直接按回车(按回车省略,也可以在此输入文件名保存)
- 出现的NUL.CRF 生成交叉文件,可直接按回车(按回车省略,也可以在此输入文件名保存)
- 此时会在当面目录生成1.obj(无error情况)
4.5链接
假设Link.exe 在C:\目录下
- 执行link.exe 按回车执行
- 此时输入刚才生成的obj名称,按回车结束(这里是1.obj)
- 生成exe文件
- 生成MAP文件
- 生成LIB文件
4.6 简化编译与链接
masm C:\1.asm ;编译生成1.obj可执行文件
link C:\1.obj ;链接生成1.exe可执行文件
4.7 1.exe的执行
假设1.exe 在c:\目录下
输入1.exe执行
4.8 谁将执行文件中的程序装载并使它运行
- 在DOS中直接执行1.exe时,是正在运行的command将1.exe载入内存
- command设置CPU的CS:IP指向程序的第一条指令,使程序运行
- 程序运行结束后,返回到command中,CPU继续运行Command
4.9程序执行过程的跟踪
可以使用在dosbox中使用debug 1.exe
来调试
debug中
U
查看其他指令T
单步执行Q
退出