Иллюстрированный самоучитель по Assembler


MP Безусловный переход - часть 2



jmp far ptr farpt ;Переход на метку farpt в

;другом программном сегменте

jmp farpt ;Переход на метку farpt в другом

;программном сегменте, если farpt

;объявлена дальней меткой

;директивой farpt label far

Примеры косвенных дальних переходов

Пример 1


; В полях данных:

addr dd pt ;Поле с двухсловным

;адресом точки перехода ;В программном сегменте:

jmp DS:addr ;Переход в точку pt

jmp dword ptr addr ;To же самое


Пример 2


; В полях данных:

addr dd pt ;Поле с двухсловным

;адресом точки перехода

;В программном сегменте:

mov DI,offset addr ;DI =адрес поля с адресом

;точки перехода jmp [DI] ;Переход в точку pt

Допустимо использование дополнительных режимов адресации 32-разрядных процессоров. Для 32-разрядных приложений допустимо использование 32-битовых операндов. В защищенном режиме вместо сегментного адреса сегмента (при дальних переходах) выступает его селектор.

LAHF Загрузка флагов в регистр АН


Команда lahf копирует флаги SF, ZF, AF, PF и CF соответственно в разряды 7, 6, 4, 2 и 0 регистра АН. Значение битов 5, 3 и 1 регистра АН не определено. Команда не имеет параметров и не изменяет флаги процессора.

Команда lahf (совместно с командой sahf) дает возможность читать и изменять значения флагов процессора, в том числе флагов SF, ZF, AF и PF, которые нельзя изменить непосредственно. Однако следует иметь в виду, что команда lahf переносит в АН только младший байт регистра флагов. Поэтому нельзя изменить с ее помощью, например, состояние флага OF.

Пример 1


lahf ;Регистр АН отображает

;состояние регистра флагов

or AH,80h ;Установка бита 7 = SF

sahf ;Загрузка АН в регистр

;флагов, где теперь SF = 1

Пример 2


lahf ;Регистр АН отображает

;состояние регистра флагов

and AH,0BFh ;Сброс бита 6 = ZF

sahf ;Загрузка АН в регистр

;флагов, где теперь ZF = О

386Р+ LAR Загрузка прав доступа


Команда lar загружает в первый операнд (16- или 32-разрядный регистр) поле атрибутов сегмента из дескриптора сегмента, заданного селектором во втором операнде. В качестве операнда с селектором может использоваться 16- или 32-разрядный регистр или ячейка памяти. В операнд-приемник поступают два байта атрибутов селектора с замаскированным полем старших битов границы сегмента.




Начало  Назад  Вперед



Книжный магазин