FizzBuzz in 68k Assembly

Fizz buzz is a group word game for children to teach them about division. Players take turns to count incrementally, replacing any number divisible by three with the word “fizz”, and any number divisible by five with the word “buzz”. ```assembly ORG $1000 FIZZ DC.B 'FIZZ',$0D,$0A,0 BUZZ DC.B 'BUZZ',$0D,$0A,0 FBUZZ DC.B 'FIZZBUZZ',$0D,$0A,0 CRLF DC.B $0D,$0A,0 START MOVEQ #0, D1 ; Rolling value MOVEQ #10, D2 ; Set D2 with dec number 10 BSR LOOP ; Branch to loop QUIT MOVE.B #9, D0 ; Moves the dec number 9 into data register D0 TRAP #15 ; Execute trap command in D0 DBUZZ LEA BUZZ, A1 ; Load BUZZ address into address register A1 MOVE.B #14, D0 ; Set trap command to display NULL terminated string in A1 TRAP #15 ; Execute trap command BRA LOOP ; Branch to LOOP DFIZZ LEA FIZZ, A1 ; Load FIZZ address into address register A1 MOVE.B #14, D0 ; Set trap command to display NULL terminated string in A1 TRAP #15 ; Execute trap command BRA LOOP ; Branch to LOOP DFBUZZ LEA FBUZZ, A1 ; Load FBUZZ address into address register A1 MOVE.B #14, D0 ; Set trap command to display NULL terminated string in A1 TRAP #15 ; Execute trap command BRA LOOP ; Branch to LOOP DVAL MOVEQ #15, D0 ; Set trap command to display D1 TRAP #15 ; Execute trap command LEA CRLF, A1 ; Load FBUZZ address into address register A1 MOVE.B #14, D0 ; Set trap command to display NULL terminated string in A1 TRAP #15 ; Execute trap command BRA LOOP ; Branch to LOOP LOOP CMP #100, D1 ; Compare D1 to 100 BEQ QUIT ; Equality in previous compare meets break condition ADDQ #1, D1 ; Increment loop MOVE.L D1, D3 ; Store D1 to D3 for DIV DIVU #15, D3 ; D3 / 15 SWAP D3 ; Swap D3 remainder byte CMP #0, D3 ; Evaluate D3 for 0 BEQ DFBUZZ ; Run subroutine to display 'FIZZBUZZ' MOVE.L D1, D3 ; Store D1 to D3 for DIV DIVU #3, D3 ; D3 / 3 SWAP D3 ; Swap D3 remainder byte CMP #0, D3 ; Evaluate D3 for 0 BEQ DFIZZ ; Run subroutine to display 'FIZZ' MOVE.L D1, D3 ; Store D1 to D3 for DIV DIVU #5, D3 ; D3 / 5 SWAP D3 ; Swap D3 remainder byte CMP #0, D3 ; Evaluate D3 for 0 BEQ DBUZZ ; Run subroutine to display 'BUZZ' BRA DVAL ; Other conditions not met, branch into DVAL END START ```