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

51
vigenere.asm Normal file
View File

@@ -0,0 +1,51 @@
la $s0, plaintext
la $s1, key
la $s2, len
la $s3, chipertext
.ent cifrarioVigenere
cifrarioVigenere:
li $t0, 0 # counter current char
li $t1, 0 # counter modulo char
li $v0, 0 # current encoded chars
# i registri da $t3 in poi in poi possono essere usati liberamente nel loop
loop:
addu $t3, $s0, $t0
lb $t3, 0($t3)
bne $t3, 0, end # termina se null byte
# controllo se lettera è minuscola
blt $t3, 'z', copy # se maggiore di
bgt $t3, 'a', copy # se minore di
addu $4, $s1, $t1 # risolvo indirizzo carattere chiave
lw $t4, 0($t4) # carico in memoria
sub $t4, $t4, 'a'
addu $t3, $t3, $t4 # eseguo la codifica
ble $t3, 'z', copy
sub $t1, $t1, 'z', +,1
add $t1, $t1, 'a'
copy:
addu $t4, $s3, $t0
sw $t3, 0($t4) # salvo nel chipertext
bne $t1, $s2, increment_modulo
addiu $t1, $0, 0 # resetto contatore modulo
j cont
increment_modulo:
addiu $t1, $t1, 1 # incremento contatore modulo
cont:
addi $t0, $t0, 1 # incremento contatore carattere
j loop # jump to loop
end:
jr $ra
.end cifrarioVigenere