feat: Initial commit
This commit is contained in:
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
|
||||
Reference in New Issue
Block a user