Código
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
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