Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 44.Ассемблер.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
55.65 Кб
Скачать

2.13 Команды управления циклами

Используются для повторения цикла известное число раз. Количество повторе­ний предварительно записывается в регистр СХ (счетчик циклов). Каждый цикл автоматически уменьшает показание СХ на 1.

Основная командат LOOPметка.

Циклы повторяются до обнуления СХ. Команда уменьшает значение в регистре СХ на единицу и передает управление по прямому адресу — метке, если значение в регистре СХ не равно нулю; в противном случае выполняется следующая по по­рядку команда. Флаги не меняет. Существуют еще четыре альтернативные ко­манды, в которых можно поставить дополнительные условия. Передачи управле­ния командами типа LOOP только ближние и короткие (метки near и short).

2.14 Команды прерывания

У команд прерывания есть некоторая аналогия с командами вызова процедуры CALL прекращается выполнение текущей программы и осуществляется переход к подпрограмме обработки прерывания; но при прерывания* нет деления на процедуры near или far, так как начальный адрес подпрограммы обработки пре­рывания (вектор прерывания) берется из таблицы векторов ОЗУ и он всегда32-битовый; кроме того, при вызове процедуры в стеке сохраняется только адрес возврата, а при прерывании — еще и флаги.

Имеются три команды прерывания.

□ INTорг — прервать (interrupt) выполнение программы и передать управление по одному из 256 адресов (векторов прерывания), определяемых номером прерывания — орг. По этой команде микропроцессор:

О помещает в стек содержимое регистров: FL(флагов),CS(сегмента ко­манд),IP(указателя команд);

О обнуляет флаги TF и IF(флаги системного прерывания и блокировки пре­рывания);

О загружает в CS и IP, соответственно, второе и первое слова вектора преры­ваний, считанного из таблицы векторов в ОЗУ по адресу 4 х орг (4 х но­мер прерывания); вся таблица векторов занимает 1024 байт, то есть всего может быть 256 различных векторов прерывания. Например, командаINT1Ahсчитает из ОЗУ вектор, находящийся по адресу 68h- 4 •lAh, то есть в регистр CS будет загружен адрес сегмента из слова по адресу 6Ah, а в ре­гистр IP— из слова по адресу 68hсмещение программы обработки этого прерывания.

Команда сбрасывает флаги IF- 0 иTF. - 0.

  • INTO— прервать по переполнению (interruptifoverflow), при возникновении переполнения флаг OF- 1 и управление передается по адресу ЮН (аналог команды INT4). Команда сбрасывает флаги IF - 0 иTF-0.

  • IRET— возврат из обработки прерывания (interruptreturn), обеспечивает воз­ врат из программы обработки прерывания. IRET— последняя команда под­ программы обработки прерывания, по этой команде из стека извлекаются три последние слова и загружаются в регистры IP,CS и FL, при этом содержимое SP увеличивается на 6. Команда устанавливает значения всех флагов.

11