;DIVISION BY ZERO PROGRAM IN 6502 ASSEMBLY
;BASIC SYNOPSIS:
; TO FIGURE OUT WHAT IS A DIVIDED BY B, WE SUBTRACT B FROM A UNTIL WE GET A NUMBER LESSER THAN B, COUNTING THE NUMBER OF TIMES WE DO THIS. THE RESULT IS THE (INTEGER) QUOTIENT.
;INPUT:
LDA #$AA ;<-.A WILL CONTAIN DIVIDEND (1ST NUMBER)
;$AA IS COMPLETELY ARIBTRARY, MODIFY ACCORDING TO YOUR WHIMS
LDY #$00 ;<-.Y WILL CONTAIN DIVSOR (2ND NUMBER)
;OUTPUT:
;.A IS REMAINDER, .Y IS QUOTIENT
DIVIDE
PHP ;SAVE PROCESSOR STATUS REGISTER
STA DIVDEN ;SAVE ORIGINAL VALUE OF .A
STY DIVSOR ;PUT DIVISOR IN TEMPORARY MEMORY LOCATION
DIVLOP
LDY #0; .Y WILL BE QUOTIENT
SEC ;SET CARRY FOR SUBTRACTION
SBC DIVSOR ;SUBTRACT AMOUNT OF DIVISOR FROM DIVIDEND
CMP DIVDEN ;COMPARE WITH ORIGINAL DIVIDEND
BCC DIVLOP ;LOOP IF MORE THAN ORIGINAL DIVIDEND
;WHAT IS NOW IN .A IS REMAINDER, AND .Y HOLDS DIVISOR
RTS