/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/x86-expand/asm2.asm


.include "m8def.inc"

; .def definiert ein Synonym (Namen) für ein µC Register
.def temp1 = r16
.def temp2 = r17
.def temp3 = r18

           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen

           
           ldi ZL, LOW(str1*2)         ; Adresse des Strings in den
           ldi ZH, HIGH(str1*2)        ; Z-Pointer laden
           
           ldi r20, 'a'
           st Z+, r20
           ldi r20, 'b'
           st Z+, r20
           ldi r20, 'c'
           st Z+, r20
           ldi r20, 'd'
           st Z+, r20

           ldi ZL, LOW(str1*2)         ; Adresse des Strings in den
           ldi ZH, HIGH(str1*2)        ; Z-Pointer laden
           
           ld r20, Z+
           mov temp1, r20     ; Zeichen anzeigen
           rcall lcd_data

           ld r20, Z+
           mov temp1, r20     ; Zeichen anzeigen
           rcall lcd_data
           
           ld r20, Z+
           mov temp1, r20     ; Zeichen anzeigen
           rcall lcd_data

           ld r20, Z+
           mov temp1, r20     ; Zeichen anzeigen
           rcall lcd_data

loop:
           rjmp loop

.include "lcd-routines.asm"            ; LCD-Routinen werden hier eingefügt
           
.DSEG
    str1: .byte 20