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

Variable in memory not updated by a store to that symbol

当我运行emu8086时,这个结果(ans)return对我来说是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
mov ax,@data
mov dx,ax

这部分代码必须设置 DS 段寄存器。
您打错了字,改写了 DX

mov ax, @data
mov ds, ax

由于这个错误,AL * BL 乘法 (4) 的结果仍由 mov ans,ax 写入内存,但没有进入 数据段。它覆盖了 ProgramSegmentPrefix 的第一个单词,因为那是 DS 指向的地方。