【MIPS汇编简单算法实例 Lab14】用栈实现函数调用完成 统计字符串中某种数据类型的个数
以小写字母为例:
.data
arr:.byte '0','a','z',0,'1',1,'b','c',12,'p'
.text
main:
la $t0,arr # &arr
li $t1,11 #len
addiu $sp,$sp,-16
sw $t0,0($sp)
sw $t1,4($sp)
sw $ra,12($sp)
jal LiLetter
lw $ra,12($sp)
lw $t2,8($sp)
li $v0,10
syscall
LiLetter:
lw $a0,0($sp) #lite
lw $a1,4($sp)
li $t0,0
li $t1,0
addi $t2,$a1,-1
loop:
bgt $t0,$t2,out #loop
add $t1,$t0,$a0
lb $t1,($t1)
bgt $t1,0x60,goon
add $v1,$v1,$zero
addi $t0,$t0,1
b loop
goon:
blt $t1,0x80,goon2 #goon
add $v1,$v1,$zero
addi $t0,$t0,1
b loop
goon2:
addi $t0,$t0,1 #gon2
addi $v1,$v1,1
b loop
out:
sw $v1,8($sp) #out
jr $ra