.include "labmac.i" .section .text .globl main main: MOVE.L #0, D1 JSR outhex | Print f0 MOVE.L #1, D1 JSR outhex | Print f1 MOVE.L #0, D3 | Init fi-1 MOVE.L #1, D2 | Init fi-2 repeat: MOVE.L D3, D1 | Copy fi-2 ADD.L D2, D1 CMP.L #100, D1 | Compare with max BGT done JSR outhex | Print fi MOVE.L D2, D3 | New fi-2 MOVE.L D1, D2 | New fi-1 JMP repeat | Continue Loop done: RTS | Finished outhex: MOVE.L D1, D7 | copy input number LSR.B #4, D1 | isolate left hex digit JSR Digit | call output routine for 1st digit MOVE.L D7, D1 | restore input AND.L #0x0F, D1 | isolate right hex digit JSR Digit | call output routine for 2nd digit MOVE.L #' ', D1 | print a space character CALLEXEC LCD_PutChar MOVE.L D7, D1 | restore input RTS Zero = 48 | ascii code for 0 LetterA = 55 | ascii code for A - 10 Digit: CMP.B #10, D1 | Is digit within 0..9 ? BGE abcdef ADD.B #Zero, D1 | Yes: transform 0 ? 0, 1 ? 1 CALLEXEC LCD_PutChar | print as character RTS abcdef: ADD.B #LetterA, D1 | No: transform 10 ? A, 11 ? B CALLEXEC LCD_PutChar | print as character RTS