命令非法或合法(大会8086)

时间:2014-01-25 18:08:24

标签: assembly x86-16

  DSEG SEGMENT 

   A1 DW 12
   A2 DB 2 DUP (12H,34,'2','B')
DSEG ENDS

我有这两个命令

1. MOV WORD PTR A2+1[BX+DI],SI
  2. NOT BYTE PTR A1+1[BX+SI][DI]

他们是不是非法?

1 个答案:

答案 0 :(得分:1)

2是非法的

  • NOT 是一个一元指令,因此只需要一个操作数(它就可以'到位')
  • 即使是二进制,你的操作数大小也不匹配 - BYTE PTR 是一个字节(8位)操作数,而 DI 是一个字(16位) )注册操作数。

无论如何,说明都没有多大意义。你想做什么?

通过更新,第二条指令具有非法语法。您似乎可能尝试使用三个寄存器进行地址计算,但是没有办法做到这一点 - 地址可以引用单个基址寄存器(BP或BX)加上单个索引寄存器(DI或SI)加上可选位移(常数地址)。