我的程序为什么算出来的结果不对?您能帮我查一下错吗?
多字节无符号数除法计算程序:
编制说明:当除数的字节数少于被除数的字节数时,则将除数的高位字节为零!
(1)入口条件:R0(被除数的低位字节地址指针);R1(非零除数的地位字节地址指针) ;R2(被除数的字节数)
(2)出口:R0(商的低位字节地址指针);R1(商的字节数)
MOV 30H,#0FFH
MOV 31H,#0FFH
MOV 32H,#0FFH
MOV 33H,#0FFH
MOV 34H,#22h
mov 35h,#22h
mov 36h,#11h
mov 37h,#11h
MOV R0,#30H
MOV R1,#34H
MOV R3,#04H
DODIV: MOV A,R0 ;复制保存地址指针
MOV R4,A
MOV A,R1
MOV R5,A
MOV A,R3
MOV R7,A
MOV A,R0
ADD A,R3
MOV R6,A ;部分余低字节地址指针
MOV R1,A
LP0: MOV @R1,#00H ;部分余单元清零
INC R1
DJNZ R3,LP0
MOV A,R7 ;移位字节数
ADD A,R7
MOV R2,A
MOV B,#04H
MUL AB
LP1: PUSH ACC
MOV A,R2
MOV R3,A
MOV A,R4
MOV R1,A
CLR C
LP2: MOV A,@R1 ;移位
RLC A
MOV @R1,A
INC R1
DJNZ R3,LP2
NEXT: MOV A,R6
MOV R0,A
MOV A,R5
MOV R1,A
MOV A,R7
MOV R3,A
CLR C
LP3: MOV A,@R0 ;部分余减除数
SUBB A,@R1
PUSH ACC
INC R0
INC R1
DJNZ R3,LP3
MOV A,R7
MOV R3,A
JC SMALL
MOV A,R4
MOV R0,A
INC @R0 ;商加1
MOV A,R6
ADD A,R7
DEC A
MOV R0,A
LP4: POP ACC ;存新余数
MOV @R0,A
DEC R0
DJNZ R3,LP4
SJMP NEXT
SMALL:POP ACC ;恢复栈指针
DJNZ R3,SMALL
POP ACC
DEC A ;移位次数减1
JNZ LP1
I504: MOV A, R6 ;四舍五入
ADD A,R7
DEC A
MOV R0,A
MOV R2,A
MOV A,@R0
JB 07H,ADD1
MOV A,R6
MOV R1,A
MOV A,R7
MOV R3,A
CLR C
LP5: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R3,LP5
MOV A,R2
MOV R0,A
MOV A,R7
MOV R3,A
ADD A,R5
DEC A
MOV R1,A
LP6: CLR C
MOV A,@R0
SUBB A,@R1
JC RETURN
JNZ ADD1
DEC R0
DEC R1
DJNZ R3,LP6
ADD1: MOV A,R4 ;商加1
MOV R1,A
MOV A,R7
MOV R3,A
SETB C
LP7: MOV A,@R1
ADDC A,#00H
MOV @R1,A
DJNZ R3,LP7
RETURN:MOV A,R4 ;恢复地址指针
MOV R0,A
MOV A,R7
MOV R3,A
RET
END
这段程序的运行结果怎么不对,能帮我改一下吗?
请问:定点运算的程序商是如何能看出是小数的?
比如:1/3=0。333等