2012-04-06 122 views
0

我正在處理涉及MIPS和矩陣的學校項目。基本上我必須寫一個程序,給定一個N參數的輸入(這應該是我的平方N×N矩陣的大小),並且裏面的所有元素(再次,通過來自用戶的輸入插入)應該計算點積的這兩個矩陣,並將結果輸入第三個。MIPS和矩陣

我第一次來到這個代碼,它做點積,但在兩個靜態矩陣之後。不是通過輸入。 兩件事。我應該如何改變它以使用戶插入兩個矩陣(以及N大小),並且大部分是我的矩陣初始化是正確的? 我沒有這樣做過,「[(我* num_columns + j)* 4],我想知道我得到的是純粹的運氣,而不是合理化的問題 在此先感謝任何人想幫助我和遺憾,對任何語言錯誤。

.data 
v1:  .word 1,2,3,4 

    .word 5,6,7,8 

    .word 9,10,11,12 

v2:  .word 10,20,30,40 

    .word 10,10,10,10 

    .word 10,10,10,10 

v3:  .word 0:12 


c: .word 4 

space: .asciiz "\n" 

.text 

main: 


li $t0, 0 
li $t2, 12 
la $t9, c 
li $t8, 0 


loop: 
lw $t3, v1($t0) 
lw $t4, v2($t0) 

mul $t3, $t3, $t4 
addi $t2, $t2, -1 

li $v0, 1 
move $a0, $t3 
syscall 

li $v0, 4 
la $a0, space 
syscall 

sw $t3, v3($t0) 
addi $t0, $t0, 4 
addi $t8, $t8, 1 
bne $t2, $zero, loop 


li $v0, 10 
syscall 

回答

0

沒有太多的人可以做給你展示如何完成比指導你學習語言的好一點。當你遇到麻煩,張貼你有什麼其他的任務和問題,有人會幫助。這是一個框架,可能有助於說明如何啓動

.text 
main: 
    #call prompt_size  
    #s0 = return val = N 

    #a0 = s0: arg = N 
    #call new_matrix 
    #s1 = return val = address of matrix 

    #repeat that two more times 

    #call fill_matrix 3 times, sending each matrix address 
    #calcuate dot product 
    #exit 
prompt_size: 
    #output prompt 
    #read integer 
    #return 
new_matrix: 
    #t0 = (arg)^2 
    #call sbrk(t0) 
    #return 
fill_matrix: 
    #for each byte, prompt for an integer, and insert it 
prompt_matrix_element: 
    #output_prompt 
    #read integer 
    #return 
exit: 
    #exit 
+0

謝謝先生,這的確是一個 好的開始。我是這種語言的初學者,但突然不得不面對這些問題。在Java中,我會解決它沒有大麻煩,但在MIPS上,像我這樣的初學者處理數組/矩陣初始化是一個大問題。無論如何,我會從你展示給我的形狀開始建立我的項目。謝謝。 – Rickenbacker 2012-04-06 20:37:52