- •Программное управление — основа автоматизации вычислительного процесса
- •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
I.Команды безусловной передачи данных
JMP opr — команда безусловной передачи управления (jump unconditionally — перейти безусловно). Операнд OPR может быть задан прямым или косвенным адресом:
по прямому адресу: JMP метка
Если метка в том же сегменте, что и команда JMP, переход считается внутренним (near),
если не в том же сегменте — переход внешний (far). В самой команде JMP разницы нет; тип перехода определяется видом метки: после метки для внутреннего перехода ставится двоеточие :. Транслятор по таблице меток и их адресов сам определяет атрибуты near или far и соответственно транслирует команду передачи управления в более короткую или более длинную команду (более длинную, так как надо менять не только содержимое смещения IP, но и регистра сегментов CS). Несколько сократить длину команды может указание программиста «JMP short метка» о том, что метка не далее ±128 байт от команды JMP (это указание не обязательно, но если оно есть и ошибочно, то транслятор выдаст ошибку).
по косвенному адресу. Косвенный адрес может быть задан: в регистре: JMP r или в памяти: JMP символьное_имя;
в памяти с косвенной адресацией: JMP near ptr [SI]; JMP far ptr [ВХ] и т.д.
В последних двух командах near ptr и far ptr указывать обязательно, так как какое слово содержится в регистре SI — обычное или двойное, — ассемблер заранее не знает и ему нужно помочь.
4.9 Команды перехода к подпрограмме и выхода из подпрограммы
Подпрограммы оформляются как процедуры. Процедура начинается меткой — именем процедуры и заканчивается командой выхода ret (return). В программе процедура помещается в операторные скобки:
proc … endp
Около оператора proc могут быть указаны атрибуты дистанции: near — близкая процедура (в том же сегменте) или far — далекая процедура (если этот атрибут опущен, то подразумевается near).
Пример: DISP proc far ; в отличие от метки после имени процедуры двоеточие не ставится:
ret
DISP endp
4.10 Команда перехода к подпрограмме: call opr
Вызов процедуры (call a procedure — вызов процедуры), безусловная передача управления, выполняющая короткий или длинный вызов процедуры. Флаги — не меняются.
В команде CALL атрибуты near или far указывать не надо, так как ассемблер нужную информацию получит сам из директивы определения процедуры. По команде CALL должно быть выполнено:
запоминание в стеке адреса возврата (содержимого IP и CS для следующей команды: 16 бит — если near, и 32 бит — если far);
переход к выполнению процедуры (инициируется записью в IP и в CS (если far) нового адреса команды).
Операнд OPR, определяющий адрес процедуры, может быть:
непосредственным: CALL имя_процедуры;
прямым — процедуру с атрибутом near можно вызвать через регистр, в котором содержится смещение адреса процедуры: CALL r;
косвенным:
процедуру с атрибутом near можно вызвать, используя переменную размером в слово: CALL word ptr символьное_имя,
процедуру с атрибутом far — используя переменную размером в двойное слово: CALL dword ptr символьное_имя.
