Учебное пособие Санкт-Петербург Издательство спбгэту «лэти» 2006
Вид материала | Учебное пособие |
- Учебное пособие Санкт-Петербург Издательство спбгэту «лэти» 2006, 648.91kb.
- Учебное пособие Санкт-Петербург Издательство спбгэту «лэти» 2004, 1302.72kb.
- Лэти» радиотехнические цепи и сигналы лабораторный практикум санкт-Петербург Издательство, 1341.05kb.
- Учебное пособие Издательство спбгпу санкт-Петербург, 1380.47kb.
- Учебное пособие Санкт-Петербург Издательство спбгпу 2003, 5418.74kb.
- Учебное пособие Санкт-Петербург 2011 удк 621. 38. 049. 77(075) Поляков, 643.33kb.
- СПбгэту центр по работе с одаренной молодежью информационное письмо санкт-Петербургский, 63.77kb.
- 1. Обязательно ознакомиться с пакетом заранее. Все вопросы можно обсудить с редакторами, 215.48kb.
- Пособие для студентов IV-VI курсов, интернов и клинических ординаторов Санкт-Петербург, 494.12kb.
- Новые поступления за январь 2011 Физико-математические науки, 226.57kb.
2.3. Организация процессора и памяти в Intel 8086
В данном процессоре длина слова составляет 16 бит, что равно 2 байт. Минимально адресуемой и обрабатываемой единицей информации является байт, при этом адрес слова совпадает с адресом младшего байта и является четным. При разрядности адреса 16 бит максимальная емкость прямо адресуемой памяти составляет
216 = 64 Кбайт. Для расширения адресуемого пространства памяти используется ее разбиение на блоки – сегменты, называемое сегментированием памяти. Каждый сегмент имеет произвольную длину, не превышающую
64 Кбайт. Адрес байта в сегментированной памяти задается двумя составляющими: сегментная часть (16 бит), определяющая адрес начала сегмента, и смещение (16 бит) байт в пределах сегмента. Обычно адрес представляется в виде пары Сегмент (Segment) : Смещение (Offset). Начало размещения сегмента выравнивается на границу блока памяти из 16 байт, называемого «параграфом». Соответственно, физический адрес памяти получается путем суммирования сегмента, сдвинутого на 4 бита влево, со значением смещения. Результатом такого суммирования является 20-битный физический адрес, чем обеспечивается адресация 1 Мбайт памяти.
Пример. Пусть Segment = DCBA, Offset = 5678.
Физический адрес Adr будет определяться суммой: DCBA0 + 5678 = E2218.
2.4. Программно доступные регистры процессора
Начиная с 80386, процессоры Intel предоставляют 16 основных регистров для пользовательских программ плюс еще 11 регистров для работы с числами с плавающей запятой (FPU/NPX) и мультимедийными приложениями (ММХ). Все команды так или иначе изменяют значения регистров, и всегда быстрее и удобнее обращаться к регистру, чем к памяти.
Регистры общего назначения
16-битные регистры АХ (аккумулятор), ВХ (база), СХ (счетчик), DX (регистр данных) могут использоваться без ограничений для любых целей – временного хранения данных, аргументов или результатов различных операций. На самом деле, начиная с процессора 80386, все эти регистры имеют размер 32 бита и называются они ЕАХ, EВХ, EСХ, EDX. Кроме этого, отдельные байты в 16-битных регистрах АХ - DX тоже имеют свои имена и могут использоваться как 8-битные регистры. Старшие байты этих регистров называются АН, ВН, СН, DH, а младшие - AL, DL, CL, DL.
Другие четыре регистра общего назначения (РОН) – SI (индекс источника), DI (индекс приемника), BP (указатель базы), SP (указатель стека) – имеют более конкретное назначение и могут применяться для хранения всевозможных временных переменных, только когда они не используются по назначению. Регистры SI и DI используются в строковых операциях, ВР и SP используются при работе со стеком. Так же как и для регистров АХ - DX, начиная с процессора 80386, эти четыре регистра являются 32-битными, называются ESI, EDI, EВР и ESP соответственно и могут использоваться как универсальные РОН.
Сегментные регистры
При использовании памяти для формирования любого адреса применяются два числа – адрес начала сегмента и смещение искомого байта относительно этого начала. Для хранения адреса начала сегмента в процессорах Intel8086 предусмотрены следующие сегментные регистры – CS (сегмент кода), DS (сегмент данных), ES (дополнительный сегмент), SS(сегмент стека). Начиная с 80286, появились регистры FS и GS.
Смещение следующей выполняемой команды всегда хранится в специальном регистре – IP (указатель инструкции), запись в который приведет к тому, что следующей будет исполнена какая-нибудь другая команда, а не команда, расположенная сразу за данной. На самом деле, все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т. п. – осуществляют запись в CS и IP.
Регистр флагов (Рис. 2.3)
Х | Х | Х | Х | OF | DF | IF | TF | SF | ZF | 0 | AF | 0 | PF | 1 | CF |
15
8
7
0
Н
Рис. 2.3
а рис. 2.3 приняты следующие обозначения:
CF- флаг переноса (CARRY);
PF- флаг четности (PARITY);
AF- дополнительный флаг переноса (AUXILARY);
ZF- флаг нуля (ZERO);
SF- знаковый флаг (SIGN);
TF- флаг слежения, ловушка (TRAP);
IF- флаг прерываний (INTERRUPTION);
DF- флаг направления (DIRECTION);
OF- флаг переполнения (OVERFLOW).
2.5. Организация стека в Intel 8086
Стек – специальная область памяти, достуная для записи (заполнения) и выборки (выталкивания) данных только с одного конца, называемого верхушкой стека. В процессоре Intel 8086 на верхушку стека указывает РОН указатель стека (SP – stack pointer), стек может работать только со словами, заполнение стека происходит в сторону уменьшения адресов с помощью команды PUSH, а освобождение стека (выталкивание данных из стека) – в сторону увеличения адресов командой РОР.
По существу команда PUSH AX и POP AX, соответственно сохраняющая содержимое РОН AX в стеке и восстанавливающая содержимое РОН AX из стека, выполняется в два приема:
PUSH AX: POP AX:
(SP)-2SP [SP]AX
(AX)[SP] (SP)+2SP
Использование стека:
- промежуточное хранение содержимого регистра или группы регистров;
- обмен содержимого регистров;
- сохранение адресов возврата при вызове подпрограмм;
- передача параметров между вызываемой и вызывающей программами;
- сохранение адресов возврата и регистра флагов при обработке прерываний.