Assembly 内存中的变量未由存储更新为该符号

Assembly 内存中的变量未由存储更新为该符号,assembly,x86-16,emu8086,memory-segmentation,Assembly,X86 16,Emu8086,Memory Segmentation,当我运行emu8086时,这个结果(ans)返回给我0..为什么 data segment ans dw ? ends stack segment dw 128 dup(0) ends code segment start: mov ax,@data mov dx,ax mov ax,2 mov bl,2 mul bl mov ans,ax mov ax, 4c00h int 21h ends end start 这部分代码必须设置DS段寄存器。 你打错了,改写了DX

当我运行emu8086时,这个结果(ans)返回给我0..为什么

data segment
ans dw ? 
ends

stack segment
    dw   128  dup(0)
ends

code segment
start:
mov ax,@data
mov dx,ax
mov ax,2
mov bl,2
mul bl
mov ans,ax
mov ax, 4c00h
int 21h  
ends
end start
这部分代码必须设置
DS
段寄存器。
你打错了,改写了
DX

mov ax, @data
mov ds, ax
由于此错误,
AL
*
BL
乘法(4)的结果仍然由
mov ans,ax
写入内存,但它没有写入数据段。它重写了ProgramSegmentPrefix的第一个单词,因为
DS
指向这个单词

mov ax, @data
mov ds, ax