MIPS - 按字符打印整数字符

时间:2018-05-22 23:46:06

标签: mips

所以我一直在做一项任务,最后一点就是我。

在我必须做的所有计算之后,最后的整数存储在任何" s"注册并保留其余的脚本。我现在需要从寄存器中打印出这个整数,但是我需要每行打印一个字符,所以我相信我只能使用系统调用11.任何人都有任何想法我怎么能这样做?

我尝试将整数移动到一个数组,然后打印出来就没有打印出来......

1 个答案:

答案 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