Информатика и информационные технологии: конспект лекций
Добавить в закладки К обложке
- ЛЕКЦИЯ № 1. Введение в информатику - Страница 1
- 2. Системы счисления - Страница 2
- 3. Представление чисел в ЭВМ - Страница 3
- 4. Формализованное понятие алгоритма - Страница 4
- ЛЕКЦИЯ № 2. Язык Pascal - Страница 5
- 2. Стандартные процедуры и функции - Страница 6
- 3. Операторы языка Pascal - Страница 8
- ЛЕКЦИЯ № 3. Процедуры и функции - Страница 10
- 2. Процедуры в Pascal - Страница 11
- 3. Функции в Pascal - Страница 12
- 4. Опережающие описания и подключение подпрограмм. Директива - Страница 13
- ЛЕКЦИЯ № 4. Подпрограммы - Страница 14
- 2. Типы параметров подпрограмм - Страница 15
- ЛЕКЦИЯ № 5. Строковый тип данных - Страница 17
- 2. Процедуры и функции для переменных строкового типа - Страница 18
- 3. Записи - Страница 19
- 4. Множества - Страница 20
- ЛЕКЦИЯ № 6. Файлы - Страница 21
- 2. Модули. Виды модулей - Страница 24
- ЛЕКЦИЯ № 7. Динамическая память - Страница 26
- 2. Работа с динамической памятью. Нетипизированные указатели - Страница 27
- ЛЕКЦИЯ № 8. Абстрактные структуры данных - Страница 28
- 2. Стеки - Страница 29
- 3. Очереди - Страница 30
- ЛЕКЦИЯ № 9. Древовидные структуры данных - Страница 31
- 2. Операции над деревьями - Страница 32
- 3. Примеры реализации операций - Страница 33
- ЛЕКЦИЯ № 10. Графы - Страница 34
- 2. Представление графа списком инцидентности. Алгоритм обхода графа в глубину - Страница 35
- 3. Представление графа списком списков. Алгоритм обхода графа в ширину - Страница 36
- ЛЕКЦИЯ № 11. Объектный тип данных - Страница 37
- 2. Наследование - Страница 39
- 3. Создание экземпляров объектов - Страница 40
- 4. Компоненты и область действия - Страница 41
- ЛЕКЦИЯ № 12. Методы - Страница 42
- 2. Конструкторы и деструкторы - Страница 44
- 3. Деструкторы - Страница 45
- 4. Виртуальные методы - Страница 47
- 5. Поля данных объекта и формальные параметры метода - Страница 48
- ЛЕКЦИЯ № 13. Совместимость типов объектов - Страница 49
- 2. Расширяющиеся объекты - Страница 50
- 3. Совместимость типов объектов - Страница 52
- ЛЕКЦИЯ № 14. Ассемблер - Страница 53
- 2. Программная модель микропроцессора - Страница 54
- 3. Пользовательские регистры - Страница 55
- 4. Регистры общего назначения - Страница 56
- 5. Сегментные регистры - Страница 57
- 6. Регистры состояния и управления - Страница 58
- ЛЕКЦИЯ № 15. Регистры - Страница 59
- 2. Регистры управления - Страница 60
- 3. Регистры системных адресов - Страница 61
- 4. Регистры отладки - Страница 62
- ЛЕКЦИЯ № 16. Программы на Ассемблере - Страница 63
- 2. Синтаксис ассемблера - Страница 64
- 3. Директивы сегментации - Страница 68
- ЛЕКЦИЯ № 17. Структуры команд на Ассемблере - Страница 71
- 2. Способы задания операндов команды - Страница 73
- 3. Способы адресации - Страница 75
- ЛЕКЦИЯ № 18. Команды - Страница 77
- 2. Арифметические команды - Страница 81
- ЛЕКЦИЯ № 19. Команды передачи управления - Страница 90
- 2. Команды передачи управления - Страница 95
3. Байт режима адресации modr/m.
Значения этого байта определяет используемую форму адреса операндов. Операнды могут находиться в памяти в одном или двух регистрах. Если операнд находится в памяти, то байт modr/m определяет компоненты (смещение, базовый и индексный регистры), используемые для вычисления его эффективного адреса (рисунок 21). В защищенном режиме для определения местоположения операнда в памяти может дополнительно использоваться байт sib (Scale-Index-Base – масштаб-индекс-база). Байт modr/m состоит из трех полей (рис. 20):
1) поле mod определяет количество байт, занимаемых в команде адресом операнда (рис. 20, поле смещение в команде). Поле mod используется совместно с полем r/m, которое указывает способ модификации адреса операнда «смещение в команде». К примеру, если mod = 00, это означает, что поле смещение в команде отсутствует, и адрес операнда определяется содержимым базового и (или) индексного регистра. Какие именно регистры будут использоваться для вычисления эффективного адреса, определяется значением этого байта. Если mod = 01, это означает, что поле смещение в команде присутствует, занимает 1 байт и модифицируется содержимым базового и (или) индексного регистра. Если mod = 10, это означает, что поле смещение в команде присутствует, занимает 2 или 4 байта (в зависимости от действующего по умолчанию или определяемого префиксом размера адреса) и модифицируется содержимым базового и (или) индексного регистра. Если mod =11, это означает, что операндов в памяти нет: они находятся в регистрах. Это же значение байта mod используется в случае, когда в команде применяется непосредственный операнд;
2) поле reg/коп определяет либо регистр, находящийся в команде на месте первого операнда, либо возможное расширение кода операции;
3) поле r/m используется совместно с полем mod и определяет либо регистр, находящийся в команде на месте первого операнда (если mod =11), либо используемые для вычисления эффективного адреса (совместно с полем смещение в команде) базовые и индексные регистры.
4. Байт масштаб – индекс – база (байт sib).
Используется для расширения возможностей адресации операндов. На наличие байта sib в машинной команде указывает сочетание одного из значений 01 или 10 поля mod и значения поля r/m = 100. Байт sib состоит из трех полей:
1) поля масштаба ss. В этом поле размещается масштабный множитель для индексного компонента index, занимающего следующие 3 бита байта sib. В поле ss может содержаться одно из следующих значений: 1, 2, 4, 8.
При вычислении эффективного адреса на это значение будет умножаться содержимое индексного регистра;
2) поля index. Используется для хранения номера индексного регистра, который применяется для вычисления эффективного адреса операнда;
3) поля base. Используется для хранения номера базового регистра, который также применяется для вычисления эффективного адреса операнда. В качестве базового и индексного регистров могут использоваться практически все регистры общего назначения.
5. Поле смещения в команде.
8-, 16– или 32-разрядное целое число со знаком, представляющее собой, полностью или частично (с учетом вышеприведенных рассуждений), значение эффективного адреса операнда.
6. Поле непосредственного операнда.
Необязательное поле, представляющее собой 8-, 16– или 32-разрядный непосредственный операнд. Наличие этого поля, конечно, отражается на значении байта modr/m.