
- •1. Эволюция операционных систем Операционные системы
- •Эволюция ос
- •2. Операционные системы (ос). Классификация ос по особенностям алгоритмов управления.
- •4. Поддержка многонитевости систем
- •3. Операционная система. Классификация спо по особенности аппаратных платформ.
- •1. Ос больших машин
- •Особенности методов построения.
- •5. Процесс, состояния процесса, свойства процессов.
- •Свойства процессов.
- •Процесс. Классификация процессов.
- •7. Ресурс, свойства ревурсов.
- •Свойства ресурсов
- •Ресурсы. Классификация ресурсов
- •6.По функциональной избыточности (изменчивости):
- •8.По восстанавливаемости:
- •9.По характеру использования:
- •Реализация понятия последовательного процесса в операционной системе
- •Потоки (нити, треды)
- •Дисциплины диспетчеризации
- •Планирование и диспетчеризация процессов и задач
- •10. Прерывания
- •Виды прерываний:
- •Дисциплины диспетчеризации
- •12. Архитектура ос.
- •Вспомогательные модули
- •Средства аппаратной поддержки ос
- •Микроядерная архитектура
- •2.Расширяемость
- •15. Файловая система. Структура магнитного диска.
- •16. Физическая организация fat
- •Загрузочная запись dos
- •17. Файловая система hpfs
- •Структура раздела hpfs.
- •18. Ntfs
- •19.Проектирование взаимодействующих вычислительных процессов (взаимное исключение). Синхронизация посредством операции ‘проверка - устаовка’.Семафоры.
- •1.Проектирование взаимодействующих вычислительных процессов (взаимное исключение).
- •2.Синхронизация посредством операции«проверка и установка»
- •3.Семафоры
- •20. Мониторы хоара. Почтовые ящики, конвейеры, тупики. Мониторы хоара.
- •Почтовые ящики
- •Конвейеры
- •Тупики:
- •21. Структура современных систем программирования.
- •22. Основные принципы построения транслятора.
- •4. Построение на основе хэш – функции.
- •23. Лексический анализатор, синтаксический разбор основные принципы построения транслятора.
- •24. Семантический анализ, подготовка к генерации кода, генерация кода основные принципы построения транслятора.
- •25. Регистры общего назначения. Команда mov.
- •Команда mov.
- •26. Назначение сегментов. Реализация арифметических операций на ассемблере. Назначение сегментов
- •Операция умножения
- •Операция деления
- •Определение данных. Организация условного и безусловного перехода на ассемблере
- •28. Логика и организация циклических вычислений с помощью команды loop
- •Команды логических операций
- •29. Регистрфлагов
- •30. Команды обработки строковых данных в ассемблере.
- •Команды обработки строк
- •31. Понятие объектно-ориентированной модели программных компонент delphi
- •31. Структура интерфейса визуальной среды delphi
- •35. Объект: понятие, свойства.
- •Понятие Свойства и События
- •34.Основные события
- •32.Описание и назначение основных компонент выбора вариантов стандартной панели
- •Отладка модулей проекта
- •Отладка синтаксических ошибок
- •Отладка логических ошибок
- •37. Графические компоненты
Операция умножения
Операция умножения для беззнаковых данных выполняется командой MUL, для знаковых – IMUL.
Существует два вида умножения:
множимое находится в регистре АL, а множитель в памяти или в регистре. После умножения произведение находится в регистре АХ. Операция игнорирует и стирает любые данные, которые находятся в регистре АН.
множимое находится в регистре АХ, а множитель в памяти или регистре. После умножения произведение находится в двух регистрах : старшая (левая) часть произведения в регистре DХ, а меньшая (правая) – в регистре АХ. Операция игнорирует и стирает любые данные, которые были в регистре DX.
В единственном операнде команды MUL и IMUL указывается множитель: MUL WERT.
Если поле WERT определено, как байт (DB) – то операция предполагает произведение содержимого AL на значение байта из поля WERT. Если множитель находится в регистре, то длина регистра определяет тип операции, как показано ниже:
MUL CL множимое в AL, произведение в AX
MUL BX множимое в AX, произведение в DX:AX
WERT 1 DW 8000h
WERT 2 DB 40h
Mov AL, 80h произведение 80h * 40h=2000h в АХ
MUL WERT 2
Mov AX, 2000h произведение 2000h * 8000h в DX:AX
MUL WERT 1
Mov AL, 80h произведение 80h * 40h=Е000h в АХ
IMUL WERT 2
Mov AX, 2000h произведение 80h * 40h=2000h в DX:AX
IMUL WERT 1
Первый пример команды MUL перемножает 80h (128) на 40h (64), произведение 2000h (8192) получается в регистре АХ. Второй пример этой команды генерирует 10000000h в регистрах DX:АХ.
Первый пример команды IMUL перемножает 80h (отрицательное число) на 40h (положительное число), произведение Е000h получается в регистре АХ. Используя те же данные, команда MUL дает в результате 2000. Очевидна разница в использовании команд MUL и IMUL . Команда MUL рассматривает 80h как +128 , а команда IMUL – как -128.
Второй пример аналогичен первому.
Т. обр. если множимое и множитель имеют одинаковый знаковый бит, то команда MUL и IMUL генерируют одинаковый результат, в противном случае, команда MUL вырабатывает положительный результат умножения, команда IMUL – отрицательный.
При умножении на степень числа 2 (2, 4, 8 и т.д.) более эффективен сдвиг влево на требуемое число битов. Сдвиг более чем на 1 требует загрузки счетчика сдвига в регистр СL.
ПРИМЕР, предположим, что множимое находится в регистре AL или AX:
SHL AL, 1 умножение на2
Mov CL, 3 умножение на 8
SHL AX, CL
Для знаковых полей лучше использовать команду SAL.
Операция деления
Операция деления для беззнаковых данных выполняется командой DIV, а для беззнаковых – IDIV. Ответственность за подбор подходящей команды лежит на программисте.
Аналогично умножению существует два вида деления:
делимое находится в регистре АХ, а делитель в памяти или в регистре. После деления остаток получается в регистре АН, а частное – в АL.
делимое находится в регистровой паре DX:АХ, а делитель в памяти или в регистре. После деления остаток получается в регистре DX, а частное – в AX.
В единственном операнде команд DIV и IDIV указывается делитель.
ПРИМЕР.
BET 1 DB 80h
WERT 1 DW 2000h
WERT 2 DW 1000h
Mov AX, WERT 1 слово / байт
DIV BET 1 остаток: частное в AH: AL
Mov DX, 0010h двойное слово / слово
Mov AX: 1000h делимое в DX: AX
DIV WERT 1 остаток: частное в DX:AX
Mov AX, WERT 1 слово / слово
SUB AX, WERT 1 расширение WERT 1 до двойного слова в регистровой
паре DX:AX
DIV WERT 2 остаток : частное в DX:AX
Команда DIV делит беззнаковые числа. Первый пример команды DIV делит 2000h (8092) на 80h (128). В результате остаток 00 получается в регистре АН, а частное 40h (64) – в регистре AL. Второй пример генерирует остаток 1000h в регистре DX и частное 0080h в регистре АХ. В третьем примере команда DIV сначала выполняет расширение слова WERT 1 до двойного слова в регистровой паре DX:AX. После деления остаток 0000h получается в регистре DX, а частное 0002h – в регистре AX.
Команда IDIV выполняет деление знаковых чисел. Если в примере вместо команды DIV записать команду IDIV, то первый пример делит 2000h (положительное число) на 80h (отрицательное число). Остаток от деления получается в регистре АН, а частное 0C0h (-64) – в регистре AL.
Т.обр., если делимое и делитель имеют одинаковый знаковый бит, то команды DIV и IDIV генерируют одинаковый результат. Но если имеют разные знаковые биты, то команда DIV генерирует положительное число, а команда IDIV – отрицательное.
Для более эффективного деления на степень двойки лучше использовать команду SHR сдвига вправо для беззнаковых полей и команду SAR – для знаковых.
Команда NEG обеспечивает преобразование знака двоичных чисел из положительного в отрицательное и наоборот. Практически команда устанавливает противоположные значения битов и прибавляет 1.
НАПРИМЕР: NEG AX
NEG BL
NEG WERT 1