# # Autor: Ney Calazans # # O objetivo deste programa é implementar um programa trivial de # criptografia que toma um texto e o cifra a partir de uma chave. # A implementação chama uma rotina cripdecrip que criptografa # 1 caracter # .text .globl scrypt scrypt: la $s0,texto # Gera ponteiro para texto la $s1,cifra # Gera ponteiro para texto cifrado la $t2,chave # lb $t2,0($t2) # Obtém chave de criptografia doit: lb $t3,0($s0) # Lê caracter a criptografar beq $t3,$zero,end # Testa se fim do texto addi $sp,$sp,-2 # aloca espaço na pilha para 2 bytes sb $t2,1($sp) # empilha chave embaixo do topo sb $t3,0($sp) # empilha caracter no topo jal CripDecrip # Salta para subrotina CripDecrip lb $t3,0($sp) # desempilha caracter emcriptado addi $sp,$sp,2 # desaloca 2 bytes da pilha sb $t3,0($s1) # Escreve texto cifrado addiu $s0,$s0,1 # Incrementa ponteiro para texto addiu $s1,$s1,1 # Incrementa ponteiro para cifra j doit end: li $v0,4 # Código de serviço para imprimir cadeia la $a0,cifra # Coloca ponteiro do texto cifrado em $a0 syscall # e imprime li $v0,10 syscall # termina o programa # # Rotina para criptografar caracter # CripDecrip: lb $t0,0($sp) # lê caracter a criptografar da pilha lb $t1,1($sp) # lê chave de criptografia da pilha xor $t0,$t0,$t1 # criptografa caracter sb $t0,0($sp) # escreve char criptografado na pilha jr $ra # retorna para quem chamou .data texto: .asciiz "Mamae me ama!" chave: .word 0x7A cifra: .asciiz ""