所以我一直在做一项任务,最后一点就是我。
在我必须做的所有计算之后,最后的整数存储在任何" s"注册并保留其余的脚本。我现在需要从寄存器中打印出这个整数,但是我需要每行打印一个字符,所以我相信我只能使用系统调用11.任何人都有任何想法我怎么能这样做?
我尝试将整数移动到一个数组,然后打印出来就没有打印出来......
答案 0 :(得分:0)
查看我的函数intprint
。它以递归方式完成工作:
# Print integer character by character on separate lines
# Tested with MARS
.globl main
main:
li $s0, 12345 # integer to be printed
li $v0, 1 # print int
move $a0, $s0
syscall
li $v0, 11 # print char
li $a0, '\n'
syscall
# print integer char by char recursively
move $a0, $s0
jal intprint
li $v0, 10 # exit
syscall
intprint:
addi $sp, $sp, -8 # preserve registers in stack
sw $ra, 0($sp)
sw $s0, 4($sp)
move $s0, $a0
ble $s0, 9, output
li $t0, 10 # divide by 10
div $s0, $t0
mfhi $s0 # remainder
mflo $a0 # quotient
jal intprint # recursion
output:
add $a0, $s0, '0'
li $v0, 11
syscall
li $a0, '\n'
syscall
lw $ra, 0($sp) # restore registers from stack
lw $s0, 4($sp)
addi $sp, $sp, 8 # restore stack pointer
jr $ra
输出:
12345
1
2
3
4
5