从0学习汇编语言(4)第一个程序

446 阅读2分钟

《从0学习汇编语言目录》

第四章 第一个程序

4.0 mac上配置dosbox

mac上安装debug环境
下载DosBox和常用的汇编工具,在下方的百度云中下载。
链接: https://pan.baidu.com/s/1s-Ot_C7yVqQ7g3NI0kB32g 提取码: r2l2
DosBox也可以在官网下载`https://www.dosbox.com/`
  1. 下载后解压,把DosBox放入Mac的应用程序中,然后解压常用汇编工具,压缩后放到任意路径。例如~/DosBoxToos
  2. 打开DosBox 执行指令mount C ~/DosBoxTools 挂载~/DosBoxTools为C盘
  3. 在DosBox中执行C:跳转到C盘
  4. 现在就可以执行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 编辑源程序

  1. 在dosbox中执行edit
  2. 其他ide编辑也可以

4.4 编译

假设MASM.exe 在C:\目录下

  1. 输入masm.exe按回车执行,可看到如下界面
  2. 输入刚才保存的源码位置+文件名,例如c:\1.asm
  3. 表示此步骤表示输出的文件为1.obj,再此可以输入其他名称,或者不输入直接按回车
  4. 会出现NUL.LST 生成目标文件的中间结果,可直接按回车(按回车省略,也可以在此输入文件名保存)
  5. 出现的NUL.CRF 生成交叉文件,可直接按回车(按回车省略,也可以在此输入文件名保存)
  6. 此时会在当面目录生成1.obj(无error情况)

4.5链接

假设Link.exe 在C:\目录下

  1. 执行link.exe 按回车执行
  2. 此时输入刚才生成的obj名称,按回车结束(这里是1.obj)
  3. 生成exe文件
  4. 生成MAP文件
  5. 生成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 谁将执行文件中的程序装载并使它运行

  1. 在DOS中直接执行1.exe时,是正在运行的command将1.exe载入内存
  2. command设置CPU的CS:IP指向程序的第一条指令,使程序运行
  3. 程序运行结束后,返回到command中,CPU继续运行Command

4.9程序执行过程的跟踪

可以使用在dosbox中使用debug 1.exe来调试

debug中

  1. U查看其他指令
  2. T单步执行
  3. Q退出

第五章 [BX]和Loop指令