2017-04-23 257 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