2016-04-03 144 views
0

我需要編寫一個彙編程序,它將兩個有符號數相乘(在 二進制補碼系統中)。乘數和被乘數可以是8位數據範圍內的任何數字和任何符號。確保你的彙編程序是通用的。MIPS程序將兩個數相乘

這是我有,但我得到的錯誤「程序完成運行(下降)」,我不知道爲什麼。

.data 
str1: .asciiz "Enter a" 
str2: .asciiz "Enter b" 
str3: .asciiz "a*b = " 

main: 
li $v0, 4 
la $a0, str1 
syscall 

li $v0, 5 
syscall 
add $s0, $v0, $zero 

li $v0, 4 
la $a0, str2 
syscall 

li $v0, 5 
syscall 
move $s1, $v0 

mult $s0, $s1 
mflo $t2 
li $v0, 1 
move $a0, $t2 
syscall 

li $v0, 4 
la $a0, str3 
syscall 

li $v0, 10 
syscall 

回答

2

您已將代碼放入數據部分。在main:之前,您應該有.text指令。您也可能需要.globl main

+0

哦哇完全錯過了,謝謝! – smd

+0

'mars'模擬器是寬容的。如果沒有'main',它將從'.text'的第一個位置開始[不在原始代碼中]。另一方面,'spim'模擬器模擬'jal main'來啓動程序[並且,IIRC,'a0'是'argc','a1'是'argv'],需要'.text','。 globl main'和'main:'。沒有這一切,'spim'會抱怨一個未定義的引用,或者其他的一些 –