Отправляет email-рассылки с помощью сервиса Sendsay

Уроки по ассемблеру

  Все выпуски  

Уроки по ассемблеру Урок 26. Условный переход командой jne


Assembler. Рассылки сайта progs.biz
Выпуск № 16
 
Начало > Assembler > Masm > Урок 26

Фленов М. DirectX и С++. Искусство программирования.
Фленов М. DirectX и С++. Искусство программирования
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 26.

Сертификация
- Как устроиться на высокооплачиваемую работу?
- Как получить прибавку к зарплате?
- Как завоевать уважение коллег?
- Пройти сертификацию и продемонстрировать свой профессионализм. Подробнее…

Ассемблер.
Урок 26. Условный переход командой jne

С формальной точки зрения условный переход на метку для команды jne будет осуществляться тогда, когда значение флага ZF равно 0, и никакого перехода не будет, если значение флага ZF равно 1. С неформальной же точки зрения перед командой jne чаще всего идет команда cmp, которая сравнивает два числа и записывает результат сравнения в упомянутый флаг ZF.

Вот конкретный пример:

CSEG segment
org 100h
Begin:
    
    ; Записываем в регистры ax и bx 2 числа
    mov ax, 6h
    mov bx, 7h

    ; Сравниваем 2 числа.
    cmp ax, bx
    
    ;Переходим на метку e,
    ;если 2 числа не равны.
    jne e
    
    ;Вывод на экран символов 'A'.
    mov dl, 41h
    mov ah, 2h
    int 21h
    
    ;Переход в конец.
    jmp ex

e:

    ;Вывод на экран символов 'B'.
    mov dl, 42h
    mov ah, 2h
    int 21h
   
ex:
    ;Завершение программы.
    mov ah, 04Ch
    int 21h
CSEG ends
end Begin

Наша программа работает так: сначала мы записываем два числа в регистры ax и bx (эти числа разные в нашем примере). Затем мы их сравниваем с помощью команды cmp. Результат сравнения записывается во флаг ZF, хотя по большому счету этот факт нам не особенно и важен. После этого мы вызываем нашу команду jne, которая и пересылает нас по метке e, если два сравниваемых перед этим числа не равны (т. е. если значение флага ZF равно 0). И в случае равенства мы выводим на экран символ A, а в случае неравенства - B (именно B и выведется в нашем случае).

Если же мы запишем в регистры ax и bx равные числа, то программа выведет A.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2007 сайт progs.biz
© 2002-2007 Игорь Алексеев

В избранное