Чем вы знаете, что в «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?

Ответы на вопрос(2)

Ваш ответ на вопрос