CPU 386 GLOBAL decode EXTERN afficherInt32 SECTION .text decode: PUSH EBP MOV EBP, ESP PUSH EBX PUSH ECX PUSH EDX PUSH ESI PUSH EDI MOV EBX, [EBP+8] ; t[] MOV EDX, [EBP+12] ; s[] MOVZX ECX, WORD[EBP+16] ; n MOV ESI, 1 MOV EDI, 0 run: PUSH ESI CMP EDI, ECX JGE exit SHL ESI,1 CMP ESI, ECX JGE end PUSH ESI CALL run POP ESI INC ESI PUSHA PUSH ESI CALL afficherInt32 POP ESI POPA CMP ESI, ECX JGE end1 PUSH ESI CALL run POP ESI end1: DEC ESI end: SHR ESI,1 PUSH ESI CALL treat POP ESI JMP run exit: POP EDI POP ESI POP EDX POP ECX POP EBX MOV ESP, EBP POP EBP RET treat: PUSH EBP MOV EBP, ESP MOV ESI, [EBP+8] PUSH EAX MOV AX, WORD[EBX+ESI*2] XOR AX, DI MOV [EDX+EDI-2], AL INC EDI POP EAX MOV ESP, EBP POP EBP RET