这两个代码会做同样的事情吗?

时间:2016-03-20 11:19:03

标签: assembly x86

var1 db 20

;--------code 1-------
 lea bx, var1
mov byte ptr[bx],40

;--------code 2-------
lea bx,var1
mov [bx], 40

这两个都是有效的吗?同样的?如果是,那么我们为什么要使用byte ptr?

1 个答案:

答案 0 :(得分:2)

不,他们不是。

第一段代码包含大小说明符:byte ptr。如果没有这个,没有任何东西可以给汇编程序一个关于源和目标大小的提示。虽然可能某些情况下(例如,各种指令控制代码的整体组装)发现它们以相同的方式执行,但这不是依赖于

可能看起来含糊不清的是,如果没有大小说明符,您可以将其写为mov var1, 40。但是,如果你要反汇编产生的代码,你会发现汇编程序使用来自var1 db行的提示来处理场景背后的事情,这表明这是一个字节而不是一个字,dword,换句话说,汇编程序实际上会产生:

mov byte ptr [var1], 40