Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- D16BY8: CLR A
- CJNE A,DIVISOR,OK
- DIVIDE_BY_ZERO:
- SETB OV
- RET
- OK: MOV QUOTIENT,A
- MOV R4,#8
- MOV R5,DIVIDEND
- MOV R6,DIVIDEND+1
- MOV R7,A
- MOV A,R6
- MOV B,DIVISOR
- DIV AB
- MOV QUOTIENT+1,A
- MOV R6,B
- TIMES_TWO:
- MOV A,R5
- RLC A
- MOV R5,A
- MOV A,R6
- RLC A
- MOV R6,A
- MOV A,R7
- RLC A
- MOV R7,A
- COMPARE:
- CJNE A,#0,DONE
- MOV A,R6
- CJNE A,DIVISOR,DONE
- CJNE R5,#0,DONE
- DONE: CPL C
- BUILD_QUOTIENT:
- MOV A,QUOTIENT
- RLC A
- MOV QUOTIENT,A
- JNB ACC.0,LOOP
- SUBTRACT:
- MOV A,R6
- SUBB A,DIVISOR
- MOV R6,A
- MOV A,R7
- SUBB A,#0
- MOV R7,A
- LOOP: DJNZ R4,TIMES_TWO
- MOV A,DIVISOR
- MOV B,QUOTIENT
- MUL AB
- MOV B,A
- MOV A,DIVIDEND
- SUBB A,B
- MOV REMAINDER,A
- CLR OV
- RET
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement