Assembly 汇编-如何在这些汇编指令中执行算术?

Assembly 汇编-如何在这些汇编指令中执行算术?,assembly,Assembly,我想做的是加而不是减,这样得到的差值会比原来的大而不是小 我知道这是一个非常新的问题,我只是刚刚开始尝试学习组装,但答案将帮助我更好地理解 其次,是否可以检查存储的操作数是否小于0,如果小于0,则将其乘以-1?这将确保is总是将较大的操作数复制到内存中,并且不会有较小的操作数(如果某个操作数的值是负数而不是正数)。该片段中的指令执行以下操作: fsubr dword ptr [eax] fst dword ptr [eax] mov [ebp-00000084],00000000 这是一种反向

我想做的是加而不是减,这样得到的差值会比原来的大而不是小

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


其次,是否可以检查存储的操作数是否小于0,如果小于0,则将其乘以-1?这将确保is总是将较大的操作数复制到内存中,并且不会有较小的操作数(如果某个操作数的值是负数而不是正数)。

该片段中的指令执行以下操作:

fsubr dword ptr [eax]
fst dword ptr [eax]
mov [ebp-00000084],00000000
这是一种反向减法,从
eax
寄存器地址的内存中找到的数字中减去浮点堆栈
st0
的顶部,然后将结果放回
st0

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

fst dword ptr [eax]
这与计算无关

  • 如果要进行加法而不是减法,请使用加法操作
    fadd
  • 如果要比较浮点数,请使用
    fcom
    或特例
    ftst0
  • 如果要更改符号,请使用
    fmul
    乘以
    -1
    ,或使用特例
    fchs

文件的说明是丰富的,例如伊利诺伊大学有一份文件。

谢谢你的快速反应,我一直在阅读你和其他六个来源一起发送的链接,试图了解更多这方面的信息。它起作用了,改为fadd,我不知道f是什么,但我猜它的意思是浮动。第三行可能不相关,但它确实与正在执行的任务中的其他两行捆绑在一起。。这是它复制旧内存地址的最后一部分。但除此之外,你能详细说明这条线到底在做什么吗,就像你为另外两条线做的一样?编辑:我愿意代表你帮忙,但上面说我需要更多的代表。
mov [ebp-00000084],00000000