我想在程序集中编写一个简单的程序来添加和减去数字。我正在使用NASM来组装程序。当我使用gdb评估程序时,寄存器没有我期望的值,我无法弄清楚原因。这是我的代码。现在,我只是想弄清楚如何将一个数字存储到一个变量中,然后将该变量移动到一个寄存器中,因为我的代码甚至没有这样做。用汇编语言将一个数字存储到一个变量中
SECTION .data
var1: db 0x1 ; assign 1 to var1
var2: db 0x2 ; assign 4 to var2
var3: db 0x4 ; assign 6 to var3
var4: db 0x8 ; assign 8 to var4
SECTION .bss
; empty for now
SECTION .text
global _start
_start:
nop ; keep gdb happy
mov eax, [var1] ; keep gdb happy
... more code ...
mov eax, 1 ; clean up
mov ebx, 0
int 80H
现在,当我在gdb打开我的计划,并期待在eax中首次转让后,该值是0x10806,而不仅仅是为0x1。这是为什么发生?
这么简单,然而却是我逼疯了一个小时...谢谢! – Sabien 2014-10-05 23:38:31