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

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

  Все выпуски  

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


Информационный Канал Subscribe.Ru

Assembler. Уроки с сайта http://progs.biz

Рассылка №12

Assembler. Урок 21. Условный переход командой jcxz.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 21. Условный переход командой jcxz.

Павловская Т. А. C/C++. Программирование на языке высокого уровня
Павловская Т. А. C/C++. Программирование на языке высокого уровня
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Обзор книг по программированию
Обзор новых книг по программированию. Включает книги как по традиционному программированию (Visual C++, Delphi, Visual Basic.NET, C#, Java,...), так и по WEB-программированию (JavaScript, PHP, ASP, ASP.NET, Perl,...). Кроме того, предлагается обзор книг по компьютерным сетям, безопасности, сертификации и др.

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

В Ассемблере существуют несколько команд для условного перехода. Для одних условий одни, для других - другие. Все они начинаются на j - от английского слова jump.

Одна из наиболее простых команд - это команда jcxz. Синтакис у нее такой:

jcxz label

Тут label - это метка, на которую перейдет выполнение команды если содержимое регистра cx равно нулю. Если же содержимое этого регистра не равно нулю, то будет выполена просто следующая за jcxz команда.

Вот пример:

CSEG segment
org 100h
Begin:
    
    ;Записываем в регистр cx число раз,
    ;которое цикл должен выполнится.
    mov cx, 5h
    
cont:
    ;Переходим в конец программы,
    ;если счетчик стал равен нулю.
    jcxz e
    
    ;Уменьшаем на 1 счетчик.
    sub cx, 1;
    
    ;Вывод на экран символов '*'.
    mov dl, 2Ah
    mov ah, 2h
    int 21h
    
    ;Переход в начало цикла.
    jmp cont

e:
    ;Завершение программы.
    mov ah, 04Ch
    int 21h
CSEG ends
end Begin

Программа действует так - сначала мы записываем в cx, сколько раз наш цикл должен выполнится. Затем в строке

...
jcxz e
 ...

мы проверяем, не равно ли значение в cx нулю. Если оно равно нулю, то мы переходи на метку e в конце программы и заканчиваем работу. Если же счетчик пока нулю не равен, то мы сначала уменьшаем счетчик на 1, потом выводим уже известным нам способом на экран звездочку (ее код - 2A) и переходим по метке на начало цикла.

Наша программа выведет на экран 5 звездочек - столько, сколько мы записали в начале программы в регистр cx.

Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное