使用nasm将号码移入内存
问题描述:
我是nasm
编程的新手。我想整数值存储在变量使用nasm将号码移入内存
SECTION .bss
temp: RESB 8
SECTION .text
global _start
_start:
mov eax,4
mov [temp],eax
这将移动我integer
值来启动临时位置的。但我想将其移入2nd location
。由于整数占用2个字节,我不想在开始时存储4
,而是在下一个位置存储,即temp+2
。我怎样才能做到这一点?另外,当检索返回值时,我将如何从temp+2
位置检索,假设我有4个临时整数,每个占用2个字节。
答
要存储的2字节整数,使用ax
寄存器代替eax
(ax
对应于eax
2个最低字节)。
要在temp
+2,店中店在temp
+2 :)
所以:
mov [temp+2], ax
您同样可以检索值逼到ax
寄存器:
mov ax, [temp+2]
或者,您可以使用零扩展名或签名扩展名移动到eax
:
movzx eax, word [temp+2]
movsx eax, word [temp+2]
(如果该值是无符号的,则使用第一个,如果是带符号的,则使用第一个)。
存储立即数时不需要通过寄存器。你可以简单地说'mov word [temp + 2],4'。 – Michael