Assembly 带dwords的emu8086 DUP指令?

Assembly 带dwords的emu8086 DUP指令?,assembly,x86-16,emu8086,Assembly,X86 16,Emu8086,我在理解DUP指令时遇到问题。 使用以下代码初始化数组时: t1 dd 2 dup(25ABh), 12h 我可以看到存储在数据段中的以下数据: 14 00 00 00 12 00 00 00 为什么它不是AB 25 00 AB 25 00 12 00 00 如果我删除dup指令并改为写入t1 dd 25ABh,12h,我将得到预期的 AB 25 00 12 00 00 在emu8086的GUI中: 我做错了什么?dup不是一条指令,它是一条汇编指令,它的行为可能因汇编程序而异。请告诉我们

我在理解DUP指令时遇到问题。
使用以下代码初始化数组时:

t1 dd 2 dup(25ABh), 12h
我可以看到存储在数据段中的以下数据:

14 00 00 00 12 00 00 00
为什么它不是AB 25 00 AB 25 00 12 00 00

如果我删除dup指令并改为写入
t1 dd 25ABh,12h
,我将得到预期的
AB 25 00 12 00 00

在emu8086的GUI中:


我做错了什么?

dup
不是一条指令,它是一条汇编指令,它的行为可能因汇编程序而异。请告诉我们您使用的是什么汇编程序。8086,在EMU8086中运行,我认为您使用它是正确的;emu8086可能坏了。我没有在本地安装JWASM(一个使用MASM风格指令的开源汇编程序),但它是开着的。(但我必须编写一个
\u start
来进行Linux写系统调用,因此00字节正在取消打印。不过,我确实看到
«%«%«%
,所以在使用可打印的
'a'
而不是12h之前,有一些内容重复了两次)(顺便说一句,这不是有人在emu8086中遇到的第一个bug,也不是关于堆栈溢出的帖子。它不是一个很好的汇编程序,AFAIK也不再被开发/维护了。)这是一个带有
DD
指令的emu8086 bug(它应该与
DW
一起工作)。当数据大小为双字(DD)时,您必须避免使用DUP。如果您使用真正的MASM或兼容的汇编程序,它将按照您的预期工作。