2010-12-15 71 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