私が理解していることから、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
どんな助けでも大歓迎です。