gpt4 book ai didi

assembly - EMU8086 将 32 位数字除以 16 位数字给出意外的 0 余数

转载 作者:行者123 更新时间:2023-12-05 07:44:15 28 4
gpt4 key购买 nike

我试图使用 emu8086 工具将 (Unsigned) 8A32F4D5 除以 C9A5。我预计商为 AF73H,余数为 94B6H。编写以下代码后,我得到了正确的商,但余数变成了 0000h。我错过了什么吗?

.MODEL SMALL
.STACK 100H
.DATA
.CODE

MAIN PROC
; initialize DS
MOV AX,@DATA
MOV DS,AX
; enter your code here
MOV DX, 8A32H
MOV AX, 0F4D5H
MOV BX, 0C9A5H

DIV BX

;exit to DOS

MOV AX,4C00H
INT 21H

MAIN ENDP
END MAIN

EMU8086中的输出:

enter image description here

最佳答案

这看起来像是 EMU8086 中的错误。这个无符号除法 ( DIV ) 没有被零除,也没有溢出。你是正确的,0x8A32F4D5 除以 0xC9A5 的余数是 0x94B6。为了验证这一点,我在 DOSBOX 中使用 Turbo Debugger 运行了这段代码并得到了预期的结果:

enter image description here

如果这是使用 IDIV 签署的部门由于除法溢出,它会产生被零除的异常指令。

关于assembly - EMU8086 将 32 位数字除以 16 位数字给出意外的 0 余数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43020324/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com