我需要帮助调试以下代码。我已经尝试了10次或更多次,但我仍然不明白为什么我会得到如下所示的奇怪输出:
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 :(得分:0)
错误在于这一行:move $t2, $t0 #move the number to print into $t2
print_int系统调用例程的参数必须放在$a0
中,而不是放入$t2
。