Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 400; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.169 (0.008 с.) |