Проблема с разделением MIPS - PullRequest
       30

Проблема с разделением MIPS

0 голосов
/ 03 апреля 2011

Мне нужна помощь с отладкой следующего кода. Я пробовал 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

1 Ответ

0 голосов
/ 03 апреля 2011

Ошибка в этой строке: move $t2, $t0 #move the number to print into $t2 Аргумент для syscall-процедуры print_int должен быть помещен в $a0, а не в $t2.

...