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