2010-12-15 64 views
0

使用Assemply 我需要一個簡單的代碼,填補二維數組如何用浮點填充二維數組?

更新: 這是我走到這一步。但是我仍然在打印陣列時遇到問題!

.data 

arrayf: .word 600 
msg1: .asciiz "Enter N: " 
msg2: .asciiz " rows by " 
msg3: .asciiz " values. Enter them: " 
doneFill: .asciiz "Done with filling array\n" 



.text 

main: 
li $v0, 4 
la $a0, msg1 
syscall 
li $v0, 5 
syscall 
move $a1, $v0 # $a1 = N 
li $v0, 1 
move $a0, $a1 
syscall 
li $v0, 4 
la $a0, msg2 
syscall 
move $a0, $a1 
addu $a0, $a0, 1 
li $v0, 1 
syscall 
li $v0, 4 
la $a0, msg3 
syscall 


la $t1, arrayf 
move $t0, $a1 
add $t0, $t0, 1 
mul $t0, $t0, $a1 # $t0 = N * (N+1) 

fill: 
li $v0, 6 
syscall 
swc1 $f0, 0($t1) 
addi $t1, $t1, 4 
subi $t0, $t0, 1 
bnez $t0, fill 
li $v0, 4 
la $a0, doneFill 
syscall 


la $t1, arrayf 
print 
lwc1 $f12, 0($t1) 
c.eq.s $f12, $f30 
bc1t exit 
li $v0, 2 
syscall 
add $t1, $t1, 4 
j print 
+1

什麼架構?單精度或雙精度?請澄清你所要求的,你已經做了什麼,以及你遇到的問題的確切性質。 – 2010-12-15 17:52:13

+0

它是單精度。問題說明:1-獲取輸入N作爲數組行的長度。 2-每行有N + 1項。這使它成爲一個數組[N] [N + 1]。 3-請用戶填寫陣列。 4-打印它 – iTurki 2010-12-15 17:59:39

+0

我忘記說我們使用MIPS Arch。郎。 – iTurki 2010-12-15 18:07:04

回答

0

我發現問題所在。

它在打印過程中。分支退出的條件是錯誤的。

感謝@blackbear & @Carl爲花時間試圖幫助我:)

+0

不客氣;) – BlackBear 2010-12-15 19:07:39

0

使用2個循環,一個用於列,一個用於行。給定array[a][b]array[x][y]的偏移量爲x + y*a

+0

謝謝,但這沒有幫助。請閱讀以上評論 – iTurki 2010-12-15 18:14:36

+0

@ 2rk:我不能做你的代碼,我的只是一個建議。如果您已經在編碼,但有麻煩在此發佈您的問題,我們會爲您提供幫助。 ;)PS:@Carl正確 – BlackBear 2010-12-15 18:17:38

+0

@BlackBear我添加了一個代碼。請檢查它。 – iTurki 2010-12-15 18:24:51