Почему регистр rbx не влияет на значение al register?

Sean Brady спросил: 28 марта 2018 в 04:43 в: cpu-registers

Я пытаюсь научить свое программирование на языке ассемблера i86-84, и использую pdf-документ под названием "x86-84 Assembly Language Programming with Ubuntu". Есть одна часть, которая говорит о расширении конверсий, и она дает следующий пример:

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

По словам автора. 64-битный регистр rbx теперь имеет значение 50, но почему инструкция "mov rbx, 0" не устанавливает значение целого регистра в 0?

1 ответ

Есть решение
gabonator ответил: 28 марта 2018 в 04:53
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

Я обнаружил симпатичную картинку, которая объясняет, как совместно используются регистры:

Sean Brady ответил: 28 марта 2018 в 04:51
Спасибо! Я смотрел на код и думал, что регистры RAX и RBX - это одно и то же, лол