assembly X在EAX、EBX、ECX ......汇编中是什么意思?

xoefb8l8  于 2023-02-23  发布在  其他
关注(0)|答案(6)|浏览(204)

谷歌没有显示结果,
有人知道吗?

kwvwclae

kwvwclae1#

X表示***对***,至少可以追溯到8080。它有8位寄存器B、C、D、E、H、L(以及其他),也可以成对使用(BC、DE和HL)。BC和DE对主要用于16位算术;HL对通常保存内存地址。X用于***对***的一些示例:

LXI  D,12ABH    ; "load pair immediate"
DCX  B          ; "decrement pair"
STAX D          ; "store A (indirect) at pair"

快进到8086。它有寄存器AL、AH、BL、BH、CL、CH、DL、DH,与8080类似,可以成对使用:AX、BX、CX、DX。
正如其他人所指出的,32位寄存器名称中的E表示 * 扩展 *。

tpgth1q7

tpgth1q72#

据我所知,没有。它代表通用寄存器。
16位AX寄存器可编址为AH(高字节)和AL(低字节)。
EAX寄存器是AX寄存器的32位版本。E代表扩展。

6mw9ycah

6mw9ycah3#

在8086上,AX寄存器是AH和AL的组合。同样,BX是BH和BL等。在80386上,英特尔不是将16位寄存器组合成32位寄存器,而是给每个寄存器增加了16位。名称“AL”仍然指第一个字母命名的寄存器的位0-7,“AH”指位8-15,“AX”指位0-15;名称“EAX”现在指寄存器的所有32位。
有趣的是,大多数其他16位和32位处理器并不提供任何只访问寄存器高位或低位的等效方法,允许这种访问的成本(硬件复杂性和指令编码位)都是巨大的,在当今时代,将寄存器的一个8位部分添加到另一寄存器的8位部分的能力远不如可能投入此硬件或指令编码空间的许多其它用途有用。另一方面,当这种能力存在时,仍然存在有用的时候。

balp4ylt

balp4ylt4#

正如Mihai所说,这只是一个命名惯例。
然而,考虑到“X”经常用于“填充你的值”,并且通常被数学家用作方程中选择的第一个变量名,并且那些特定的寄存器是通用的(与扩展(32位)堆栈指针ESP或扩展指令指针EIP相反),这可能就是为什么选择X而不是选择“B”的原因。

1wnzp6jl

1wnzp6jl5#

我能想到的一个可能的原因是表示它没有“正常”状态。当谈论电子设备中的串行通信时,如果其中一条数据线可以是任何东西,你可以说它的状态是X,因为它既不是/都不是/要么0要么1。

vm0i2vca

vm0i2vca6#

下面简要说明每个x86通用寄存器的含义:

  • EAX:“扩展累加器”-用于算术和逻辑运算,以及存储函数的返回值。
  • EBX:“扩展基”-通常用作内存数据段中数据的指针。
  • ECX:“扩展计数器”-通常用于循环和字符串操作,以及存储函数参数。
  • EDX:“扩展数据”-通常用于I/O操作和存储函数参数。
  • ESI:“扩展源索引”-通常用作字符串操作中源操作数的指针。
  • EDI:“扩展目标索引”--通常用作字符串操作中目标操作数的指针。
  • EBP:“扩展基指针”-通常用作指向当前堆栈帧基的指针。
  • ESP:“扩展堆栈指针”-通常用作指向当前堆栈帧顶部的指针。

相关问题