众所周知,汇编语言不只一种…

如果学习的是8086CPU的汇编,推荐一本口碑很好的国内教材:汇编语言(第4版)王爽著 清华大学出版社出版

环境搭建

包括8086 MASM工具和DOSBox模拟器

8086 MASM

这是8086CPU架构下的一套微软宏编译的工具,可以用来编译连接汇编代码,并进行调试,主要包括以下EXE:

  • MASM.EXE
  • LINK.EXE
  • DEBUG.EXE

找了很久也没有找到官网的下载入口,有一些英文的文章都链接到了这里,应该没有太大问题(本人用的是老师上课的时候给的MASM工具 :zany_face: )。

DOSBox

只有8086的MASM工具还不行,因为那些工具只能运行在16位的操作系统上,而目前的绝大多数操作系统都是64位的了,所以我们需要一个模拟器,当然也可以整一个虚拟机但是不推荐也完全没必要。DOSBox,一个最初为了在现代操作系统中玩上古DOS游戏而编写的模拟器,简直就是为学习汇编而量身打造!拥有以下绝对优势,简直不要太好!

  • 体积小
  • 操作简单
  • 运行速度快
  • 出错少
dosbox.png
DOSBox挂载物理磁盘的命令

MASM工具使用

介绍三个常用工具的使用:MASM.EXE、LINK.EXE、DEBUG.EXE

MASM.EXE

将ASM汇编代码编译成OBJ

masm.png

LINK.EXE

将OBJ文件连接成EXE

link.png

DEBUG.EXE

调试EXE程序

一、R命令

1. 查看寄存器的值

debug-r-1.png

2. 修改某个寄存器的值

debug-r-2.png

二、D命令

查看内存,以及对应ASCII码

1. d不加参数默认从上一次d命令往下或者CS:IP开始往下查看128字节的长度

debug-d-1.png

左边为每行的起始内存地址,中间为每行对应地址的内容,右边为每个内容可显示的ASCII码字符

2. d 段地址:偏移地址,从指定位置开始往下查看128字节的长度

debug-d-2.png

3. 查看指定长度的内存

debug-d-3.png

三、E命令

以16进制字节形式编辑内存

debug-e.png

四、U命令

查看内存中的值和对应的汇编代码

debug-u-1.png

只输入u默认从下一条指令开始往下查看若干条指令

debug-u-2.png

五、A命令

以汇编指令的形式在内存中写入机器指令

debug-a.png

六、T命令

单步执行机器指令

debug-t-1.png

debug-t-2.png

上图为五、A命令截图中写入的汇编代码的单步执行结果,用来计算2的三次幂,计算结果写入AX寄存器中

七、P命令

跳过循环以及系统调用

debug-p.png

Leave a comment