Assemblaggio - Istruzioni LODS

In crittografia, un codice Caesar è una delle tecniche di crittografia più semplici conosciute. In questo metodo, ogni lettera nei dati da crittografare viene sostituita da una lettera con un numero fisso di posizioni lungo l'alfabeto.

In questo esempio, crittografiamo un dato semplicemente sostituendo ogni alfabeto con uno spostamento di due alfabeti, quindi a sarà sostituito da c, b con d e così via.

Usiamo i LOD per caricare la stringa originale "password" nella memoria.

section .text
   global _start         ;must be declared for using gcc
	
_start:                  ;tell linker entry point
   mov    ecx, len
   mov    esi, s1
   mov    edi, s2
	
loop_here:
   lodsb
   add al, 02
   stosb
   loop    loop_here          
   cld
   rep     movsb
	
   mov     edx,20        ;message length
   mov     ecx,s2        ;message to write
   mov     ebx,1         ;file descriptor (stdout)
   mov     eax,4         ;system call number (sys_write)
   int     0x80          ;call kernel
	
   mov     eax,1         ;system call number (sys_exit)
   int     0x80          ;call kernel
	
section .data
s1 db 'password', 0 ;source
len equ $-s1

section .bss
s2 resb 10               ;destination

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

rcuuyqtf