- •1.Архитектуры вычислительных систем.
- •2.Архитектура многопроцессорных систем.
- •3.Классификация вычислительных систем.
- •4.Классификация процессоров.
- •5.Регистровая модель процессора x86.
- •6.Режимы работы процессора 80386.
- •1.Реальный режим
- •2. Защищенный режим
- •7.Процессор х86: непосредственная и регистровая адресация.
- •8.Процессор х86: прямая адресация и прямая со сдвигом.
- •9.Процессор х86: косвенная адресация и косвенная со сдвигом.
- •10.Процессор х86: индексная адресация и индексная с масштабированием.
- •11.Размещение в памяти многомерных статических массивов и доступ к их элементам.
- •15.Процессор х86: инструкции копирования данных.
- •16.Процессор х86: инструкции ввода-вывода.
- •17.Представление целых чисел: прямой код, дополнительный код, bsd.
- •18.Процессор х86: инструкции сложения, сложения с переносом.
- •19.Процессор х86: сложение чисел в формате bcd.
- •20.Процессор х86: инструкции вычитания, вычитания с заемом.
- •21.Процессор х86: инструкции умножения.
- •22.Процессор х86: инструкция деления.
- •23.Процессор х86: операции расширения знакового бита.
- •24.Процессор х86: поразрядные логические инструкции, использование масок.
- •25.Процессор х86: инструкции сдвига. Умножение и деление на константы.
- •26.Процессор х86: инструкции цикла. Отличие от циклах в языках высокого уровня.
- •27.Процессор х86: Ожидание готовности пу с тайм-аутом на основе цикла.
- •28.Процессор х86: безусловный переход и виды меток.
- •29.Процессор х86: вызов процедуры и прерывания (рамка стека функции в с).
- •30.Процессор х86: инструкции условного перехода.
- •31.Процессор х86: строковый примитив копирования данных.
- •32.Процессор х86: строковые примитивы сравнения данных, сканирования данных и заполнения данных.
- •33.Сегменты реального и защищенного режима. Глобальная и локальная таблицы дескрипторов.
- •34.Механизм преобразования линейного адреса в физический в процессоре x86.
- •46.Математический сопроцессор: инструкции вычисления функций.
- •47. Математический сопроцессор: инструкции сравнения и условный переход по результатам сравнения
- •48.Математический сопроцессор: регистры управления и состояния.
- •49.Математический сопроцессор: исключения и их маскирование.
- •50. Дисковые накопители. Логическая и физическая геометрия жесткого диска, линейная адресация.
- •51. Разделы жесткого диска. Осуществление загрузки.
- •53. Стек tcp/ip и его соответсвие 7 уровневой модели osi iso.
- •54.Пример передачи и приема пакета в стеке tcp/ip.
- •55. Ip и mac адреса. Служба arp. Классы ip адресов.
- •56.Маршрутизация и таблицы маршрутизатора.
- •57.Доменные имена и служба dns.
- •58.Статические и динамические ip адреса. Служба dhcp.
8.Процессор х86: прямая адресация и прямая со сдвигом.
Прямая адресация
При прямой адресации задается адрес операнда. Адрес операнда можно указывать в виде числовой константы или идентификатора переменной. Исполнительный адрес при этом помещается в текст программы. Использование числовых констант в качестве адресов практикуется только в реальном режиме, когда прикладной программе необходим доступ к системным областям памяти, расположенным в фиксированных адресах, например, области данных BIOS. В защищенном режиме такое просто невозможно. Во встроенном ассемблере к прямой адресации приводит обращение к глобальным переменным. Обращение к локальным переменным, несмотря на то, что внешне выглядит точно также, приводит к адресации по базе со сдвигом, так как они располагаются в стеке и доступ к ним осуществляется через регистр указатель базы EBP.
Пример прямой адресации:
int a;
short b;
char c;
……….
MOV ECX, a
MOV b, AX
MOV BL, c
MOV EDX, [0x250A12CD]
MOV EDI, SS:[0x00010A08]
Адресация со сдвигом (смещением)
Адресация со сдвигом может использоваться совместно с прямой и косвенной, т.е. может быть прямая адресация со сдвигом и адресация по базе со сдвигом. Сдвиг задается в виде числовой константы или константного выражения, может быть как положительным, так и отрицательным, и определяет смещение операнда относительно базового адреса. Адресация со сдвигом используется для доступа к полям структур, отдельным байтам или словам больших объектов, а также к локальным переменным и параметрам функций. В последнем случае, как уже упоминалось выше, адресация по базе со сдвигом внешне выглядит точно также, как прямая адресация.
Пример адресации со сдвигом:
int a;
struct S{
double x;
int i;
short j;
};
S s;
………
MOV EAX, s[8]
LEA EBX, s
MOV AX, [EBX][8+4]
LEA EDX, a
MOV CX, word ptr a[2]
MOV CL, byte ptr a[3]
9.Процессор х86: косвенная адресация и косвенная со сдвигом.
Адресация по базе (косвенная адресация)
Адресация по базе или косвенная адресация заключается в извлечении исполнительного адреса из регистра процессора. Если таким регистром является регистр EBP, то обращение производится к сегменту стека, во всех остальных случаях – к сегменту данных. Обычно косвенная адресация применяется при обращении к данным через указатели. При программировании на ассемблере часто используется операция загрузки исполнительного адреса LEA для последующего многократного обращения к объекту в памяти с использованием косвенной адресации.
Пример косвенной адресации:
int *pi, pj;
int a, b, m[100];
…….
pi=new int;
pj=&a;
…….
MOV EBX, pi
MOV ECX, pj
MOV EAX, [EBX]
MOV EDX, [ECX]
LEA EBX, b
MOV EAX, [EBX]
MOV EDI, 20*4
LEA EBX, m[EDI]
MOV EAX, [EBX]
Адресация со сдвигом (смещением)
Адресация со сдвигом может использоваться совместно с прямой и косвенной, т.е. может быть прямая адресация со сдвигом и адресация по базе со сдвигом. Сдвиг задается в виде числовой константы или константного выражения, может быть как положительным, так и отрицательным, и определяет смещение операнда относительно базового адреса. Адресация со сдвигом используется для доступа к полям структур, отдельным байтам или словам больших объектов, а также к локальным переменным и параметрам функций. В последнем случае, как уже упоминалось выше, адресация по базе со сдвигом внешне выглядит точно также, как прямая адресация.
Пример адресации со сдвигом:
int a;
struct S{
double x;
int i;
short j;
};
S s;
………
MOV EAX, s[8]
LEA EBX, s
MOV AX, [EBX][8+4]
LEA EDX, a
MOV CX, word ptr a[2]
MOV CL, byte ptr a[3]