Advertisement
Guest User

Untitled

a guest
Jun 20th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MPASM 1.85 KB | None | 0 0
  1. .data
  2. #zu überprüfender String
  3. str:    .asciiz     "abcdefgh, h;gfedcba!"
  4.  
  5. #Initialisierung
  6. #t0 = aktuelle Adresse links
  7. #t1 = aktuelle Adresse rechts
  8. #t2 = Länge des Strings
  9. #s0 = aktueller Wert bei t0
  10. #s1 = aktueller Wert bei t1
  11. #v0 = (1->Palindrom, 0->Keins)
  12. .text
  13. la $t0, str
  14.  
  15.    
  16.     #Länge finden:
  17.     add $t2, $0, $0
  18.     findend:
  19.         #a1 = aktuelle Adresse
  20.         #a0 = aktueller Wert
  21.         add $a1, $t0, $t2
  22.         lb $a0, ($a1)
  23.         beq $a0, $0, found
  24.         addi $t2, $t2, 1
  25.         j findend
  26.     found:
  27.     addi $t2, $t2, -1
  28.  
  29. add $t1, $t0, $t2
  30. addi $v0, $0, 1
  31.  
  32. #array durchlaufen
  33. looparray:
  34.     #Durchlaufabbruch:
  35.     sub $t3, $t1, $t0 #t3 = Abstand t0, t1
  36.     blez $t3, end
  37.    
  38.     #Leer- und Sonderzeichenskip:
  39.         loopcheck1:
  40.         lb $a0, ($t0)
  41.         jal specialcheck
  42.         add $t0, $t0, $v1
  43.         bgtz $v1, loopcheck1
  44.         loopcheck2:
  45.         lb $a0, ($t1)
  46.         jal specialcheck
  47.         sub $t1, $t1, $v1
  48.         bgtz $v1, loopcheck2       
  49.        
  50.     #Vergleich:
  51.     lb $s0, ($t0)
  52.     lb $s1, ($t1)
  53.    
  54.         #Groß/Klein Konvertierung einfügen:
  55.         add $a0, $0, $s0
  56.         jal convert
  57.         sub $s0, $s0, $v1
  58.         add $a0, $0, $s1
  59.         jal convert
  60.         sub $s1, $s1, $v1
  61.        
  62.     bne $s0, $s1, doneincorrect
  63.    
  64.     #Zähler inkrementieren:
  65.     addi $t0, $t0, 1
  66.     addi $t1, $t1, -1
  67.  
  68. j looparray
  69.  
  70. #Ein Assymetrie wurde entdeckt
  71. doneincorrect:
  72. add $v0, $0, $0
  73. j end
  74.  
  75. #Leer- und Sonderzeichencheck (Rückgabe in $v1)
  76. specialcheck:
  77.  
  78.     addi $a1, $a0, -47
  79.     blez $a1, specfound
  80.     addi $a1, $a0, -57
  81.     blez $a1, specnotfound
  82.     addi $a1, $a0, -64
  83.     blez $a1, specfound
  84.     addi $a1, $a0, -90
  85.     blez $a1, specnotfound
  86.     addi $a1, $a0, -96
  87.     blez $a1, specfound
  88.     addi $a1, $a0, -122
  89.     blez $a1, specnotfound
  90.     j specfound
  91.    
  92.     specfound:
  93.         addi $v1, $0, 1
  94.         jr $ra
  95.     specnotfound:
  96.         addi $v1, $0, 0
  97.         jr $ra
  98.  
  99.  
  100. #Großklein konvertierung
  101. convert:
  102.     add $v1, $0, $0
  103.  
  104.     addi $a0, $a0, -90
  105.     blez $a0, uppercase
  106.     addi $v1, $0, 32
  107.     uppercase:
  108.     jr $ra
  109.  
  110.  
  111. end:
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement