装配 - 如何在这些装配说明中执行算术?

时间:2014-03-20 09:00:50

标签: assembly

fsubr dword ptr [eax]
fst dword ptr [eax]
mov [ebp-00000084],00000000

我想要做的是添加而不是减去,这样它所获得的差异将大于原始而不是较小。

我知道这是一个非常新秀的问题,我只是刚开始尝试学习装配,但答案将帮助我更好地理解。

其次,是否可以检查存储的操作数是否小于0,如果是,则将其乘以-1?这样可以确保始终将更大的操作数复制到内存中并且没有更少的操作数(如果某些事物使用负数而不是正数来折磨价值)。

1 个答案:

答案 0 :(得分:0)

该片段中的说明执行以下操作:

fsubr dword ptr [eax]

这是一个反向减法,从st0寄存器中地址的内存中找到的数字减去浮点堆栈eax的顶部,并将结果放回{{1} }。

st0

fst dword ptr [eax] 存储到st0指向的内存地址。

eax

这与计算无关。

  • 如果要添加而不是减去,请使用添加操作mov [ebp-00000084],00000000
  • 如果您想比较浮点数,请使用fadd或特殊情况fcom
  • 如果您想更改符号,请使用ftst0乘以fmul或特殊情况-1

说明文件很多,例如伊利诺伊大学有x86 instruction reference文件。