Register jumping to high numbers when reading values from memory Assembly i386

25 Views Asked by At

I've been trying to learn assembly. So for practice I'm trying to code snake, and I've run into an issue.

Whenever I try to load the value of direction_offset into a register it just becomes absurdly large. I'm expecting it to become 3 but instead if becomes 251785475. Could anyone explain to me why this happens?

Snippet from .data section:

direction_offset db 3
direction db -15,1,15,-1
        ; grab offset to new position from array
        mov esi, [direction_offset]
        mov edi, [direction + esi]

gdp output:

198     mov esi, [direction_offset]
(gdb) info register esi
esi            0xe1                225
(gdb) step
199     mov edi, [direction + esi]
(gdb) info register esi
esi            0xf01f103           251785475
(gdb)

In case it matters, I compiled the code using nasm like this:

#compile
nasm -g -f elf -F dwarf $asmname
ld -m elf_i386 -o $name $outputname
0

There are 0 best solutions below