Código (asm) [Seleccionar]
macro MacroYSTEncript Posicion,Tamaño{
local ..Caracter,..numero
..numero = Tamaño
repeat Tamaño
..numero = ..numero - 1
load ..Caracter from Posicion+%-1
..Caracter = byte ..Caracter + 3
..Caracter = byte not ..Caracter
..Caracter = byte ..Caracter xor 45
..Caracter = byte ..Caracter xor ..numero
store ..Caracter at Posicion+%-1
end repeat
}
Código (ASM) [Seleccionar]
proc YSTEncript,cCadena,cBuffer,cTamaño
push eax ebx ecx edx esi
mov ebx,[cBuffer]
mov esi,[cCadena]
dec esi
dec ebx
.Eb:
dec [cTamaño]
inc esi
inc ebx
mov cl,byte[esi]
add cl,3
mov byte[ebx],cl
not byte[ebx]
xor byte[ebx],45
mov edx,[cTamaño]
xor byte[ebx],dl
cmp [cTamaño],0
jne .Eb
pop esi edx ecx ebx eax
ret
endp
proc YSTDesencript,cCadena,cBuffer,cTamaño
push eax ebx ecx edx esi
mov ebx,[cBuffer]
mov esi,[cCadena]
dec esi
dec ebx
.Eb:
dec [cTamaño]
inc esi
inc ebx
mov cl,byte[esi]
mov byte[ebx],cl
mov edx,[cTamaño]
xor byte[ebx],dl
not byte[ebx]
xor byte[ebx],45
sub byte[ebx],3
cmp [cTamaño],0
jne .Eb
pop esi edx ecx ebx eax
ret
endp