linux – 程序集分区和浮点数

前端之家收集整理的这篇文章主要介绍了linux – 程序集分区和浮点数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

  mov eax,0x01
  mov ecx,0x02
  div ecx                 ; Divide AX/CX,saves remainder in DX
  cmp dx,0
  je OddNumber
  int 80h

当我尝试除1/2时,它返回“浮点异常”,而不是标记OddNumber.我知道1/2是一个浮子,但我怎么能处理呢?谢谢.

GDB说“程序收到信号SIGFPE,算术异常.”顺便说说.

最佳答案
>在调用div ecx之前,你需要调整edx.当使用32位除数(例如,ecx)时,div将edx:eax中的64位值除以其参数,因此如果edx中存在垃圾,则将其视为被除数的一部分.
>在div之后,你可能想要比较edx,而不仅仅是dx.
原文链接:https://www.f2er.com/linux/440264.html

猜你在找的Linux相关文章