@---------------------------------------------------------------------------- @ File Name : ser_io.S @ Object : Ein- Ausgabe-Funktionen der seriellen Schnittstelle @ welche ueber den Supervisor-Mode gehen @ @ @ Namen : Matr.-Nr.: @ Matr.-Nr.: @ @---------------------------------------------------------------------------- @ Debuginformationen .file "ser_io.S" @ Funktion .text .align 2 .global initsswi .type initsswi,function initsswi: swi 0x100 bx lr @ Rücksprung @ Funktion .text .align 2 .global putcswi .type putcswi,function putcswi: mov r1, r0 @ Zeichen nach r1 ldr r0, =Zeichen @ Zeiger holen str r1, [r0] @ Zeichen unter Zeiger ablegen swi 0x200 @ ldr r1, =Zeichen @ Zeiger holen ldr r0, [r1] @ Zeichen aus Zeiger holen bx lr @ Funktion .text .align 2 .global getcswi .type getcswi,function getcswi: ldr r0, =Zeichen @ Zeiger holen swi 0x300 ldr r0, =Zeichen @ Zeiger holen ldr r0, [r0] @ empfangenes Zeichen zurueck geben bx lr @ Funktion .text .align 2 .global putsswi .type putsswi,function putsswi: stmfd sp!,{r4, r5, lr} @ Retten der Register mov r4, r0 mov r5, #0 // Hier muß Ihr Code eingefügt werden. putsswi_loop: ldrb r0, [r4] cmp r0, #0 beq putsswi_end bl putcswi cmp r0, #0 beq putsswi_loop cmp r0, #0xa bne putsswi_2 putsswi_1: mov r0, #0xd bl putcswi cmp r0, #0 beq putsswi_1 add r5, r5, #1 putsswi_2: add r4, r4, #1 add r5, r5, #1 b putsswi_loop putsswi_end: mov r0, r5 ldmfd sp!,{r4, r5, pc} @ Rücksprung @ Funktion .text .align 2 .global getsswi .type getsswi,function getsswi: stmfd sp!,{lr} @ Retten der Register // Hier könnte Ihr Code eingefügt werden! ldmfd sp!,{pc} @ Rücksprung .data Zeichen: .word 0 .end