为什么 rbx 寄存器不影响 al 寄存器的值?

Why does the rbx register not affect the value of the al register?

我正在尝试自学 x86-84 汇编语言编程,并且正在使用名为 "x86-84 Assembly Language Programming with Ubuntu" 的 pdf。有一个部分在谈论扩大转化率,它给出了这个例子:

mov al, 50
mov rbx, 0
mov bl, al

据作者介绍。 64 位 rbx 寄存器现在的值为 50,但指令 "mov rbx, 0" 为何没有将整个寄存器的值设置为 0?

first line: al=50
second line: rbx=0
third line: set the lowest byte of rbx register to 50
result: rbx=50, as well as bx=50 and bl=50

我找到了很好的图片来解释寄存器是如何共享的:

通过更改 ahal 寄存器,您还可以更改 AX、EAX 和 RAX 寄存器