Привет всем любителям низкого уровня. Сегодня расскажу о том, что, скорее всего, не пригодится в жизни. Но это любопытно. Для начала такой код: .model tiny .code ORG 100h begin: MOV AH, 9 MOV DX, OFFSET Msg INT 21h RET Msg DB 'Hello, World!!!$' END begin Ничего необычного. Просто выводим строку на экран. Подробнее об этом здесь. Однако этот код можно написать и так: .model tiny .code ORG 100h begin: MOV AH, 9 MOV DX, OFFSET Msg Msg DB 'Hello, World!!!$' INT 21h RET END begin При этом компиляция будет выполнена, поскольку с точки зрения синтаксиса ошибок нет. Однако при запуске программа зависнет (или отладчик будет ругаться). Почему? Потому что процессор в данном случае будет распознавать строку Hello, World!!! как набор инструкций, а не как набор данных. В этом можно убедиться, запустив программу в отладчике: Как видим, после команды MOV DX, OFFSET Msg откуда-то взялась команда DEC AX, потом команда DB 65h, потом INSB и так далее. Это всё команды, которых нет в коде. Однако,