SHARE
TWEET

Untitled

a guest Dec 19th, 2019 89 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
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top