2010-12-15 2 views
0

Использование Assemply Мне нужен простой код, который Наполните 2-мерный массивКак заполнить 2-мерный массив плавающими точками?

Update: То, что я получил до сих пор. Но все же у меня проблема с печатью массива!

.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. Lang. – iTurki 2010-12-15 18:07:04

ответ

0

Я нашел проблему.

Это было в процедуре печати. Условие перехода к выходу было неправильным.

Благодаря @blackbear & @Carl для тратить время, пытаясь помочь мне :)

0

Используйте 2 петли, один для столбцов и один для рядов. С учетом array[a][b] смещение array[x][y] является x + y*a

Смежные вопросы