跳转到内容

微处理器设计/汇编语言

来自维基教科书,开放书籍,开放世界

汇编器

[编辑 | 编辑源代码]

汇编器接收人类可读的汇编代码并生成机器代码。

汇编语言结构

[编辑 | 编辑源代码]

现存许多不同的汇编语言,但它们都有一些共同点。它们都直接映射到底层硬件 CPU 指令集。

CPU 指令集
是一组 CPU 理解的二进制代码/指令。根据 CPU,指令可以是一个字节、两个字节或更长。指令代码通常后跟一个或两个操作数。
指令代码 操作数 1 操作数 2

指令数量取决于 CPU。

由于二进制代码难以记忆,每个指令都有一个称为助记符的名称。例如,'MOV' 可用于移动指令。

MOV A, 0x0020

上面的指令将寄存器 A 的值移动到指定地址。

一个简单的汇编器将把 'MOV A' 翻译成其 CPU 的指令代码。

不能假设汇编语言可以直接移植到其他 CPU。每个 CPU 都有自己的汇编语言,尽管同一系列中的 CPU 可能会支持有限的移植性

加载和存储

[编辑 | 编辑源代码]

这些指令告诉 CPU 将数据从内存移动到 CPU 的寄存器,或将数据从 CPU 的寄存器移动到内存。

寄存器
是位于 CPU 内部的专用内存,可以在其中执行算术运算。

可以使用 CPU 的寄存器执行算术运算

  • 增加 CPU 寄存器之一的值
  • 减少 CPU 寄存器之一的值
  • 将值添加到寄存器
  • 从寄存器中减去值
  • 乘以寄存器值
  • 除以寄存器值
  • 移位寄存器值
  • 旋转寄存器值

在跳转指令期间,程序计数器加载一个新的地址,该地址不一定是下一个顺序指令的地址。跳转后,程序执行从内存中的新位置继续。

相对跳转
指令的操作数告诉程序计数器应该增加或减少多少字节。
绝对跳转
指令的操作数被复制到程序计数器;操作数是执行应该继续的绝对内存地址。

在分支期间,程序计数器加载多个新值之一,具体取决于某些指定的条件。分支是一系列条件跳转。

一些 CPU 具有跳过指令。如果寄存器为零,则跳过下一条指令,否则执行下一条指令,该指令可以是跳转指令。因此,可以通过将跳过和跳转指令一起使用来完成分支。

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书