Assembly 汇编语言乘法

Assembly 汇编语言乘法,assembly,x86,Assembly,X86,我已经创建了变量: Y sword 8 Z sword 20 T sword 68 B sword ? 我必须计算如下,B=4T-(8+Z)+Y 我真的不知道怎么做。有人能帮我理解吗?假设剑是有符号的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 sw

我已经创建了变量:

Y sword 8
Z sword 20
T sword 68
B sword ?
我必须计算如下,B=4T-(8+Z)+Y


我真的不知道怎么做。有人能帮我理解吗?

假设剑是有符号的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    

在学习汇编的重要概念的同时,一个简单的方法是用C/C++编写程序,并让编译器输出汇编。从这里开始,研究语法,看看其中是否有意义。这实际上是我学习x86汇编的方式…

您编写代码的目的是什么CPU?我不确定您的意思。我只是想用Visual Studio在32位计算机上执行此操作。那么您很可能是针对x86。我真的不明白您做了什么。我不熟悉汇编语言,而且刚刚开始学习它。我被指派做这些计算:A=Z-Y+tb=4T-(8+Z)+yc1=4(T-8)+Z+yd=mod(T,8)E=Y^2+Z@SameerAnand:堆栈溢出不是开始学习的好地方。我已将您在问题中给出的表达式翻译成x86汇编指令,这些指令是(糟糕的)编译器在编译时生成的。VisualC++可以为你生成汇编程序,但是如果你是第一次使用,你应该先读汇编语言。