Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемwww2.mts-sut.ru
1 Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 6 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов к.т.н., доцент Красов Андрей Владимирович директор УИЦ ИТТ, доцент кафедры ИБТС Куратор специальности «Защищенные системы связи» Автор курса
2 Все команды передачи управления можно разделить на группы: безусловная передача управления; безусловный переход; вызов и возврат из процедуры; вызов и возврат из программных прерываний; условная передача управления; переход по результатам сравнения; переход по состоянию флага; переход по состоянию регистра ecx/cx; команды управления циклами; цикл со счетчиком ecx/cx; цикл со счетчиком ecx/cx с возможностью выхода из цикла по дополнительному условию. При организации переходов используются метки. Метка в ассемблере имеет следующие атрибуты: имя сегмента; смешение; тип метки. Тип метки может принимать следующие значения: near – адрес метки определен только в пределах сегмента; far- адрес метки определен полным адресом. Метка может быть заданна двумя способами: оператором «:» (только для меток типа near); ключевым словом label. Формат задания меток с помощью ключевого слова label, приведен на рис Команды передачи управления Рис Структура создания меток
3 Команда безусловного перехода переходит к оператору программы, помеченному указанной меткой. Синтаксис команды безусловного перехода: jmp [модификатор] адрес перехода. Модификатор позволяет преобразовать адрес перехода к определенному типу. Использование режима short ptr позволяет реализовать переходы не более чем на 127 байт вниз и не более чем на 128 байт вверх (диапазон числа типа short – ). Этот режим соответствует двух байтному варианту команды jmp. Прямой вариант команды jmp позволяет организовать переходы в пределах 64Кбайт вверх и вниз по программе. Косвенный переход. При косвенном переходе в команде jmp задается адрес переменной в которой содержится адрес перехода. Пример: Безусловные переходы L1: jmp short ptr L1 ; короткий переход L2: jmp L2 ; прямой переход L3: lea bx, L3 jmp bx ; адрес перехода содержится в регистре bx.data label4dw L4.code jmp label4 ; адрес перехода содержится в переменной label4 seg_1segment … jmpfar ptr L4 … seg_1ends seg_2segment … L4label far … seg_2ends Команда межсегментного перехода. В этом случае адрес задается значением типа far и имеет длину 5 байт. Пример:
4 Условные переходы Процессор поддерживает 18 команд организации перехода в зависимости от условий. Сравнение операндов осуществляется с помощью команды cmp. Формат команды: cmp операнд1, операнд2 Результаты сравнения записываются в регистр флагов. Команда перехода осуществляет переход на метку, в зависимости от значения регистра флагов установленные командой cmp. Команды перехода приведены в табл.6.1. Таблица 6.1. Команды условного перехода Кроме этого процессор поддерживает группу команд перехода в зависимости от значения регистров флагов. Команды условного перехода представлены в табл Таблица 6.2. Команды условного перехода Еще одной возможностью организации перехода является контроль значения регистра ecx/cx. Синтаксис команды: jcxz метка перехода, jecxz метка перехода. Команда jcxz осуществляет переход если cx = 0, команда jecxz осуществляет переход если ecx = 0.
5 Приведенные выше команды условных переходов позволяют организовать циклы. Однако в языке ассемблера для организации циклов предусмотрены специальные команды, представленные в таблице 6.3. Организация циклов Таблица 6.3. Команды организации циклов Регистр ecx/cx используется при организации циклов в качестве служебного.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.