Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Loesung Termin6 Rechnerarchitektur WS2011
- // Name: Matrikelnummer:
- // Name: Matrikelnummer:
- // Datum:
- @ IN R0 wird die Adresse des zu durchsuchenden Text erwartet.
- @ IN R1 wird die Adresse des zu suchendenn Text erwartet.
- @ sollte R0 auf einen leeren String zeigen,
- @ oder der gesuchte Text nicht gefunden werden,
- @ SO wird IN R0 der Wert 0 zurueck geliefert.
- @ zeigt R1 auf einen leeren String SO wird IN R0 der Wert 0 zurueck gegeben
- .FILE "searchStringInString.S"
- .text
- .align 2
- .global searchStringInString
- .type searchStringInString, %function
- searchStringInString:
- stmfd sp!, {r4-r10, lr}
- mov r8, r0
- mov r9, r1
- mov r4, #0
- mov r5, #0
- Anf: mov r1, r9
- mov r0, r8
- add r0, r5
- LOOP: ldrb r2, [r0], #1 // Lade den ersten Wert IN r2
- add r5, #1
- ldrb r3, [r1] // Lade den zweiten Wert IN r3
- cmp r2, #0 //Ist das Ende des ganzen Strings erreicht?
- beq ende // wenn ja, ist die Suche zu ende
- cmp r3, r2 // vergleiche r2 mit r3
- bne LOOP // wenn diese ungleich, springe wieder zurück
- LOOP2: ldrb r2, [r0], #1 // lade nächchstes Zeichen des ganzen Strings
- ldrb r3, [r1,#1]! // lade nächstes Zeichen des Suchstrings
- cmp r2, #0 // Prüfe, ob der ganze String schon zu Ende ist
- beq last // wenn ja --> Programmende
- cmp r2, r3 // sind die beiden Zeichen gleich?
- beq LOOP2 // wenn ja, weiterer vergleich
- last: cmp r3, #0 // vergleiche, ob dieses das Ende des Suchstrings is
- bleq reset // wenn ja, resete die Werte und Zähle 1 hoch
- b Anf
- reset:
- stmfd sp!, {r5-r10, lr}
- mov r1, r9
- add r4, #1
- ldmfd sp!, {r5-r10, lr}
- mov pc, lr
- ende:
- mov r0, r4
- ldmfd sp!, {r4-r10, pc}
- .size searchStringInString, .-searchStringInString
Add Comment
Please, Sign In to add comment