Конспект лекций Системное программирование (семестр 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.
SGDT
(Store Global Descriptor Table)
Сохранение регистра глобальной дескрипторной таблицы
Схема команды: | sgdt источник |
Назначение: извлечение содержимого системного регистра gdtr, содержащего значения базового адреса и размера глобальной дескрипторной таблицы GDT.
Синтаксис
Алгоритм работы:
Команда выполняет чтение содержимого системного регистра gdtr в область памяти размером 48 бит. Структурно эти 48 бит представляют 16 бит размера и 32 бита значения базового адреса начала таблицы GDT в памяти.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команду sgdt применяют при работе системных программ с уровнем привилегий 0, в частности, при написании различных драйверов.
.286 ;структура для описания псевдодескриптора gdtr point STRUC lim dw 0 adr dd 0 ENDS .data point_gdt point .code ... ;читаем содержимое gdtr sgdt point_gdt ... |
См. также: уроки 16, 17 и команду lgdt
SIDT
(Store Interrupt Descriptor Table)
Сохранение регистра глобальной дескрипторной таблицы прерываний
Схема команды: | sidt источник |
Назначение: извлечение содержимого системного регистра idtr, содержащего значения базового адреса и размера дескрипторной таблицы прерываний IDT.
Синтаксис
Алгоритм работы:
команда sidt выполняет чтение содержимого системного регистра idtr в область памяти размером 48 бит. Структурно эти 48 бит представляют 16 бит размера и 32 бита значения базового адреса начала таблицы IDT в памяти.
Состояние флагов после выполнения команды:
выполнение команды не влияет на флаги |
Применение:
Команду sidt применяют при работе системных программ с уровнем привилегий 0, в частности, при написании различных драйверов. В качестве операнда в команде указывается адрес области в формате 16+32. Младшее слово области — размер IDT, двойное слово по старшему адресу — значение базового адреса начала этой таблицы.
.286 ;структура для описания псевдодескрипторов gdtr и idtr point STRUC lim dw 0 adr dd 0 ENDS .data point_idt point .code ... ;читаем содержимое idtr sidt point_idt ... |
См. также: урок 17 и команду lidt
SHL
(SHift logical Left)
Сдвиг логический операнда влево
Схема команды: | shl операнд,количество_сдвигов |
Назначение: логический сдвиг операнда влево.
Синтаксис
Алгоритм работы:
- сдвиг всех битов операнда влево на один разряд, при этом выдвигаемый слева бит становится значением флага переноса cf;
- одновременно слева в операнд вдвигается нулевой бит;
- указанные выше два действия повторяются количество раз, равное значению второго операнда.
Состояние флагов после выполнения команды:
11 | 00 |
OF | CF |
?r | r |
Применение:
Команда shl используется для сдвига разрядов операнда влево. Ее машинный код идентичен коду sal, поэтому вся информация, приведенная для sal, относится и к команде shl. Команда shl используется для сдвига разрядов операнда влево. Так же, как и для других сдвигов, значение второго операнда (счетчикк сдвига) ограничено диапазоном 0...31. Это объясняется тем, что микропроцессор использует только пять младших разрядов операнда количество_разрядов. Аналогично другим командам сдвига сохраняется эффект, связанный с поведением флага of, значение которого имеет смысл только в операциях сдвига на один разряд:
- если of=1, то текущее значение флага cf и выдвигаемого слева бита операнда различны;
- если of=0, то текущее значение флага cf и выдвигаемого слева бита операнда совпадают.
Этот эффект, как вы помните, обусловлен тем, что флаг of устанавливается в единицу всякий раз при изменении знакового разряда операнда.
Команду shl удобно использовать для умножения целочисленных операндов без знака на степени 2. Кстати сказать, это самый быстрый способ умножения; умножить содержимое ax на 16 (2 в степени 4).
mov ax,17 shl ax,4 |
См. также: урок 9 и команды rcr, rcl, ror, rol, sar, sal, shr