Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
При прямом внутрисегментном переходе можно производить переходы в приделах 64 Кбайт относительно следующей за jmp команды.Содержание книги
Поиск на нашем сайте
Пример 3: M1: …; расстояние более 128 байт и менее 64 Кбайт Jmp m1 ….
При косвенном внутрисегментном переходе указывается не сам адрес перехода, а место, где он записан. Пример 4: Lea bx,m1 Jmp bx; адрес перехода в регистре bx … m1: …
Пример 5: Data Addr dw m1 Dw m2 … Code … cycl: Mov si,0 jmp addr[si]; адрес перехода в слове addr+(si) … Mov si,1 jmp addr[si]; адрес перехода в слове addr+(si) Jmp cycl m1: … m2: Межсегментный переход изменяет регистры cs и eip/ip. Межсегментный переход поддерживает два варианта команд безусловного перехода: прямой и косвенный. Команда прямого межсегментного перехода имеет длину пять байтов, из которых два байта составляют значение смещения и два байта – значение сегментной составляющей адреса. Пример 6: Seg_1 segment … Jmp far ptr m2 … M1 label far … seg_1 ends seg_2 segment … M2 label far Jmp m1 Команда косвенного межсегментного перехода в качестве операнда имеет адрес области памяти, в которой содержатся смещение и сегментная часть адреса перехода.
Таким образом, модификаторы short ptr, near ptr, word ptr применяются для организации внутрисегментных переходов, а far ptr, dword ptr – межсегментных.
Процедуры В языке ассемблера есть несколько средств, решающих проблему дублирования участков программного кода. К ним относятся: – механизм процедур; – макроассемблер; – механизм прерываний.
Обратиться к процедуре можно с помощью любой команды перехода. Контекст – информация о состоянии программы в точке вызова процедуры. Есть две команды, осуществляющие работу с контекстом. Это команды call и ret: – call[модификатор] имя_процедуры – вызов процедуры. Команда call, подобно jmp передаёт управление по адресу с символическим именем имя_процедуры, но при этом в стеке сохраняется адрес возврата. Адрес возврата – это адрес команды, следующей после команды call; – ret [число] – возвратить упраление вызывающей программе. Команда ret считывает адрес возврата из стека и загружает его в регистр cs и eip/ip тем самым возвращая управление на команду следующую в программе за командой call. [число] – необязательный параметр, обозначающий количество элементов, удаляемых из стека при возврате из процедуры. Вызов процедуры командой call может быть: – внутрисегментным – процедура находиться в текущем сегменте кода (имеет тип near), и в качестве возврата команда call сохраняет в стек только содержимое регистра eip/ip; – межсегментным – процедура находится в другом сегменте кода (имеет тип far) и для осуществления возврата команда call заносит в стек содержимое обоих регистров cs и eip/ip. Очерёдность такова: сначала в стек помещается регистр cs, а потом eip/ip. Подобно команде jmp существует четыре разновидности команды call, в зависимости от значения [модификатор] и атрибута дальности в описании процедуры. Значения [модификатор] такие же, как и у команды jmp за исключением short ptr. – near ptr; а) прямой короткий (short ptr); б) прямой; в) косвенный. – far ptr; – word ptr – dword ptr
Условные переходы Микропроцессор имеет 18 команд условного перехода, позволяющие проверить: – отношение между операндами со знаком (больше-меньше); – отношение между операндами без знака (выше-ниже); – состояние арифметических флагов zf,sf, cf, of, pf. Команды условного перехода имеют одинаковый синтаксис: Jcc метка_перехода
Межсегментной передачи управления в условных переходах не допускается (максимальный переход равен размеру сегмента). Источниками условия для перехода могут быть: – любая команда, изменяющая состояние арифметических флагов; – команда сравнения cmp; – состояние регистра ecx/cx. Команда cmp выполняет вычитание операторов и устанавливает флаги, не записывает результат вычитания на место первого операнда. Cmp операнд_1, операнд_2
Значения аббревиатур в названии команды jcc:
Пример 7: сравним очередной элемент массива с 5:
Команды условного перехода и флаги Cmp x, y
Пример 8: надо преобразовать строчные буквы в прописные. Строчным буквам в таблице ASCII символов соответствует диапазон 61h-7ah, прописным – 41h-5ah. Для выполнения преобразования между строчными и прописными буквами достаточно инвертировать 5 бит. Например: а – 01100001 z – 01111010 А – 01000001 Z – 01011010
Таблица ASCII кодов.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 291; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.187.232 (0.01 с.) |