CPU 386 GLOBAL decode SECTION .text treat: PUSH EAX DEC ESI MOVZX EAX, WORD[EBX+ESI*2] XOR EAX, ESI MOV [EDX+ESI], AL INC ESI POP EAX RET decode: PUSH EBP MOV EBP, ESP PUSH EBX PUSH ECX PUSH EDX PUSH ESI MOV EBX, [EBP+8] ; t[] MOV EDX, [EBP+12] ; s[] MOVZX ECX, WORD[EBP+16] ; n MOV ESI, 1 PUSH ESI run: POP ESI SAL ESI,1 CMP ESI, ECX JGE end PUSH ESI CALL run POP ESI INC ESI CMP ESI, ECX JGE end PUSH ESI CALL run POP ESI end: DEC ESI SAR ESI,1 PUSH ESI CALL treat POP ESI RET POP ESI POP EDX POP ECX POP EBX POP EBP RET