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

을 일부 수정 후 내 최신 시도는 아직 실패 . .DATA 파라 : .asciiz "" 크기 : 리 $ t3,32 리 $의 t8,1 라 $의 A0 : .globl 주요 .ent 주요 주는 .text 0 을 .word : 250 클릭률 (CTR)이 .space 파라 리 $의 v0,8 콜 이동 $의 A0, $ a1을 리 $의 t0,0 루프 : BGE $ t0의, $ a1을 종료 추가 $의 T1, $ A1, $ T0 파운드 $의 t2,0 ($의 A1) BEQ $으로의 T2, $ 제로 출구 BEQ $으로의 T5, $의 T3, 카운터 J 루프 카운터 : ADDI $의 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)/formatting) 먼저 –

+0

님, 형식화했습니다. 감사합니다. 스택 오버플로가 생겼습니다. – Sanp