`bx`和`bp`之间的区别是什么?

10

bxbp在汇编中有什么区别?例如:

mov bx, 1h
mov bp, 1h
他们引用同一块内存吗?sssp也是这样吗?
2个回答

21

x86 中,寄存器 bxbp 是完全不相关的。它们唯一共同的地方是单词 base

  • bx (基址索引) 是一个通用寄存器(像 ax、cx 和 dx 一样),通常用作数据指针(用于数组等)
  • bp (基址指针) 通常用于指向堆栈中的某个位置(例如保存当前堆栈帧的地址)

同样,sssp 也是不同的。

  • ss (堆栈段) 是一个段寄存器(像 cs、ds 和 es 一样)。它保存堆栈使用的
  • sp (栈指针) 指向栈的顶部

如果栈为空,则 ss 指向与 sp 相同的位置,谢谢! - tina nyaa
@tina nyaa 就像我说的那样,sssp 是完全无关的(你需要点击 x86 分段的链接来了解)。spbp 之间有一定的关系。 - cnicutar
此外,在16位的情况下,行为会有一些不同。[BX]使用段DS,因此它指向地址DS:BX,而[BP]使用段SS,因此它指向SS:BP。 - PA.
你需要了解分段寻址。SS:SP 指向当前堆栈顶部。将 SS 左移 4 位并添加 SP,就可以得到 20 位线性地址。请参阅 http://en.wikipedia.org/wiki/X86_memory_segmentation 以获取更多信息。 - PA.

0

BP寄存器主要用于引用传递给子程序的参数变量。SS寄存器中的地址与BP中的偏移量相结合,可以得到参数的位置。BP还可以与DI和SI组合作为特殊寻址的基址寄存器。

BX:用于索引和间接寻址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接