перемещение из памяти для регистрации и чтения в GDB - PullRequest
0 голосов
/ 30 апреля 2020
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

Почему это происходит?

...