Assembly 使用nasm将数字移动到内存中
我是Assembly 使用nasm将数字移动到内存中,assembly,nasm,Assembly,Nasm,我是nasm编程新手。我想在变量中存储整数值 SECTION .bss temp: RESB 8 SECTION .text global _start _start: mov eax,4 mov [temp],eax 这将把我的整数值移动到临时位置的开始处。但是我想把它移到第二个位置。由于整数占用2个字节,我想存储4不是在开始位置,而是在下一个位置,即temp+2。我该怎么做?另外,在检索回值时,如果在temp中有4个整数,每个整数占用2个字
nasm
编程新手。我想在变量中存储整数值
SECTION .bss
temp: RESB 8
SECTION .text
global _start
_start:
mov eax,4
mov [temp],eax
这将把我的
整数
值移动到临时位置的开始处。但是我想把它移到第二个位置。由于整数占用2个字节,我想存储4
不是在开始位置,而是在下一个位置,即temp+2
。我该怎么做?另外,在检索回值时,如果在temp中有4个整数,每个整数占用2个字节,那么我如何才能仅从temp+2
位置检索。要存储2字节整数,请使用ax
寄存器而不是eax
(ax
对应于eax
的2个最低字节)
要存储在temp
+2,请存储在temp
+2:)
因此:
类似地,您可以仅将值检索到ax
寄存器中:
mov ax, [temp+2]
或者您可以使用零扩展名或符号扩展名移动到eax
:
movzx eax, word [temp+2]
movsx eax, word [temp+2]
(如果值是无符号的,则使用第一个,如果值是有符号的,则使用第二个)。要存储2字节整数,请使用
ax
寄存器而不是eax
(ax
对应于eax
的最低两个字节)
要存储在temp
+2,请存储在temp
+2:)
因此:
类似地,您可以仅将值检索到ax
寄存器中:
mov ax, [temp+2]
或者您可以使用零扩展名或符号扩展名移动到eax
:
movzx eax, word [temp+2]
movsx eax, word [temp+2]
(如果值是无符号的,则使用第一个值;如果值是有符号的,则使用第二个值)。存储立即数时,无需经过寄存器。您可以简单地说
mov-word[temp+2],4
。存储立即数时不需要经过寄存器。你可以简单地说mov-word[temp+2],4
。