Научите, пожалуйста, дурака, как понять Ассемблер :(

Тема в разделе "WASM.BEGINNERS", создана пользователем probka, 11 фев 2008.

Статус темы:
Закрыта.
  1. probka

    probka New Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    170
    Здравствуйте! Моя беда в том, что я не понимаю асм. У него есть какая-то структура исполнения. Есть система написания прог на Асме. Я ее не понимаю. В каких случаях нужно сохранять регистры? Почему различаются команды jz и jmp? Почему они вызывают ошибку? Мои проги, все, некуда негодятся. Они не рабочие. Хлам. Самое интересное, что я не могу понять, почему у меня не получается? От чего зависит коректное исполнение программы? Может подскажите, что мне сделать, чтоб уже понять.
     
  2. Joes

    Joes New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    98
    У.. батенька, как все запущено :)

    Есть опыт программирования на других языках программирования (ЯВУ?). Если да, то возможно поможет аналогия:

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

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
Статус темы:
Закрыта.