Search code examples
windowsmemoryassemblymasm

Assembly - Moving data from Register to Memory in MASM


I am trying to move stuff from a register to a variable in .CODE, but trying to do so makes my program start over in an infinite loop (no crash and no error message, but obviously broken). I don't understand what I'm doing wrong. Here is the beginning of my code where I am trying to move data; the program never even gets past this part when I include it:

.CODE
screenX DWORD 0
screenY DWORD 0

...

ProcName PROC

mov ebx, edx        ;; Copy srcBitmap into ebx

mov eax, edi        ;; Take given y-location (edi)
mov edx, (EECS205BITMAP PTR [ebx]).dwHeight
shr edx, 1          ;; Subtract dwHeight/2 to center
sub eax, edx
mov screenY, eax    ;; Program jumps back to beginning with no error message

Seems like I'm missing something obvious, anyone have a clue?


Solution

  • Your application's code segment (which is actually it's .text section under Windows) isn't writable. If you want to modify these variables you need to put them in the data segment.