Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly EMU8086将32位数字除以16位数字得到意外的0余数_Assembly_X86_X86 16_Emu8086_Integer Division - Fatal编程技术网

Assembly EMU8086将32位数字除以16位数字得到意外的0余数

Assembly EMU8086将32位数字除以16位数字得到意外的0余数,assembly,x86,x86-16,emu8086,integer-division,Assembly,X86,X86 16,Emu8086,Integer Division,我试图用emu8086工具将(未签名的)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

我试图用emu8086工具将(未签名的)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中的输出:


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


如果这是使用指令签名的除法,由于除法溢出,它将产生一个零除法异常。

您找到任何值的答案了吗?