2011-04-03 92 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