x86笔记-第 3 章 汇编语言和汇编软件

汇编语言简介

指令和被指令引用的数据在内存中都是一些或高或低的电平,每一个电平都可以看成是一个二进制位(0 或者 1),8个二进制位形成一字节。
要解读内存中的东西,最好的办法就是将它们按字节转换成数字的形式。

比如,下面这些数字就是存放在内存中的8086指令,我们用的是十六进制:

B8 3F 00 01 C3 01 C1

即使是很有经验的技术人员,要想用这种方式来编写指令,也是很困难的,而且很容易出错。所以,在第一个处理器诞生之后不久,为了克服机器指令难以书写和理解的缺点,人们想到可以用一些容易理解和记忆的符号,也就是助记符,来描述指令的功能和操作数的类型,这就产生了 汇编语言(Assembly Language)

这样,上面那些指令就可以写成:

mov ax,3FH
add bx,ax
add cx,ax

指令的格式

汇编语言对指令的大小写没有特别的要求。所以你完全可以这样写:

MOV AX,3FH
mov ax,3fh
MOV ax,3FH
mov AX,3fh

在很多高级语言中,如果要指示一个数是十六进制数,通常不采用在后面加“H”的做法,而是为它添加一个“0x”前缀。像这样:

mov ax,0x3f

在汇编语言中,使用十进制数是最自然的。因为 3FH 等于十进制数 63,所以你可以直接
这样写:

mov ax,63

当然,如果你喜欢,也可以使用二进制数来这样写:

mov ax,00111111B

一定要看清楚,在那串“0”和“1”的组合后面,跟着字母“B”,以表明它是一个二进制数。

NASM 编译器

每种处理器都可能会有自己的汇编语言编译器,而对于同一款处理器来说,针对不同的平台(比如 Windows 和 Linux),也会有不同版本的汇编语言编译器。

现存的汇编语言编译器有多种,用得比较多的有 MASM、FASM、TASM、AS86、GASM等,每种汇编器都有自己的特色和局限性。特别是,有些还需要付费才能使用。不同于前面所列举的这些,在本书中,我们用的是另一款叫做 NASM 的汇编语言编译器。

资料参考

  • 《x86 汇编语言:从实模式到保护模式》
发布了29 篇原创文章 · 获赞 42 · 访问量 8507

猜你喜欢

转载自blog.csdn.net/qq_43068326/article/details/104296285
今日推荐