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