一个寄存器如何有地址?

3
根据资料,寄存器是CPU中具有小存储空间的地方(例如,在16位CPU上为16位)。那么CPU寄存器如何拥有地址?如果它不在内存中而在CPU上,我们如何能够添加位移量到它上面?
举个例子:
mov ax, [bx+1000h]

你正在将位移添加到BX寄存器内包含的内存地址,而不是从寄存器BX移动1000h字节。 - Cipi
1
通常寄存器没有内存地址,但有些寄存器有,例如AVR微控制器中的堆栈指针SP。 - starblue
2个回答

6

x86寄存器只能通过名称进行寻址。表达式bx+1000h的意思是“寄存器bx中的值加上1000h”,结果被解释为内存地址(通过[...]符号),而不是某个寄存器空间。

整个表达式的解释是:“从bx指向的地址后面1000h字节处加载16位数据到ax寄存器中。”


0

这是通过将bxcontent解释为一个地址,然后用偏移量进行位移来完成的。

所以如果bx1000h,那么ax的内容将存储在内存位置2000h


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