Конспект лекций Системное программирование (семестр 2) Возле названия каждой лекции написано число пар, в течение которых она будет читаться (+ ср обозначает
Вид материала | Конспект |
Схема команды Состояние флагов после выполнения команды См. также Схема команды Состояние флагов после выполнения команды См. также Схема команды См. также |
- 8Б класс Химия Пар. 30 (№1-3), Пар. 31 (№1-5), рабочая тетрадь эти же темы Биология, 8.14kb.
- Рабочая программа учебной дисциплины (модуля) Системное программирование, 108.12kb.
- Смирнягин курс США население Лекция население США этой теме будут посвящены три лекции, 288.75kb.
- Инструкция подумайте о ситуациях, в которых Ваши желания отличаются от желаний другого, 98.01kb.
- Лекция 8 Системное программирование. Системное проектирование взаимодействия процессов., 225.21kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 75.64kb.
- Программа лекций Будущее начинается сегодня! После каждой лекции конкурс с розыгрышем, 73.71kb.
- Конспект лекций по курсу "Информатика и использование компьютерных технологий в образовании", 1797.24kb.
- Календарно-тематический план лекций по факультетской терапии 4 курс (8 семестр) специальность, 119.31kb.
- Программа вступительного экзамена по специальности 05. 13. 18 Математическое моделирование,, 115.33kb.
LEA
(Load Effective Address)
Загрузка эффективного адреса
Схема команды: | lea приемник,источник |
Назначение: получение эффективного адреса (смещения) источника.
Синтаксис
Алгоритм работы:
алгоритм работы команды зависит от действующего режима адресации (use16 или use32):
- если use16, то в регистр приемник загружается 16-битное значение смещения операнда источник;
- если use32, то в регистр приемник загружается 32-битное значение смещения операнда источник.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Данная команда является альтернативой оператору ассемблера offset. В отличие от offset команда lea допускает индексацию операнда, что позволяет более гибко организовать адресацию операндов.
;загрузить в регистр bx адрес пятого элемента массива mas .data mas db 10 dup (0) .code ... mov di,4 lea bx,mas[di] ;или lea bx,mas[4] ;или lea bx,mas+4 |
См. также: уроки 5, 7, 11 и команды lea, lds, les, lss, lgs, lfs, операторы ассемблера seg и offset
LEAVE
(LEAVE from procedure)
Выход из процедуры
Схема команды: | leave |
Назначение: удаление из стека области локальных (динамических) переменных, выделенной командой enter.
Синтаксис
Алгоритм работы:
команда выполняет обратные команде enter действия:
- содержимое ebp/bp копируется в esp/sp, тем самым восстанавливается значение esp/sp, которое было до вызова данной процедуры. С другой стороны, восстановление старого значения esp/sp означает освобождение пространства в стеке, отведенного для завершающейся процедуры (локальные переменные процедуры уничтожаются);
- из стека восстанавливается содержимое ebp/bp, которое было до входа в процедуру. После этого действия значение esp/sp также становится таким, каким оно было до входа в процедуру.
В результате этих двух действий также восстанавливается кадр стека, если он был, вызывающей программы.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команда leave не имеет операндов и выполняет обратные команде enter действия. Эта команда должна находиться непосредственно перед командой ret, которая в зависимости от соглашений конкретного языка по вызову процедур удаляет или не удаляет аргументы из стека (см. урок 14).
.286 proc1 proc enter 16,0 ... leave ret proc1 endp |
См. также: урок 14 и команды enter, ret/retf
LGDT
(Load Global Descriptor Table)
Загрузка регистра глобальной дескрипторной таблицы
Схема команды: | lgdt источник |
Назначение: загрузка регистра gdtr значениями базового адреса и размера глобальной дескрипторной таблицы GDT.
Синтаксис
Алгоритм работы:
команда выполняет загрузку 16 бит размера и 32 бит значения базового адреса начала таблицы GDT в памяти в системный регистр gdtr. Эта загрузка производится в соответствии с форматом этого регистра (см. урок 16). Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команду lgdt применяют при подготовке к переходу в защищенный режим для загрузки системного регистра gdtr. В качестве операнда в команде указывается адрес области в формате 16+32. Младшее слово области — размер GDT, двойное слово по старшему адресу — значение базового адреса начала этой таблицы. Данные два компонента должны быть сформированы в памяти заранее.
.286 ;структура для описания псевдодескриптора gdtr point STRUC lim dw 0 adr dd 0 ENDS .data point_gdt point .code ... ;загружаем gdtr xor eax,eax mov ax,gdt_seg shl eax,4 mov point_gdt.adr,eax lgdt point_gdt ... |
См. также: уроки 16, 17 и команду sgdt