2014-10-05 81 views
1

嗨,大家好我是ComArch的新手。我正在写作业作业。我的问题是我在我的程序中有一个循环,将用户int输入除以10,我的循环将通过并分割直到商数为0。目前它为我的商打印出0,但是打印出剩余的每个值。那么,我将如何修改我的代码来打印出分割后剩下的每一个剩余部分。打印出循环中的值

loop: 
    li $s0, 10 #divisor 

    div $t0,$s0 #divide input by 10 
    mflo $t0 #quotiant 
    mfhi $t3  #remainder 
    sw $t3, ($t1) #stores emainder into address of int_a 
    addi $t1,$t1,4 #increases the pointer 
bne $t0,0,loop 
+0

您必须执行打印输出的系统调用 – Wajahat 2014-10-05 05:02:26

+0

会发生什么情况?在循环之外? – AbeC 2014-10-05 05:12:54

+0

既然你想打印余数的每个值,因此它会在循环内部。 – Wajahat 2014-10-05 05:14:33

回答

0

你会发现在MIPS Architecture and Assembly Language Overview节“System Calls and I/O (SPIM Simulator)”详细介绍了如何打印值。

对于你的情况,在循环中,你将不得不打印$t3

li $v0, 1   # load appropriate system call code into register $v0; 
        # code for printing integer is 1 
move $a0, $t3 # move integer to be printed into $a0: $a0 = $t3 
syscall    # call operating system to perform operation 
+0

好的谢谢。还有一件事。由于我只是打印出每个部门的每个剩余部分。剩余部分保存在我定义的数组的地址中?所有,第一个剩余的还是最后的剩余? – AbeC 2014-10-05 05:20:22

+0

@AbrahamCarmona'$ t3'只在循环完成时保留最后的余数。 – VonC 2014-10-05 05:22:26

+0

所以只是为了得到一些方向。我将不得不创建一个新的循环,在商店中的每个剩余部分在某个地址?正确? @vonC – AbeC 2014-10-05 05:24:01