1
0

feat: Initial commit

This commit is contained in:
2024-03-22 13:53:19 +01:00
parent 44aa2938a2
commit 2a54d9dbc2
34 changed files with 1475 additions and 0 deletions

52
Temi esame/cambio.asm Normal file
View 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
View 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
View 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
View 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
View 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
View 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