2017-04-23 117 views
-1

在下面的代碼中,32是ASCII空格字符。我現在面臨一個問題,在字符串中移動:計算字符串輸入的字數

.data 
para: .asciiz " " 
buffer: .space 250 
ctr: .word 0 
.text 
.globl main 
.ent main 
main:addi $t3,$0,32 
li $t8,1 
la $a0,para 
li $v0,8 
syscall 
li $t0,0 
loop:bge $t0,$a0,exit 
add $t1,$a0,$t0 
lb $t2,0($t1) 
beq $t2,$t3,counter 
addi $t0,$t0,1 
j loop 
counter:addi $t8,$t8,1 
addi $t0,$t0,1 
j loop 

exit:sw $t8,ctr 
li $v0,10 
syscall 
.end main 
+0

這裏是一些更正後,我的最新嘗試,但不成功。 。數據 段:.asciiz 「」 尺寸:250。空間點擊率 :.word 0 的.text .globl主要 .ENT主要 主:李$ t3,32 李$ t8,1 LA $ A0 ,第 李$ v0,8 系統調用 舉動$ A0,$ A1 李$ t0,0 循環:BGE $ T0,$ A1,出口 加$ T1,$ A1,$ T0 磅$ t2,0 ($ A1) BEQ $ T2,$零,出口 BEQ $ T5,T3 $,計數器 j循環 計數器:阿迪$ T8,$ t8,1 j循環 退出:SW $ t8,ctr li $ v0,10 syscall .end main – Sanp

+1

做**不**請將您的代碼發佈在評論中。把你的最小,可驗證和完整的例子**放在問題**中,以及預期的行爲和你得到的行爲。 –

+0

由於錯誤 – Sanp

回答

0

我找到了答案,我今天被加載單個字符前陣比較:

.data 
msg: .asciiz"Enter\n" 
buffer: .space 250 
ctr: .word 0 

.text 
.globl main 
.ent main 
main:addi $t3,$0,32 #$t3 holds 'space' 
li $t8,1 

la $a0,msg 
li $v0,4 
syscall      #$t8, is counter register 

li $v0,8       #input of string para 
syscall 

li $t0,0       # i=0 

loop:     #till str[i]!=0 
add $t1,$a0,$t0 

lb $t2,0($t1)     
beq $t2,$zero,exit 
beq $t2,$t3,counter   #str[i]=' ' checks and jumps to 

addi $t0,$t0,1     #increment i if false 
j loop 

counter: addi $t8,$t8,1  #increment counter when word 

addi $t0,$t0,1     
j loop 

exit: sw $t8,ctr 
li $v0,10 
syscall 
.end main 
+0

請學習[如何格式化](http://stackoverflow.com/help /格式)首先 –

+0

先生你已格式化它,謝謝。我是堆棧溢出新手。 – Sanp