; Tiny Encryption Algorithm ; A public domain block cipher by David Wheeler and Roger Needham ; 80386 assembly implementation by Fauzan Mirza ; TEA uses a 128 bit key and operates on 64 bit data blocks .model tiny .code .386 org 100h Start: mov si,offset Key mov di,offset Data call Encrypt mov si,offset Key mov di,offset Data call Decrypt ret Key: db "0000","0000","0000","0000" Data: db "0000","0000" sum equ eax y equ ebx z equ ecx delta equ edx rounds equ di t equ ebp v0 equ dword ptr [di] v1 equ dword ptr [di+4] k0 equ dword ptr [si] k1 equ dword ptr [si+4] k2 equ dword ptr [si+8] k3 equ dword ptr [si+12] Encrypt: push di mov y,v0 mov z,v1 xor sum,sum mov delta,9e3779b9h ; sqr(5)-1 * 2^31 mov rounds,32 ELoopR: add sum,delta mov t,z shl t,4 add y,t mov t,k0 xor t,z add y,t mov t,z shr t,5 xor t,sum add y,t add y,k1 ; mov t,y shl t,4 add z,t mov t,k2 xor t,y add z,t mov t,y shr t,5 xor t,sum add z,t add z,k3 dec rounds jnz ELoopR pop di mov v0,y mov v1,z ret Decrypt: push di mov y,v0 mov z,v1 mov delta,9e3779b9h ; sqr(5)-1 * 2^31 mov sum,delta shl sum,5 mov rounds,32 DLoopR: mov t,y shl t,4 sub z,t mov t,k2 xor t,y sub z,t mov t,y shr t,5 xor t,sum sub z,t sub z,k3 ; mov t,z shl t,4 sub y,t mov t,k0 xor t,z sub y,t mov t,z shr t,5 xor t,sum sub y,t sub y,k1 sub sum,delta dec rounds jnz DLoopR pop di mov v0,y mov v1,z ret end Start  .