IDIV x86汇编语言

IDIV x86汇编语言,x86,X86,据我所知,IDIV将商存储在AX寄存器中,余数存储在DX寄存器中,但由于某些原因,DX中的值不是余数的正确值 例:(9/5=1.8)如果我错了,请纠正我,但DX寄存器不保存值8吗 这是我的密码: .MODEL SMALL,BASIC,FARSTACK EXTRN GETDEC:FAR EXTRN PUTDEC:FAR

据我所知,IDIV将商存储在AX寄存器中,余数存储在DX寄存器中,但由于某些原因,DX中的值不是余数的正确值

例:(9/5=1.8)如果我错了,请纠正我,但DX寄存器不保存值8吗

这是我的密码:

       .MODEL  SMALL,BASIC,FARSTACK                                       
       EXTRN   GETDEC:FAR                  
       EXTRN   PUTDEC:FAR          
       EXTRN   PUTSTRNG:FAR       
       .STACK  256

       .CONST

PROMPT  DB      'ENTER SIGNED NUMBER   '

ANNOTATION   DB      'VALUE:                '

       .CODE
code:

       MOV     AX,SEG DGROUP       
       MOV     ES,AX   

       LEA     DI,PROMPT           
       MOV     CX,22
       CALL    PUTSTRNG
       CALL    GETDEC  

;I just enter 1 so AX=1 but the code is used for solving simple arithmetic problems (decimal * 9/5)                 

       MOV     BX,9
       IMUL    BX
       MOV     BX,5
       IDIV    BX

       MOV     AX,DX ;Right here is where I check what's inside DX, I get a value of 4
                      not 8

       LEA     DI,ANNOTATION       
       MOV     CX,22
       CALL    PUTSTRNG
       MOV     BH,0
       CALL    PUTDEC


       .EXIT                      
END     code

任何帮助都将不胜感激。

我想你可能误解了整数除法、商和余数。对于你给出的例子,9/5,商是1,余数是4


如果你回想一下你在小学时是如何学习除法的,9/5=1余数4,因为5只把9除掉一次,剩下4的余数。

我想你可能误解了整数除法、商和余数。对于你给出的例子,9/5,商是1,余数是4

如果你回想一下你在小学时是如何学习除法的,9/5=1余数4,因为5只会一次除法成9,剩下4的余数