
- •Программное управление — основа автоматизации вычислительного процесса
- •2 Состав машинных команд
- •3 Режимы работы компьютеров
- •3.1 Однопрограммные и многопрограммные режимы
- •I.Система прерываний программ в пк
- •3.2 Адресация регистров и ячеек памяти в пк
- •3.3 Относительная адресация
- •II.Стековая адресация
- •3.4 Элементы программирования на языке ассемблер
- •4 Основные компоненты языка ассемблер
- •4.1Алфавит языка
- •4.2 Константы (числа и строки)
- •4.3 Директивы (псевдооператоры)
- •4.4 Модификаторы
- •4.5 Адресация регистров и ячеек памяти в ассемблере
- •4.6 Непосредственная адресация
- •4.7 Прямая адресация регистров мпп
- •4.8 Адресация ячеек оп
- •Основные команды языка ассемблер
- •A.Команды пересылки данных
- •I.Команды сложения, вычитания и сравнения
- •1.Команды приращения
- •A.Команды умножения
- •I.Команды безусловной передачи данных
- •4.9 Команды перехода к подпрограмме и выхода из подпрограммы
- •4.10 Команда перехода к подпрограмме: call opr
- •4.11 Команда выхода из подпрограммы
- •4.12 Команды условной передачи управления
- •4.13 Команды условной передачи управления для беззнаковых данных
- •4.14 Команды условной передачи управления для знаковых данных
- •4.15 Команды условной передачи управления для прочих проверок
- •4.16 Команды управления циклами
- •4.17 Команды прерывания
- •4.18Основные директивы ассемблера
- •4.19 Директивы определения идентификаторов
- •4.20 Директивы определения данных
- •Директивы определения сегментов и процедур
- •4.21 Директивы управления трансляцией
- •5 Краткие сведения о программировании процедур работы с устройствами ввода-вывода
- •5.1 Программирование работы с дисплеем
- •5.2 Видеооперации с прерыванием 10н bios
- •5.3 Видеооперации с прерыванием 21н dos
- •5.4 Программирование работы с клавиатурой
- •5.5 Программирование работы с принтерами
- •5.6 Печатающие устройства параллельного типа
- •5.7 Печатающее устройство последовательного типа
- •5.8 Программирование работы с файлами
- •5.9 Прерывания, используемые при работе с файлами на дисках
- •5.10 Некоторые аспекты создания исполняемых программ
- •5.11 Процедуры формирования программы
- •5.12 Структура исходной программы на языке ассемблера для получения исполняемой программы .Ехе
- •5.13 Основные сведения о листинге и его структуре
- •5.14 Особенности структуры машинных команд
- •5.14 Последовательность работы пк при выполнении программы
- •6 Краткие сведения об отладчике программ debug
- •6.1 Основные команды отладчика debug
4.15 Команды условной передачи управления для прочих проверок
JE/JZ (Jump if Equal/Zero) — переход, если равно/нуль (ZF =1).
JNE/JNZ (Jump if Not Equal/Not Zero) — переход, если не равно/не нуль (ZF = 0).
JS (Jump if Sign) — переход, если есть знак (отрицательно) (SF =1).
JNS (Jump if Not Sign) — переход, если нет знака (положительно) (SF = 0).
JC (Jump if Carry) — переход, если есть перенос (аналог JB) (CF = 1).
JNC (Jump if Not Carry) — переход, если нет переноса (аналог JNB) (CF = 0).
JO (Jump if Overflow) — переход, если есть переполнение (OF =1).
JNO (Jump if Not Overflow) — переход, если нет переполнения (OF = 0).
JP/JPE (Jump if Parity/Parity Even) — переход, если есть четность (PF =1).
JNP/JPO (Jump if No Parity/Parity Odd) — переход, если нет четности (PF = 0).
JCXZ (Jump if CX is Zero) — переход, если содержимое регистра СХ равно О (СХ = 0).
4.16 Команды управления циклами
Используются для повторения цикла известное число раз. Количество повторений предварительно записывается в регистр СХ (счетчик циклов). Каждый цикл автоматически уменьшает показание СХ на 1. Основная команда:
LOOP метка:
Цикл (loop until count complete — повторять до обнуления СХ). Команда уменьшает значение в регистре СХ на единицу и передает управление по прямому адресу — метке, если значение в регистре СХ не равно нулю; в противном случае выполняется следующая по порядку команда. Флаги не меняет. Существуют еще четыре альтернативные команды, в которых можно поставить дополнительные условия. Передачи управления командами типа lоор только ближние и короткие (метки near и short).
4.17 Команды прерывания
У команд прерывания есть некоторая аналогия с командами вызова процедуры CALL: прекращается выполнение текущей программы и осуществляется переход к подпрограмме обработки прерывания; но при прерываниях нет деления на процедуры near или far, так как начальный адрес подпрограммы обработки прерывания (вектор прерывания) берется из таблицы векторов ОЗУ всегда 32-битовым; кроме того, при вызове процедуры в стеке сохраняется только адрес возврата, а при прерывании еще и флаги.
Имеются три команды прерывания.
INT орr:
Прерывание (interrupt — прервать). Прерывает выполнение программы и передает управление по одному из 256 адресов (векторов прерывания), определяемых номером прерывания — орr. По этой команде микропроцессор:
помещает в стек содержимое регистров: FL (флагов), CS (сегмента команд), IP (указателя команд);
обнуляет флаги TF и IF (флаги системного прерывания и блокировки прерывания);
загружает в CS и IP соответственно второе и первое слова вектора прерываний, считанного из таблицы векторов в ОЗУ по адресу 4*орг (4*номер прерывания); вся таблица векторов занимает 1024 байт, то есть всего может быть 256 различных векторов прерывания. Например, команда INT lah считает из ОЗУ вектор, находящийся по адресу 68h=4*lah, то есть в регистр CS будет загружен адрес сегмента 6ah, а в регистр IP — смещение 68h программы обработки этого прерывания.
Команда устанавливает флаги IF = 0 и TF = 0.
INTO - прерывание по переполнению (interrupt if overflow — прервать при переполнении) Прерывает выполнение программы при возникновении переполнения (флаг OF = 1) и передает управление по адресу 10Н (аналог команды INT 4). Команда устанавливает флаги IF = 0 и TF = 0.
IRET — возврат из обработки прерывания (interrupt return — возврат после прерывания). Обеспечивает возврат из программы обработки прерывания. IRET -последняя команда подпрограммы обработки прерывания, по этой команде из стека извлекаются три последних слова и загружаются в регистры IP, CS и FL, при этом содержимое SP увеличивается на 6. Команда устанавливает значения всех флагов.