1. 内存单元作为第一个操作数或唯一的操作数时的情形:
1) 前面讲过当内存访问作为第一个操作数时不能使用之前说过的法则,即使第二个操作数是寄存器也不行;
2) 这个时候就需要显式指明内存单元的类型了,可以使用byte ptr或word ptr操作符来指明内存单元是字节型的还是字型的;
!注意:这两个操作符是编译器提供的操作符,并不是汇编指令,不能直接一步翻译成二进制码;
3) 使用的情形:
i. 首先是第一个操作数必须是内存单元;
ii. 第二个操作数可以是寄存器或立即数,不能两个操作数都是内存单元,否则会报错的!
iii. 如果指令是单操作数时也行;
!注意:即使第一个操作数是寄存器而第二个是内存也可以使用,但是不建议这样做,因为这种情况是可以自动推断的,不要多此一举;
4) 示例:
assume cs:code
code segment
mov byte ptr [bx], 12
add word ptr [3FH + bp], cx
sub byte ptr [bp][si][9H], cl
and word ptr 0FCH[bx], 1001B
or byte ptr [bp + 9], bh
inc word ptr [bx]
mov ax, 4C00H
int 21H
code ends
end
!注意:还是不能将[立即数]作为第一个