section .data
price dd 49,98,29
section .text
global _start
_start:
nop
; Put your experiments between the two nops...
mov eax,price
mov ebx,[price]
mov ecx,[price+4]
mov edx, [price+8]
; Put your experiments between the two nops...
nop
Я понимаю, что 49,98,29 - это байт, кроме. При обращении к цене будет выведено только 49. Я должен переместить цену на 1 байт, чтобы получить 98, и 2 байта, чтобы получить 29.
В GDB я вижу, что регистр edx имеет десятичное число 29, ecx 98 и ebx 49. Однако когда я проверяю регистр с x/3dw $edx
, я получаю
Cannot access memory at address 0x1d
Почему он не показывает 29?
Обновление:
Я пытаюсь чтобы увидеть вывод кода ниже
section .data
price db 49,98,29
section .text
global _start
_start:
nop
; Put your experiments between the two nops...
mov eax, price
mov ebx,[price]
mov ecx,[price+1]
mov edx, [price+2]
; Put your experiments between the two nops...
nop
x/db $ebx
дает
0x1d6231: Cannot access memory at address 0x1d6231
и
(gdb) p $ebx
$5 = 1925681
Почему это происходит?