Чем вы знаете, что в «al» у вас есть менее значимая 8-битная часть значения, в «ah» наиболее значимая 8-битная часть младших 16 бит. Нет возможности получить доступ к одиночным байтам на старших 16 битах, кроме, конечно, чтения всего 32-битного значения.
ужна помощь в понимании порядка байтов внутри регистров процессора процессоров x86. Я написал эту небольшую программу сборки:
section .data
section .bss
section .text
global _start
_start:
nop
mov eax, 0x78FF5ABC
mov ebx,'WXYZ'
nop ; GDB breakpoint here.
mov eax, 1
mov ebx, 0
int 0x80
Я запустил эту программу в GDB с точкой останова на строке № 10 (прокомментировано в источнике выше). На этой точке останова,info registers
показывает значениеeax=0x78ff5abc
а такжеebx=0x5a595857
.
Поскольку коды ASCII для W, X, Y, Z равны 57, 58, 59, 5A соответственно; и Intel имеет младший порядок байтов, 0x5a595857 выглядит как правильный порядок байтов (сначала младший байт). Почему тогда не вывод для eax регистра0xbc5aff78
(сначала младший байт числа 0x78ff5abc) вместо0x78ff5abc
?