使用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个字节。

+0

存储立即数时不需要通过寄存器。你可以简单地说'mov word [temp + 2],4'。 – Michael

要存储的2字节整数,使用ax寄存器代替eaxax对应于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] 

(如果该值是无符号的,则使用第一个,如果是带符号的,则使用第一个)。