微处理器设计/汇编语言
外观
< 微处理器设计
现存许多不同的汇编语言,但它们都有一些共同点。它们都直接映射到底层硬件 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 具有跳过指令。如果寄存器为零,则跳过下一条指令,否则执行下一条指令,该指令可以是跳转指令。因此,可以通过将跳过和跳转指令一起使用来完成分支。