[MIPS] matrice

di il
2 risposte

[MIPS] matrice

Stampo gli elementi della matrice sequenzialmente da (0,0) fino a (N-1, M-1) senza puntatori ma tramite indici. Avete qualche consiglio su come trattare le matrici?? dato che tra poco tempo mi ci faranno buttare il sangue all'uni

.globl main
.data
matrice: .word 0,1,2,3,4,5,6,7,8
Nrighe: .word 3
Ncolonne: .word 3
accapo: .asciiz "\n"
.text
main:
	la $s1, accapo
	li $t2, 0 #indice riga
	li $t3, 0 #indice colonna
	li $t4, 0 #indice scorrimento
	lw $t0, Nrighe	
	lw $t1, Ncolonne	
	
ciclo:	
	beq $t3, $t1, fineCicloColonna
	
	sll $t5, $t4, 2
	lw $s0, matrice($t5)
	
	li $v0, 1
	move $a0, $s0
	syscall
	
	li $v0, 11
	li $a0, 32
	syscall


	addi $t3, $t3, 1
	addi $t4, $t4, 1
	
	j ciclo

fineCicloColonna:

	addi $t2, $t2, 1
	
	beq $t2, $t0, fine  #controllo se ho superato l'ultima riga e esco
	
	li $v0, 4
	la $a0, accapo
	syscall
	
	xor $t3, $t3, $t3
	j ciclo
	
fine:
	li $v0, 10
	syscall
	

2 Risposte

  • Re: [MIPS] matrice

    Piccola evoluzione che stampa solo la diagonale (per chi fosse interessato).
    
    .globl main
    .data
    matrice: .word 0,1,2,3,4,5,6,7,8
    Nrighe: .word 3
    Ncolonne: .word 3
    accapo: .asciiz "\n"
    .text
    main:
    	la $s1, accapo
    	li $t2, 0 #indice riga
    	li $t3, 0 #indice colonna
    	li $t4, 0 #indice scorrimento
    	lw $t0, Nrighe	
    	lw $t1, Ncolonne	
    	li $t8, 0
    	
    ciclo:	
    
    	subi $t8, $t8, 1
    	beq $t3, $t1, fineCicloColonna
    	
    	beq $t3, $t2, stampa
    	
    	addi $t3, $t3, 1
    	addi $t4, $t4, 1
    	
    	j ciclo
    	
    stampa:	
    	sll $t5, $t4, 2
    	lw $s0, matrice($t5)
    	
    	li $v0, 1
    	move $a0, $s0
    	syscall
    	
    	li $v0, 11
    	li $a0, 32
    	syscall
    
    
    	addi $t3, $t3, 1
    	addi $t4, $t4, 1
    	
    	j ciclo
    
    fineCicloColonna:
    
    	addi $t2, $t2, 1
    	
    	beq $t2, $t0, fine  #controllo se ho superato l'ultima riga e esco
    	
    	li $v0, 11
    	li $a0, 32
    	syscall
    	
    	xor $t3, $t3, $t3
    	j ciclo
    	
    fine:
    	li $v0, 10
    	syscall
    	
    	
    
    
  • Re: [MIPS] matrice

    Ciao
    per il computer le matrici non esistono sono semplicemente dei vettori.
    di conseguenze basta che calcoli bene l'indice da impostare.
    per scrivere/leggere i dati e il gioco e fatto
    le riche e le colonne servono appunto per calcolare l'indice.
    quindi se noi vogliamo l'elemento che si trova alle coordinate 1,2
    basta fare index=((riga-1)+(colonna-1))*4
    il *4 e perchè noi utilizziamo delle word
    riga-1 e colonna-1 invece è perchè in assembler i vettori iniziano da 0 e non da 1
    sapendo ciò puoi comodamente affrontare tutti gli esercizi che ti danno all'università
Devi accedere o registrarti per scrivere nel forum
2 risposte