Assembly NASM-环路中的分段故障

Assembly NASM-环路中的分段故障,assembly,segmentation-fault,nasm,Assembly,Segmentation Fault,Nasm,我得到了两个类似的循环,其中我将地址写入eax,然后从eax写入数据段。第一个循环工作,第二个循环返回segfault。为什么第二个循环是错误的而第一个不是 section .data n1: db 1 n2: db 1 [……] db声明一个字节(8位),该字节不足以容纳eax(32位)。声明每个变量,使其有足够的空间容纳您将尝试写入/读取的最大值 例如: ; declare n1 and n2 as doublewords with initial values of 1 n1: dd 1

我得到了两个类似的循环,其中我将地址写入eax,然后从eax写入数据段。第一个循环工作,第二个循环返回segfault。为什么第二个循环是错误的而第一个不是

section .data
n1: db 1
n2: db 1
[……]


db
声明一个字节(8位),该字节不足以容纳
eax
(32位)。声明每个变量,使其有足够的空间容纳您将尝试写入/读取的最大值

例如:

; declare n1 and n2 as doublewords with initial values of 1
n1: dd 1
n2: dd 1   

至于为什么其中一个崩溃而另一个没有;从您展示的代码中很难说您不知道执行环境。但第二次写入将1字节进一步覆盖到未分配的空间(从外观上看),这可能足以使它崩溃,即使第一次写入没有导致崩溃

; declare n1 and n2 as doublewords with initial values of 1
n1: dd 1
n2: dd 1