Guest User

Untitled

a guest
Dec 19th, 2019
133
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Loesung zu Aufgaben 3 und folgende
  2. // Name:        Matrikelnummer:
  3. // Name:        Matrikelnummer:
  4. // Datum:
  5.     .file "aufgabe3.S"
  6.     .text       @ legt eine Textsection fuer PrgrammCode + Konstanten an
  7.     .align 2    @ sorgt dafuer, dass nachfolgende Anweisungen auf einer durch 4 teilbaren Adresse liegen   
  8.             @ unteren 2 Bit sind 0
  9.     .global main    @ nimmt das Symbol main in die globale Sysmboltabelle auf
  10.     .type main,function
  11. main:
  12.     push    {lr} @ Ruecksprungadresse und Register sichern
  13. @   ..
  14.     ldr r1, Adr_StringA
  15.     ldr r0, Adr_StringB
  16.     bl kopieren
  17. @   ..
  18.  
  19.     bl grossschreibung
  20. @   ..
  21.     bl sortieren
  22.     pop {pc}
  23.    
  24. kopieren:
  25. @ hier Ihr Programm zum Kopieren eines String
  26.  
  27.    
  28. loop_kopieren: 
  29.     ldrb    r2, [r1], #1
  30.     strb    r2, [r0], #1
  31.     cmn     r2, r2              @addiert und setzt flaggs
  32.     bne     loop_kopieren       @prüft zerobit
  33.     ldr R0, Adr_StringB
  34.     bx lr
  35.  
  36.  
  37. grossschreibung:
  38. @ hier Ihr Programm zum Wandeln in Grossbuchstaben
  39.     ldrb    r3, [r0]
  40.     cmp r3, #91             @subtrahiert 1 von 2
  41.     subpl   r3, #32             @pl -> falls positiv
  42.     strb    r3, [r0], #1
  43.     cmn r3, r3              @addiert die beiden uns setzt passend flaggs
  44.     bne grossschreibung     @prüft zerobit
  45.     ldr r0, Adr_StringB
  46.     bx lr  
  47.    
  48.    
  49. sortieren:
  50. @ hier Ihr Programm zum alphabetisch sortieren
  51.     push    {r5, lr}
  52.            
  53. outer_loop:
  54.     ldr r0 , Adr_StringB
  55.     mov r1, #0
  56.    
  57. inner_loop:
  58.     ldrb r2, [r0]
  59.     ldrb r3, [r0,#1]!  
  60.     cmp r3, r2
  61.     strmib r3, [r0, #-1]
  62.     strmib r2, [r0]
  63.     movmi r1, #1
  64.    
  65.     ldrb r5, [r0,#1]
  66.     cmn r5, r5
  67.     bne inner_loop
  68.     adr pc, exit
  69.  
  70. exit:  
  71.     cmn r1, r1
  72.     bne outer_loop
  73.     pop {r5, pc}
  74. @   bx  lr
  75.  
  76. Adr_StringA:    .word StringA   @ auf dieser Speicherstelle liegt die Adresse, welche auf das erste Zeichen von StringA zeigt
  77. Adr_StringB:    .word StringB  
  78.  
  79. .Lfe1:
  80.     .size main,.Lfe1-main
  81.  
  82. // .data-Section fuer initialisierte Daten
  83.     .data
  84. StringA: .byte  'D','i','e','s','s','i','n','d','v','i','e','l','e','B','u','c','h','s','t','a','b','e','n',0
  85.  
  86. // .comm-Section fuer nicht initialisierte Daten
  87.     .comm StringB, 256  @ Speicherbereich mit der max. Groesse eines StringA reservieren
  88.  
  89. // End of File
RAW Paste Data