feat: Initial commit
This commit is contained in:
51
vigenere.asm
Normal file
51
vigenere.asm
Normal 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
|
||||
Reference in New Issue
Block a user