feat: Initial commit
This commit is contained in:
52
Temi esame/cambio.asm
Normal file
52
Temi esame/cambio.asm
Normal file
@@ -0,0 +1,52 @@
|
||||
DIM =, 6
|
||||
.data
|
||||
vetB: .byte 2, 14, 119, 54, 10, 41
|
||||
vetN: .space DIM
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
la $a0, vetB
|
||||
la $a1, vetN
|
||||
li $a2, DIM
|
||||
jal Cambio
|
||||
li $v0, 10 # codice per uscita dal programma
|
||||
syscall # fine
|
||||
.end main
|
||||
|
||||
.ent Cambio
|
||||
Cambio:
|
||||
|
||||
li $t0, 0 # contatore di riga
|
||||
loop:
|
||||
|
||||
li $t1, 0 # numero di cambi
|
||||
addu $t2, $t0, $a0
|
||||
lb $t2, ($t2) # carico la parola
|
||||
li $t3, 0 # contatore bit
|
||||
|
||||
# inizializzo last val
|
||||
andi $t4, $t2, 0x00000001
|
||||
|
||||
rileva_cambi:
|
||||
srl $t2, $t2, 1
|
||||
andi $t5, $t2, 0x00000001
|
||||
|
||||
beq $t4, $t5, cont
|
||||
addiu $t1, $t1, 1
|
||||
|
||||
cont:
|
||||
move $t4, $t5
|
||||
|
||||
addiu $t3, $t3, 1
|
||||
bne $t3, 7, rileva_cambi
|
||||
|
||||
addu $t2, $t0, $a1
|
||||
sb $t1, ($t2) # salvo il risultato in vetN
|
||||
|
||||
addiu $t0, $t0, 1
|
||||
bne $t0, $a2, loop
|
||||
|
||||
jr $ra
|
||||
.end Cambio
|
||||
92
Temi esame/codF.asm
Normal file
92
Temi esame/codF.asm
Normal file
@@ -0,0 +1,92 @@
|
||||
.data
|
||||
cognome:.asciiz "ROSSI"
|
||||
nome:.asciiz "GENNARO"
|
||||
data:.asciiz "120892"
|
||||
CF:.space 12
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
subu $sp, $sp, 4
|
||||
sw $ra, ($sp)
|
||||
la $a0, cognome
|
||||
la $a1, nome
|
||||
la $a2, data
|
||||
la $a3, CF
|
||||
jal CalcoloCF
|
||||
lw $ra, ($sp)
|
||||
addiu $sp, $sp, 4
|
||||
jr $ra
|
||||
.end main
|
||||
|
||||
.ent CalcoloCF
|
||||
CalcoloCF:
|
||||
# Calcolo cognome
|
||||
li $t0, 0
|
||||
move $t2, $a0
|
||||
genC:
|
||||
# salto delle vocali
|
||||
lb $t3, 0($t2)
|
||||
beq $t3 'A', next
|
||||
beq $t3 'E', next
|
||||
beq $t3 'I', next
|
||||
beq $t3 'O', next
|
||||
beq $t3 'U', next
|
||||
|
||||
# aggiungo carattere
|
||||
sb $t3, 0($a3)
|
||||
addiu $a3,$a3,1
|
||||
addiu $t0,$t0,1
|
||||
|
||||
next:
|
||||
addiu $t2,$t2,1
|
||||
bne $t0, 3, genC
|
||||
|
||||
# Calcolo nome
|
||||
li $t0, 0
|
||||
move $t2, $a1
|
||||
genC1:
|
||||
# salto delle vocali
|
||||
lb $t3, ($t2)
|
||||
beq $t3 'A', next1
|
||||
beq $t3 'B', next1
|
||||
beq $t3 'C', next1
|
||||
beq $t3 'D', next1
|
||||
beq $t3 'E', next1
|
||||
|
||||
# aggiungo carattere
|
||||
sb $t3, ($a3)
|
||||
addiu $a3,$a3,1
|
||||
addiu $t0,$t0,1
|
||||
|
||||
next1:
|
||||
addiu $t2,$t2,1
|
||||
bne $t0, 3, genC1
|
||||
|
||||
# Copio data
|
||||
move $t0, $a2
|
||||
lb $t1, ($t0)
|
||||
sb $t1, ($a3)
|
||||
lb $t1, 1($t0)
|
||||
sb $t1, 1($a3)
|
||||
|
||||
addiu $t0,$t0,4
|
||||
addiu $a3,$a3,4
|
||||
lb $t1, ($t0)
|
||||
sb $t1, ($a3)
|
||||
lb $t1, 1($t0)
|
||||
sb $t1, 1($a3)
|
||||
|
||||
jr $ra
|
||||
.end CalcoloCF
|
||||
|
||||
.ent MonthToChar
|
||||
MonthToChar:
|
||||
# Parametro in ingresso $a0 = 2 CARATTERI ESTRATTI DALLA DATA
|
||||
# (esempio: "01" per Gennaio)
|
||||
# Parametro in uscita $v0 = "A" per l'esempio di Gennaio
|
||||
# codice della procedura da non sviluppare
|
||||
li $v0, 'X'
|
||||
jr $ra
|
||||
.end MonthToChar
|
||||
102
Temi esame/codFmeglio.asm
Normal file
102
Temi esame/codFmeglio.asm
Normal file
@@ -0,0 +1,102 @@
|
||||
.data
|
||||
cognome:.asciiz "ROSSI"
|
||||
nome:.asciiz "GENNARO"
|
||||
data:.asciiz "120892"
|
||||
CF:.space 12
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
subu $sp, $sp, 4
|
||||
sw $ra, ($sp)
|
||||
la $a0, cognome
|
||||
la $a1, nome
|
||||
la $a2, data
|
||||
la $a3, CF
|
||||
jal CalcoloCF
|
||||
lw $ra, ($sp)
|
||||
addiu $sp, $sp, 4
|
||||
jr $ra
|
||||
.end main
|
||||
|
||||
.ent CalcoloCF
|
||||
CalcoloCF:
|
||||
subu $sp, $sp, 4
|
||||
sw $ra, ($sp)
|
||||
|
||||
# Calcolo cognome e nome
|
||||
move $t0, $a3 # destinazione
|
||||
addiu $t1, $t0, 6 # puntatore termine
|
||||
addiu $t2, $t0, 3 # puntatore swap
|
||||
move $t3, $a0 # parola
|
||||
|
||||
loop_lettere:
|
||||
# salto delle vocali
|
||||
lb $t4, 0($t3)
|
||||
beq $t4, 'A', next
|
||||
beq $t4, 'E', next
|
||||
beq $t4, 'I', next
|
||||
beq $t4, 'O', next
|
||||
beq $t4, 'U', next
|
||||
|
||||
# aggiungo carattere
|
||||
sb $t4, 0($t0)
|
||||
addiu $t0, $t0, 1
|
||||
|
||||
next:
|
||||
bne $t0, $t2, incr
|
||||
# cambio source al nome
|
||||
move $t3, $a1
|
||||
j en
|
||||
incr:
|
||||
addiu $t3, $t3, 1
|
||||
en:
|
||||
bne $t0, $t1, loop_lettere
|
||||
|
||||
# Copio la data
|
||||
move $t1, $a2
|
||||
lb $t2, ($t1)
|
||||
sb $t2, ($t0)
|
||||
lb $t2, 1($t1)
|
||||
sb $t2, 1($t0)
|
||||
|
||||
# Inserisco mese
|
||||
addiu $t0, $t0, 2
|
||||
addiu $t1, $t1, 2
|
||||
lw $a0, ($t1)
|
||||
andi $a0, $a0, 0x0000FFFF
|
||||
jal MonthToChar
|
||||
sb $v0, ($t0)
|
||||
|
||||
lb $t2, 2($t1)
|
||||
sb $t2, 1($t0)
|
||||
lb $t2, 3($t1)
|
||||
sb $t2, 2($t0)
|
||||
|
||||
# calcolo parity bit
|
||||
move $t0, $a3 # iteratore codice
|
||||
addiu $t1, $t0, 12 # puntatore termine
|
||||
li $t2, 0
|
||||
|
||||
parity:
|
||||
lb $t3, ($t0)
|
||||
xor $t2, $t2, $t3
|
||||
addiu $t0, $t0, 1
|
||||
bne $t0, $t1, parity
|
||||
sb $t2, ($t0)
|
||||
|
||||
lw $ra, ($sp) # ripristina $ra
|
||||
addu $sp, 4 # ripristina $sp
|
||||
jr $ra
|
||||
.end CalcoloCF
|
||||
|
||||
.ent MonthToChar
|
||||
MonthToChar:
|
||||
# Parametro in ingresso $a0 = 2 CARATTERI ESTRATTI DALLA DATA
|
||||
# (esempio: "01" per Gennaio)
|
||||
# Parametro in uscita $v0 = "A" per l'esempio di Gennaio
|
||||
# codice della procedura da non sviluppare
|
||||
li $v0, 'H'
|
||||
jr $ra
|
||||
.end MonthToChar
|
||||
57
Temi esame/minintrig.asm
Normal file
57
Temi esame/minintrig.asm
Normal file
@@ -0,0 +1,57 @@
|
||||
DIM = 8
|
||||
.data
|
||||
matrice:
|
||||
.byte 3, 1, 41, 5, 9, 26, 5, 35
|
||||
.byte 89, 79, 32, 3, 8, 46, 26, 4
|
||||
.byte 33, 8, 32, 79, 50, 28, 8, 4
|
||||
.byte 19, 71, 69, 39, 9, 37, 5, 10
|
||||
.byte 58, 20, 9, 74, 9, 44, 59, 2
|
||||
.byte 30, 7, 8, 16, 40, 6, 28, 6
|
||||
.byte 20, 8, 9, 98, 62, 80, 3, 48
|
||||
.byte 25, 34, 21, 1, 70, 6, 7, 9
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
subu $sp, $sp, 4
|
||||
sw $ra, ($sp)
|
||||
la $a0, matrice
|
||||
li $a1, 1
|
||||
li $a2, DIM
|
||||
jal maxInTriangolo
|
||||
# lettura del risultato calcolato dalla procedura
|
||||
lw $ra, ($sp)
|
||||
addiu $sp, $sp, 4
|
||||
jr $ra
|
||||
.end main
|
||||
|
||||
.ent maxInTriangolo
|
||||
maxInTriangolo:
|
||||
# ricerca max in riga
|
||||
li $v0, 0
|
||||
|
||||
mul $t0, $a1, $a2
|
||||
add $t0, $t0, $a0
|
||||
add $t1, $t0, $a2
|
||||
loop_riga:
|
||||
lw $t2, ($t0)
|
||||
blt $t2, $v0, cont_riga
|
||||
move $v0, $t2
|
||||
cont_riga:
|
||||
addiu $t0, $t0, 1
|
||||
bne $t0,$t1, loop_riga
|
||||
|
||||
|
||||
add $t0, $a0, $a2
|
||||
mul $t1, $a1, $a2
|
||||
add $t1, $t1, $t0
|
||||
loop_colonna:
|
||||
lw $t2, ($t0)
|
||||
blt $t2, $v0, cont_colonna
|
||||
move $v0, $t2
|
||||
cont_colonna:
|
||||
addu $t0, $t0, $a2
|
||||
bne $t0,$t1, loop_colonna
|
||||
|
||||
.end maxInTriangolo
|
||||
33
Temi esame/ortofrutta.asm
Normal file
33
Temi esame/ortofrutta.asm
Normal file
@@ -0,0 +1,33 @@
|
||||
#a0 matrice
|
||||
#a1 num
|
||||
#a2 SAC
|
||||
|
||||
.ent calcolaCosto
|
||||
calcolaCosto:
|
||||
li $t0, 0
|
||||
move $t1, a0
|
||||
li $t2,0
|
||||
li $t3,0
|
||||
|
||||
ciclo:
|
||||
lw $t4, 0($t1)
|
||||
addiu $t1,$t1,1
|
||||
addu $t2,$t2,$t1
|
||||
|
||||
lw $t4, 0($t1)
|
||||
addiu $t1,$t1,1
|
||||
addu $t3,$t3,$t1
|
||||
|
||||
lw $t4, 0($t1)
|
||||
addiu $t1,$t1,1
|
||||
beq $t4, 0, calc_rem # if $t4 =101 calc_rem goto target
|
||||
addu $t3, $t3, $a2
|
||||
calc_rem:
|
||||
blt $t3, 99, incr # if $t0 < $t1 then goto target
|
||||
sub $t3,$t3,100
|
||||
addiu $t2,$t2,1
|
||||
incr:
|
||||
addiu $t0, $t0, 1
|
||||
bne $t0, $a1, ciclo
|
||||
|
||||
.end calcolaCosto
|
||||
87
Temi esame/unamatrice.asm
Normal file
87
Temi esame/unamatrice.asm
Normal file
@@ -0,0 +1,87 @@
|
||||
N =, 3
|
||||
M =, 4
|
||||
.data
|
||||
matriceA:
|
||||
.word 0xAB317811, 0xCD514229, 0xEF832040, 0xA1346269
|
||||
.word 0xB2178309, 0xC3524578, 0x65702887, 0x59227465
|
||||
.word 0x14930352, 0x24157817, 0x39088169, 0x63245986
|
||||
matriceB:
|
||||
.word 0x39916800, 0x47900160, 0x62270208, 0x87178291
|
||||
.word 0xA7674368, 0xB2092278, 0xC3556874, 0xD6402373
|
||||
.word 0xE1216451, 0x24329020, 0x51090942, 0x11240007
|
||||
matriceC:
|
||||
.space N * M * 4
|
||||
|
||||
.text
|
||||
.globl main
|
||||
.ent main
|
||||
main:
|
||||
subu $sp, $sp, 4
|
||||
sw $ra, ($sp)
|
||||
la $a0, matriceA
|
||||
la $a1, matriceB
|
||||
la $a2, matriceC
|
||||
li $a3, N
|
||||
li $t0, M
|
||||
subu $sp, $sp, 4
|
||||
sw $t0, ($sp)
|
||||
jal MediaMatrice
|
||||
addiu $sp, $sp, 4
|
||||
lw $ra, ($sp)
|
||||
addiu $sp, $sp, 4
|
||||
jr $ra
|
||||
.end main
|
||||
|
||||
.ent MediaMatrice
|
||||
MediaMatrice:
|
||||
|
||||
mult $a3, $t0
|
||||
mflo $a3
|
||||
|
||||
li $t1, 0
|
||||
loop_colonna:
|
||||
|
||||
li $t2, 0
|
||||
loop_riga:
|
||||
|
||||
addu $t3, $t1, $t2
|
||||
sll $t3, $t3, 2
|
||||
addu $t3, $t3, $a0
|
||||
lw $t3, ($t3)
|
||||
|
||||
addu $t4, $t1, $t2
|
||||
sll $t4, $t4, 2
|
||||
addu $t4, $t4, $a1
|
||||
lw $t4, ($t4)
|
||||
|
||||
slt $t5, $t3, $0
|
||||
slt $t6, $t3, $0
|
||||
xor $t5, $t5, $t6
|
||||
|
||||
bne $t5, $0, opposto
|
||||
addu $t4, $t3, $t4
|
||||
srl $t4, $t4, 1
|
||||
|
||||
li $t5, 0x80000000
|
||||
and $t3, $t3, $t5
|
||||
or $t4, $t4, $t3
|
||||
|
||||
j salva_media
|
||||
opposto:
|
||||
add $t4, $t3, $t4
|
||||
sra $t4, $t4, 1
|
||||
|
||||
salva_media:
|
||||
addu $t3, $t1, $t2
|
||||
sll $t3, $t3, 2
|
||||
addu $t3, $t3, $a2
|
||||
sw $t4, ($t3)
|
||||
|
||||
addiu $t2, $t2, 1
|
||||
bne $t2, $t0, loop_riga
|
||||
|
||||
addu $t1, $t1, $t0
|
||||
bne $t1, $a3, loop_colonna
|
||||
|
||||
jr $ra
|
||||
.end MediaMatrice
|
||||
Reference in New Issue
Block a user