0

我试图弄清楚为什么它会在 div 之后立即中断。也许我设置 div 错误?或存储错误?另外,我是否称它为打印总距离?

li $t0, 284  #distance in miles from OR to WA
li $t1, 387  #6 hours and 27 minutes, 6 hours = 360 minutes +27 minutes, 387 minutes
li $t2, 5280 #5280 feet in a mile
li $t3, 60   #60 seconds in a minutes

main:
    mult $t0, $t2        #gets the total feet in the 284 miles and places it into $t4
    mfhi $t4

    mult $t1, $t3       #gets the total seconds in the 6 hours an 27 minutes
    mfhi $t5

    div $t4, $t5    #divides the total feet by the total seconds
    mflo    $t6
        li $v0, 1
    move $a0, $t6
    syscall

    addi $v0, $zero, 10 ##system call to leave the program
    syscall         ##exits the program 
4

2 回答 2

1

我没有看到您$v0在第一个syscall.

于 2013-02-25T01:16:42.930 回答
0

问题是你除以0。这怎么可能?好吧,您的产品 284*5280=1499520 和 387*60=23220 适合 32 位。mult生成 64 位产品,寄存器中的最高有效 32 位和hi寄存器中的最低有效 32 位lo。所以,hi两者之后都是 0 mults。然而由于某种原因,您决定使用hi而不是lo.

此外,奇怪的main:是在那些之后lis。因此,那些lis可能根本没有执行。

于 2013-02-25T01:40:47.700 回答