汇编语言实验环境搭建

本系列笔记参考王爽老师的《汇编语言 第三版》,这本书知识结构清晰,语言通俗易懂,是难得的好书。

我们编写的代码使用MASM汇编器,代码都是针对于8086处理器,采用16位实模式。有关32位保护模式的内容,将在操作系统相关章节介绍。

汇编语言简介

要想控制电子系统的硬件设备我们必须使用电信号,对于计算机的CPU也是如此,如今所有的CPU都是基于二进制数字信号工作的,即只用导线上的高低电平两种状态表示0和1,这种方式稳定可靠,久经考验。我们指挥CPU帮我们干活也必须使用二进制指令,但是如果对于我们人类来说,编写一长串01010001的代码,可读性极差,调试十分困难,因此汇编语被发明了出来。

汇编语言实际上就是用一些助记符代替了二进制指令,我们使用汇编语言编写代码,要做的事一目了然,可读性很好,汇编代码由汇编器翻译成二进制代码,CPU也能原原本本的遵照我们的意图去干活,因此使用汇编语言而不是直接用0和1编写程序是有利无害的好事。

为什么要学习汇编语言

学习汇编语言主要有以下好处:

  1. 了解直接操作计算机硬件的方式。
  2. 了解高级语言的底层实现。

学习完汇编你会发现对C语言的理解直接上升了一个高度,而C语言又是许多现代高级语言VM或解释器的基础。

MASM环境搭建

我们采用的是DosBox+MASM5.0汇编器的方式进行实验,这套工具基本上比较接近书中Windows2000的环境,包括:

  • DosBox0.74-2模拟器安装程序
  • MASM.EXE MASM5.0汇编器
  • DEBUG.EXE 调试工具
  • LINK.EXE 链接工具

hello world

装好DosBox后启动,即可看到DOS界面,盘符显示Z:\>,我们需要把我们的工作区挂载到DosBox中。

mount c e:\workspace\masm
c:

为了使用方便,我们直接把汇编器等工具解压到工作空间中。

我们主要用到的就是MASM.EXELINK.EXEDEBUG.EXE

下面编写一个简单的汇编程序,我们直接在DosBox外部使用文本编辑器编辑就行了,DosBox只负责编译运行和调试。

test.asm

assume cs:codeseg

codeseg segment

mov ax,1
add ax,1

mov ax,4c00h
int 21h

codeseg ends

end

编译链接时,分别输入MASMLINK,按提示操作即可。编译后会生成obj文件,链接后会生成exe可执行文件。

调试该程序可以使用以下命令。

debug test.exe

参考书中的debug各种命令,我们可以看看寄存器是如何变化的。

debug工具使用简介

这里我们简单介绍一下DEBUG.EXE工具的使用,方面快速查阅。

R命令:观察当前寄存器的值。

T命令:单步执行。

P命令:单步执行,但不会进入子程序和软中断。

D命令:查看内存区域的值,例如我们要查看偏移地址为0的内存,我们首先用R命令,发现DS寄存器值为075a,因此使用D命令:d 075a:0

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap