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
|
@----------------------------------------------------------------------------
@ File Name : ser_io.S
@ Object : Ein- Ausgabe-Funktionen der seriellen Schnittstelle
@
@ Namen : Matr.-Nr.:
@ : Matr.-Nr.:
@
@----------------------------------------------------------------------------
@ Debuginformationen
.file "ser_io.S"
@ Funktion
.text
.align 2
.global inits
.type inits,function
inits:
stmfd sp!,{lr} @ Retten der Register
swi 0
ldmfd sp!,{pc} @ R�cksprung
@ Funktion
.text
.align 2
.global puts
.type puts,function
puts:
stmfd sp!,{lr} @ Retten der Register
// Hier mu� Ihr Code eingef�gt werden.
mov r5, r0 @ Anfangsadresse des kompletten Strings von r0 nach r5 kopieren
loop: ldrb r0, [r5], #1 @ Holen des Zeichens der Adresse in r5 nach r0 und erh�he dann Adresse in r5
cmp r0, #0 @ Ende des Strings? entspricht bin�rer Null
beq L1 @ Wenn Stringende erreicht
swi 1 @ Ausl�sen der SWI Methode putchar (swi + offset)
b loop @ weiter bei loop solange Stringende nicht erreicht
L1:
@mov r0, #0x0d @ Carriage Return
@swi 1 @ Ausl�sen der SWI Methode putchar (swi + offset)
@mov r0, #0x0a @ Linefeed
@swi 1 @ Ausl�sen der SWI Methode putchar (swi + offset)
ldmfd sp!,{pc} @ R�cksprung
@ Funktion
.text
.align 2
.global gets
.type gets,function
gets:
stmfd sp!,{lr} @ Retten der Register
// Hier k�nnte Ihr Code eingef�gt werden!
ldmfd sp!,{pc} @ R�cksprung
.end
|