65xx – Hexadezimalumrechnung
Hier ein paar kleine Routinen, um Zahlen hexadezimal auszugeben. Die Ausgabeprozedur ist nicht Bestandteil der Routine. Das ist auf jedem Rechner verschieden umzusetzen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
.ORG $1000 ; Ein Byte ausgeben LDA #193 ; 193 = hexadezimal C1 jsr prthexbyte ; Ein 16 Bit Wort ausgeben LDA #192 ; 192 * 16 +79 = 49231 = C04F hexadezimal STA $21 ; Highbyte LDA #79 STA $20 ; Lowbyte JSR prthexword RTS ;************************************************************************** ; Ein Byte Hexadezimal auf dem Bildschirm ausgeben ; ; Eingabe: A = Byte ; Ausgabe: Hexadezimale Ausgabe an Cursorposition ;************************************************************************** prthexbyte: PHA ; A auf den Stack STA $50 ; Inhalt von A in die Zeropage ROR ; A 4 x nach rechts rotieren ROR ROR ROR CLC ; Carrybit löschen JSR prtnibble ; Erstes Nibble ausgeben LDA $50 ; A aus Zeropage holen JSR prtnibble ; Zweites Nibble ausgeben PLA ; und A zurück vom Stack rts ;************************************************************************** ; Ein 16 Bit Wort Hexadezimal auf dem Bildschirm ausgeben ; ; Eingabe: $20 = Lowbyte ; $21 = Highbyte ; Ausgabe: Hexadezimale Ausgabe an Cursorposition ;************************************************************************** prthexword: PHA LDA $21 JSR prthexbyte LDA $20 JSR prthexbyte PLA RTS ;************************************************************************** ; Ein Nibble Hexadezimal auf dem Bildschirm ausgeben ; ; Eingabe: A = Nibble (die unteren 4 Bit) ; Ausgabe: Hexadezimale Ausgabe an Cursorposition ;************************************************************************** prtnibble: PHA ; A auf den Stack AND #$0f ADC #$30 ; 0x30 addieren ('0') CMP #$3a ; größer 0x3A ('9' BCC prtnibb1 ; Nein, ausgabe ADC #$06 ; Sonst Buchstabe A-F prtnibb1: JSR prtit ; Ausgabe PLA ; A vom Stack RTS ; Hier Ausgaberoutine: Zeichen in A, Anschließend ; Ausgaberoutine aufrufen prtit: JSR ausgabe ; Zeichen ausgeben rts |