Нежелательные символы ASCII в MIPS - PullRequest
0 голосов
/ 16 декабря 2011
bigloop:

   li  $s0, 0

stripNonAlpha:

   lb $t5, ($a0)
   beqz $t5, contt

   add $t4, $s0, $a0       #address of input[i] in $t4
   lb  $t5, 0($t4)          #load value of input[i]
   addi $s0, $s0, 1     #i = i + 1

   slti $t1, $t5, 48        #if ascii code is less than 48
   bne $t1, $zero, strip   #remove ascii character

   slti $t1, $t5, 58       #if ascii code is greater than 57

   slti $t2, $t5, 65        #if ascii code is less than 65
   slt $t3, $t1, $t2       
   bne $t3, $zero, strip   #remove ascii character

   slti $t1, $t5, 91       #if ascii code is greater than 90

   slti $t2, $t5, 97        #if ascii code is less than 97
   slt $t3, $t1, $t2
   bne $t3, $zero, strip   #remove ascii character

   slti $t1, $t5, 123    #if ascii char is greater than 122
   beq $t1, $zero, strip   #remove ascii character

   j stripNonAlpha       #go to stripNonAlpha

strip:

   add    $t5, $s0, $a0       #address of Buffer[i] in $t5
   add $t5, $t5, 32
   sb  $zero, 0($a0)      #Buffer[i] = 0
   addi   $s0, $s0, 1     #i = i + 1
   j   stripNonAlpha       #go to stripNonAlpha

j bigloop

contt:

У меня есть такой случай с этим фрагментом кода MIPS, который проверяет любой не алфавитно-цифровой символ, когда я печатаю ниже того, что пишу в консоль, он добавляет дополнительные 32 значения ASCII.Например, вместо пробела (32) он печатает @ (64) или вместо!(33), он печатает заглавную A (65).Я не мог видеть, в чем может быть причина?Заранее спасибо.

...