summaryrefslogtreecommitdiffstats
path: root/Bachelor/Mikroprozessorsysteme2/mi2/Termin5/ser_io.S
blob: a8f76a86b4da99d0a1026eb4e35f66926143a059 (plain)
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}	@ Rcksprung

@ 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 erhhe dann Adresse in r5
	cmp	r0, #0				@ Ende des Strings? entspricht binrer Null
	beq	L1				@ Wenn Stringende erreicht
	swi 1					@ Auslsen der SWI Methode putchar (swi + offset)
	b	loop				@ weiter bei loop solange Stringende nicht erreicht
L1:
	mov	r0, #0x0d			@ Carriage Return
	swi 1					@ Auslsen der SWI Methode putchar (swi + offset)
	mov	r0, #0x0a			@ Linefeed
	swi 1					@ Auslsen der SWI Methode putchar (swi + offset)
	ldmfd sp!,{pc}				@ Rcksprung

@ 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}	@ Rcksprung

.end