Здравствуйте! Моя беда в том, что я не понимаю асм. У него есть какая-то структура исполнения. Есть система написания прог на Асме. Я ее не понимаю. В каких случаях нужно сохранять регистры? Почему различаются команды jz и jmp? Почему они вызывают ошибку? Мои проги, все, некуда негодятся. Они не рабочие. Хлам. Самое интересное, что я не могу понять, почему у меня не получается? От чего зависит коректное исполнение программы? Может подскажите, что мне сделать, чтоб уже понять.
У.. батенька, как все запущено Есть опыт программирования на других языках программирования (ЯВУ?). Если да, то возможно поможет аналогия: Регистры = это переменные. Если не хочешь что бы значение переменных затиралось, сохраняй их. Работа с регистрами намного более быстрая чем работа с "реальными" переменными которые находятся в памяти. К сожалению, их не бесконечное количество. Флаги - это регистр, который модифицируется какими либо коммандами. Например возьмем следующий пример: mov eax, 1 ; В регистр eax положим 1. mov не меняет флаги cmp eax, 1 ; Сравним eax с 1, меняет флаги Установит флаг ZF (это бит в регистре флагов) в 1. Почему установит - читать туториалы или документацию по процессору. jz (он же je) - прыжок если в регистрах флагов стоит ZF. Если не стоит, прыжка не произойдет. jmp - безусловный прыжок, никаких флагов не проверяет. Аналог goto во всяких ЯВУ.