Поробуйте откомпилить и запустить при активном Ic'е следующий код: (не забудьте i3here on прописать) .code start: assume FS:nothing push offset Msg ; SEH push FS:[0] mov FS:[0], esp int 3 db 66h jmp @@1 Msg: invoke MessageBox, 0, addr szMessage, 0, 0 @@1: invoke ExitProcess, 0 szMessage db "Hello!",0 end start Как вы думаете, что произойдет? Ice будет показывать прыжок на @@1 в обход мессаджа, на самом деле префикс 66h обрежет адрес джампа до 2-х байт, врезультате переход будет осуществлен на недопустимый адрес (offset @@1 and 0FFFFh) и SEH передаст управление на метку Msg.
это глюк не si, а конкретно его дизассемблера. Этот глюк вообще присущ многим дизассемблерам, которые 'забывают' усекать до 16 бит целевой адрес 16-битного перехода в 32-битном режиме.
SEH кривой для краткости, так как ExitProcess освобождает все русурсы, в т. ч. уничтожает SEH, то проблем возникнуть не должно. Кто знает - поймёт, для новичков рекомендую почитать статью "Win32™ SEH изнутри".