- •Оглавление
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические
- •1. Понятия алгоритма: рекурсивные функции системы текстовых замен
- •2. Системы счисления, переводы чисел из одной позиционной системы счисления в другую
- •4. Понятие подпрограммы, функции, не возвращающие значения, описание и использование
- •5. Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу
- •6. Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры
- •8. Статистические и динамические переменные, динамическая память, работа с динамическими переменными
- •10. Использование динамических переменных для представления и работы со стеком
- •Int pop(tstack *&sp) { // удаление элемента из стека
- •11. Очередь, реализация очереди массивом
- •Добавить элемент в очередь:
- •12. Очередь, представление и реализация основных операций с помощью динамических переменных
- •14. Деревья, основные операции над деревьями, представление дерева массивом Деревья.
- •2. Обход бинарного дерева:
- •If(!t) { //такого элемента нет, включаем его
- •Void Del_node (int X, tnode *&t) { //удаление из дерева поиска
- •Матрица инциденции
- •Матрица смежности
- •Список инцидентности 4) список списков
- •18. Представление графа списком инцидентности, алгоритм обхода графа в глубину
- •2) Обход графа в ширину.
- •If (not b) then //добавляем новую вершину в стек
- •19. Представление графа списком списка, алгоритм обхода графа в ширину
- •21. Основные понятия ооп: абстракция, инкапсуляция, полиморфизм
- •22. Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса
- •23. Статические, дружественные и виртуальные поля и методы, особенности их использования
- •Void DisplayMoney(); // вывод на экран
- •Понятие области видимости: общие, личные, защищённые поля и методы
- •Указатель this и перегрузка методов
- •Использование классов, различные способы инициализации
- •Int CompareMoney(const Tmoney &b); //сравнение сумм
- •Void ReadMoney(); void DisplayMoney(); // ввод и вывод
- •Использование классов, работа с массивами и указателями на объекты
- •Наследование, пример использования наследования
- •Конструкторы и деструкторы, их назначение и использование
- •Архитектура пк, основные функциональные устройства и их назначение
- •Мп с точки зрения программиста, регистры общего назначения
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры
- •Регистр флажков, его назначение и использование
- •Форматы данных и форматы команд
Оперативная память, понятие исполняемого и физического адреса, сегментные регистры
Оперативная память
Оперативная память состоит из байтов, каждый байт состоит из 8 информационных битов.
32-х разрядный процессор может работать с ОП до 4 Гбайт и, следовательно, адреса байтов изменяются от 0 до 232-1
(0000000016 – FFFFFFFF16).
Байты памяти могут объединяться в поля фиксированной и переменной длины.
Фиксированная длина – слово (2 байта), двойное слово (4 байта). Поля переменной длины могут содержать произвольное количество байтов.
Адресом поля является адрес младшего входящего в поле байта. Адрес поля может быть любым.
ОП может использоваться как непрерывная последовательность байтов, так и сегментированная.
Физический адрес (ФА) байта записывается как:
<сегмент> : <смещение>, т.е. он может быть получен по формуле ФА = АС + ИА,
где АС – адрес сегмента, ИА – исполняемый адрес, т.е. ИА - <смещение> формируется в команде различными способами в зависимости от способа адресации операндов.
В защищенном режиме программа может определить до 16383 сегментов размером до 4 Гбайт, и таким образом может работать с 64 Тбайтами виртуальной памяти.
Для реального режима АС определяется сегментным регистром и для получения двадцатиразрядного двоичного адреса байта необходимо к содержимому сегментного регистра, смещенного на 4 разряда влево, прибавить шестнадцатиразрядное смещение – ИА.
Например, адрес следующей исполняемой команды:
ФА = (CS) + (IP)
(CS) = 7A1516 = 011110100001010100002
(IP) = C7D916 = 11000111110110012
ФА = 8692916 = 100001101001001010012
Сегментные регистры (смотри пункт 33)
Регистр флажков, его назначение и использование
Регистр флагов
Регистр FLAGS или EFLAGS определяет состояние процессора и программы в каждый текущий момент времени.
CF - перенос
PF - четность
AF - полуперенос
ZF - флаг нуля
SF - флаг знака
TF - флаг трассировки
IF - флаг прерывания
DF - флаг направления
OF - флаг переполнения
AC - флаг выравнивания операндов
VM - флаг виртуальных машин
RF - флаг маскирования прерывания
NT - флаг вложенной задачи
IOPL - уровень привилегий ввода/вывода.
Биты 1, 3, 5, 15, 19 - 31 – не используются, зарезервированы. В реальном режиме используют 9 флагов, из них 6 реагируют на результат выполнения команды, 3 определяют режим работы процессора. В защищенном режиме используются 5 дополнительных флагов, определяющих режим работы процессора.
CF = 1, если при выполнении команды сложения осуществляется перенос за разрядную сетку, а при вычитании требуется заем.
PF = 1, если в младшем байте результата содержится четное количество единиц.
AF = 1, если в результате выполнения команды сложения (вычитания) осуществлялся перенос (заем) из 3-го разряда байта в 4-й ( из 4-го в 3-й).
ZF = 1, если результатом выполнения операции является 0 во всех разрядах результата.
SF – всегда равен знаковому разряду результата.
TF = 1 прерывает работу процессора после каждой выполненной команды.
IF – установленный в 1 разрешает прерывание от внешних устройств.
DF – определяет направление обработки строк данных, если DF= 0 – обработка строк идет в сторону увеличения адресов, 1 – в сторону уменьшения, (автоматическое увеличение или уменьшение содержимого регистров индексов SI и DI).
OF = 1, если результат команды превышает максимально допустимый для данной разрядной сетки.
IOPL = 1, если уровень привилегии текущей программы меньше значения этого флажка, то выполнение команды ввод/вывод для этой программы запрещен.
NT – определяет режим работы вложенных задач.
RF – позволяет маскировать некоторые прерывания процессора.
VM – позволяет перейти из защищенного режима в режим виртуальных машин.
AC = 1 приведет к сообщению об ошибке, если адреса операндов длиной в слово или двойное слово не будут кратны двум и четырем соответственно.
