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