-
Notifications
You must be signed in to change notification settings - Fork 0
/
practica2.asm
50 lines (45 loc) · 959 Bytes
/
practica2.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#Miguel Chaveinte Garcia
#Pablo Bejar Sierra
.data
A: .ascii "Hola Mund\0"
B: .space 15
C: .space 15
.align 2
D: .word 0
.text
main:
la $t0,A
la $t1,B
la $t2,C
add $t3,$t0,$s0 #A[i]
la $t4,D
li $s1,0 #contador para D
recorre:
lb $t5,0($t3)
beq $t5,$zero,contador #Si A[i]=='\0'
addi $t3,$t3,1
bne $t5,32,recorre
addi $s1,$s1,1 #suma 1 porque hay espacio en blanco
j recorre
contador:
addi $s1,$s1,1 #suma 1 por fin de cadena
sw $s1,0($t4) #guardamos en D el contador
sub $t0,$t3,$t0 #Longitud cadena leida
beq $t0,$zero,fin
ejecucion:
lb $t4,-1($t3)
addi $t0,$t0,-1
sb $t4,0($t2)
addi $t2,$t2,1 #movemos el apuntador de C
beq $t0,$zero,fin #comprueba que todavia hay cadena
lb $t4,-2($t3)
addi $t0,$t0,-1
sb $t4,0($t1)
addi $t1,$t1,1 #movemos el apuntador de B
addi $t3,$t3,-2 #movemos el apuntador de A
bne $t0,$zero,ejecucion #comprueba que todavia hay cadena
fin:
sb $zero,0($t2)
sb $zero,0($t1)
li $v0,10
syscall