Guest User

Untitled

a guest
Jun 8th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Loesung Termin6 Rechnerarchitektur WS2011
  2. // Name:    Matrikelnummer:
  3. // Name:    Matrikelnummer:
  4. // Datum:
  5.  
  6. @ IN R0 wird die Adresse des zu durchsuchenden Text erwartet.
  7. @ IN R1 wird die Adresse des zu suchendenn Text erwartet.
  8. @ sollte R0 auf einen leeren String zeigen,
  9. @ oder der gesuchte Text nicht gefunden werden,
  10. @ SO wird IN R0 der Wert 0 zurueck geliefert.
  11. @ zeigt R1 auf einen leeren String SO wird IN R0 der Wert 0 zurueck gegeben
  12.  
  13.     .FILE   "searchStringInString.S"
  14.     .text
  15.     .align  2
  16.     .global searchStringInString
  17.     .type   searchStringInString, %function
  18.    
  19. searchStringInString:
  20.     stmfd sp!, {r4-r10, lr}
  21.  
  22.     mov r8, r0
  23.     mov r9, r1
  24.    
  25.     mov r4, #0
  26.     mov r5, #0
  27.    
  28. Anf:    mov r1, r9
  29.     mov r0, r8
  30.     add r0, r5
  31.        
  32.  
  33. LOOP:   ldrb r2, [r0], #1   // Lade den ersten Wert IN r2
  34.     add r5, #1
  35.     ldrb r3, [r1]       // Lade den zweiten Wert IN r3
  36.     cmp r2, #0      //Ist das Ende des ganzen Strings erreicht?
  37.     beq ende        // wenn ja, ist die Suche zu ende
  38.     cmp r3, r2      // vergleiche r2 mit r3
  39.     bne LOOP        // wenn diese ungleich, springe wieder zurück
  40. LOOP2:  ldrb r2, [r0], #1   // lade nächchstes Zeichen des ganzen Strings
  41.    
  42.     ldrb r3, [r1,#1]!   // lade nächstes Zeichen des Suchstrings
  43.     cmp r2, #0      // Prüfe, ob der ganze String schon zu Ende ist
  44.     beq last        // wenn ja --> Programmende
  45.     cmp r2, r3      // sind die beiden Zeichen gleich?
  46.     beq LOOP2       // wenn ja, weiterer vergleich
  47. last:   cmp r3, #0      // vergleiche, ob dieses das Ende des Suchstrings is
  48.     bleq reset      // wenn ja, resete die Werte und Zähle 1 hoch
  49.     b Anf
  50.  
  51.  
  52.    
  53.  
  54.  
  55. reset:
  56.     stmfd sp!, {r5-r10, lr}
  57.     mov r1, r9
  58.     add r4, #1
  59.    
  60.     ldmfd sp!, {r5-r10, lr}
  61.     mov pc, lr
  62.  
  63.  
  64. ende:
  65.     mov r0, r4
  66.     ldmfd sp!, {r4-r10, pc}
  67.  
  68.    
  69.  
  70.  
  71.  
  72.  
  73.  
  74.    
  75.     .size   searchStringInString, .-searchStringInString
Add Comment
Please, Sign In to add comment