Assembler-Beispiel ED - SBC $hhll.asm

Aus C64-Wiki
Zur Navigation springenZur Suche springen
; Diese Programm macht eine 16-Bit-Subtraktion
; und gibt das Ergebnis am Bildschirm aus.
; Programmstart mit SYS 49152

*=$c000   ; Startadresse des Programms

AXOUT = $bdcd

start      sec             ; Carry-Bit setzen
           lda l_zahl1     ; Low-Byte der 1.Zahl mit
           sbc l_zahl2     ; Low-Byte der 2. Zahl subtrahieren
           sta l_ergebnis  ; Low-Byte ins Ergebnis schreiben
                           ; Vor der High-Byte-Subtraktion wird das Carry-Bit nicht gesetzt, 
                           ; weil sein Wert anzeigt, ob ein Unterlauf bei Low erfolgte.
           lda h_zahl1     ; High-Byte der 1. Zahl mit
           sbc h_zahl2     ; High-Byte der 2. Zahl subtrahieren
           sta h_ergebnis  ; High-Byte ins Ergebnis schreiben		

           ldx l_ergebnis  ; Low-Byte des Ergebnisses ins X-Register 
           lda h_ergebnis  ; High-Byte des Ergebnisses in den Akku
           jsr AXOUT       ; 16-Bit-Zahl ausgeben

           rts             ; Rücksprung zu BASIC		

l_zahl1    .byte $55       ; Zahl1 = $4155
h_zahl1    .byte $41 
l_zahl2    .byte $00       ; Zahl2 = $1000
h_zahl2    .byte $10
l_ergebnis .byte $00       ; Ergebnis = $0000
h_ergebnis .byte $00