【问题标题】:divide emu 8086 assembly error [duplicate]除emu 8086组装错误[重复]
【发布时间】:2012-12-18 21:15:25
【问题描述】:

可能重复:
ASM x86 integer overflow

我得到一个除法错误-溢出,不知道为什么。 这是重现错误的完整代码

include emu8086.inc

org 100h

       mov ax, 2 
       mov bx, 10
       div bx

       mov ax, 2
       mov bx, 2
       div bx   
       ret

【问题讨论】:

  • 对于2的幂除,通常使用shift。使用 SHR AX, 1 更简单 - 无需使用额外的寄存器。

标签: assembly x86-16 divide-by-zero


【解决方案1】:

尝试在每个div 之前添加xor dx, dx,看看是否没有帮助。

由于您指定的是 16 位目标,divdx:ax 除以该目标。如果dx 开始时包含一个很大的数字(更准确地说,不是很小的数字),结果将溢出。即使它没有溢出,您的结果也不会像您显然想要的那样只是ax/bx

【讨论】:

  • 感谢您的快速回复和解释。完美运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多