Assembly 命令非法或合法(Assembley 8086)

Assembly 命令非法或合法(Assembley 8086),assembly,x86-16,Assembly,X86 16,我有两个命令 DSEG SEGMENT A1 DW 12 A2 DB 2 DUP (12H,34,'2','B') DSEG ENDS 它们是否非法?2是非法的 NOT是一条一元指令,因此只接受一个操作数(它“就地”工作) 即使是二进制操作数,操作数大小也不匹配--字节PTR是字节(8位)操作数,而DI是字(16位)寄存器操作数 不管怎样,这些说明没有多大意义。你想干什么 更新后,第二条指令的语法不合法。看起来您可能试图使用三个寄存器进行地址计算,但没有办法做到这一点—

我有两个命令

  DSEG SEGMENT 

   A1 DW 12
   A2 DB 2 DUP (12H,34,'2','B')
DSEG ENDS
它们是否非法?

2是非法的

  • NOT是一条一元指令,因此只接受一个操作数(它“就地”工作)
  • 即使是二进制操作数,操作数大小也不匹配--字节PTR是字节(8位)操作数,而DI是字(16位)寄存器操作数
不管怎样,这些说明没有多大意义。你想干什么


更新后,第二条指令的语法不合法。看起来您可能试图使用三个寄存器进行地址计算,但没有办法做到这一点——一个地址可以引用一个基址寄存器(BP或BX)加上一个索引寄存器(DI或SI)再加上一个可选位移(常量地址)。

我希望您的汇编程序直接告诉您。你为什么问我们而不是它?[我认为你的NOT指令在任何情况下都是语法错误的]。@IraBaxter为什么它是错误的?
1. MOV WORD PTR A2+1[BX+DI],SI
  2. NOT BYTE PTR A1+1[BX+SI][DI]