// Verschiebung von invariantem Code void invar(unsigned far * ptBase, int xMax, int yMax) { unsigned i; for (i = 0; i < xMax * yMax; i++) { *ptBase++ = 0x0720; } } // Die Borland-Version _invar proc near push bp mov bp,sp push si push di mov di,word ptr [bp+8] mov cx,word ptr [bp+10] xor si,si jmp short @1@98 @1@50: les bx,dword ptr [bp+4] mov word ptr es:[bx],1824 add word ptr [bp+4],2 inc si @1@98: mov ax,di imul cx cmp ax,si ja short @1@50 pop di pop si pop bp ret _invar endp // Das Ergebnis von Microsoft-C @invar PROC NEAR push bp mov bp,sp push di push si mov di,dx mov bx,ax mov ax,di imul bx or ax,ax je $EX161 mov si,WORD PTR [bp+4] mov dx,WORD PTR [bp+6] mov ax,di mov cx,dx imul bx mov dx,cx mov cx,ax mov ax,1824 mov di,si mov es,dx rep stosw $EX161: pop si pop di mov sp,bp pop bp ret 4 @invar ENDP