汇编语言 - 乘法

时间:2013-11-20 19:21:09

标签: assembly x86

我创建了变量:

Y sword 8
Z sword 20
T sword 68
B sword ?

我必须评估以下内容,B = 4T - (8 + Z)+ Y

我真的不熟悉如何做到这一点。有人可以帮我理解吗?

2 个答案:

答案 0 :(得分:1)

假设剑是签名的16位数字:

movsx eax,sword ptr T
movsx ebx,sword ptr Y
shl eax,2            ; faster than imul
movsx edx,sword Z
add eax,ebx
add edx,8
sub eax,edx
mov sword ptr B,ax

然后优化一点:

movsx eax,sword ptr T
movsx ebx,sword ptr Y
movsx edx,sword Z
lea eax,[ebx+eax*4]   ; less code than shr
add edx,8
sub eax,edx
mov sword ptr B,ax    

答案 1 :(得分:-1)

仍然学习汇编的重要概念时,一种简单的方法是用C / C ++编写程序并让编译器输出汇编。从那里,研究语法,看看它是否有意义。这实际上就是我学习x86程序集的方式......