var1 db 20
;--------code 1-------
lea bx, var1
mov byte ptr[bx],40
;--------code 2-------
lea bx,var1
mov [bx], 40
这两个都是有效的吗?同样的?如果是,那么我们为什么要使用byte ptr?
答案 0 :(得分:2)
不,他们不是。
第一段代码包含大小说明符:byte ptr
。如果没有这个,没有任何东西可以给汇编程序一个关于源和目标大小的提示。虽然可能在某些情况下(例如,各种指令控制代码的整体组装)发现它们以相同的方式执行,但这不是依赖于
可能看起来含糊不清的是,如果没有大小说明符,您可以将其写为mov var1, 40
。但是,如果你要反汇编产生的代码,你会发现汇编程序使用来自var1 db
行的提示来处理场景背后的事情,这表明这是一个字节而不是一个字,dword,换句话说,汇编程序实际上会产生:
mov byte ptr [var1], 40