поясните пожалуйста этот листинг тут http://avtom.fet.mrsu.ru/prog_asm/ написано, что прога выводит на экран строку, хотя отладчики некорректно обрабатывают эту программу действительно выводит, но я не могу понять пояснения к этому примеру, там написано как они могут затирать int 20 когда они заносятся в стэк раньше int 20????? поясните пожалуйста такое!
Что значит "раньше"? Команда 'push ax' в данном контексте - это примерно то же, что и mov [sp-2], ax ; а там 9090h sub sp, 2 так как sp указывает на SUB01 (см. строка 5), то код команды int 20h - 0CDh 20h затирается значениями 90h 90h, т.е. nop nop и после выполнения push'а строки с 7-й и далее выглядят так: Код (Text): ... push ax nop nop mov ah, 9 ... и код, вместо того, чтобы бесславно сдохнуть, в смысле завершиться, в 8-й строке выполняется дальше.
с трудом понял получается из-за того что все сегменты в данном случае находятся в одном сегменте, то при наложение адресов сегмента стэка на адреса кода программы - код программы модифицируется в процессе её выполнения данными стэка... так?