2011-04-03 90 views
0

我需要帮助调试以下代码。我试着像10倍以上,但我还是不明白,为什么我有这样一个奇怪的输出看到如下:MIPS部门问题

Enter a: 5 
Enter b: 2 
a/b = 268501012 (<--- weird output) 



# task4partial.asm 
# Given positive integers a and b, output a/b and a%b. 
    .data 
str1: .asciiz "Enter a: " 
str2: .asciiz "Enter b: " 
str3: .asciiz "a/b = " 
str4: .asciiz "a%b = " 
newline: .asciiz "\n" 
    .text 

main: li $v0, 4   # system call code for print_string 
    la $a0, str1   # address of str1 
    syscall    # print str1 

#get the first number from user, put it into $s0 

li $v0, 5   # system call code for read_int 
    syscall    # read an integer into $v0 from console 
    add $s0, $v0, $zero # copy $v0 into $s0 (a) 


#read print_string for str2 
li $v0, 4   # system call code for print_string 
    la $a0, str2   # address of str1 
    syscall    # print str1 

# get second number from user, put it into $t1 
li $v0, 5  #load syscall for read_int 
syscall   #make the syscall 
move $s1, $v0  #move the number read into $s1(b) 

#do the calculations 
div $s0, $s1  #diving $s0 by $s1 
mflo $t0   #storing value of lo(quotient) in 
       #register $t0 
mfhi $t1   #storing value of hi(remainder) in 
       #register $t1 

#read print_string for str3 
li $v0, 4   # system call code for print_string 
    la $a0, str3   # address of str1 
    syscall    # print str1 

#print a/b 
li $v0, 1  #load syscall print_int into $v0 
move $t2, $t0  #move the number to print into $t2 
syscall 

#end of program 
li $v0, 10  #system call code for exit 
syscall 

回答

0

错就错在这条线:move $t2, $t0 #move the number to print into $t2 为print_int syscall-的参数例程必须放入$a0,而不是$t2

+0

谢谢! :)幸运的是,你回答了,否则我仍然会被困在那里试图找出我的代码有什么问题! – Jan 2011-04-03 12:41:40