
- •2. Учебно-методический блок
- •2.1 Теоретическая часть
- •Краткая история развития компьютерной техники.
- •2. Ко времени ее реализации должна быть достаточно развита техническая база для реализации идеи в массовом масштабе.
- •3. В практической реализации этой идеи должна быть заинтересована значительная часть общества (должен «созреть» социальный заказ).
- •2. Обобщенная структурная схема компьютера
- •3.Оценка производительности компьютеров
- •4. Классификация и краткий обзор современных компьютеров
- •Суперкомпьютеры
- •Мини-компьютеры
- •Микроконтроллеры
- •5. Формы представления информации в компьютере.
- •5.1. Кодирование в компьютерах числовой информации.
- •Десятичная:
- •Шестнадцатеричная:
- •Двоично-десятичная:
- •5.2. Кодирование в компьютерах символьной (алфавитно-цифровой) информации.
- •5.3 Кодирование в компьютерах звуковой информации.
- •5.4 Кодирование в компьютерах визуальной информации.
- •Основы компьютерной арифметики.
- •1. Операции сложения и вычитания целых чисел.
- •2. Операции с вещественными числами.
- •7. Элементная база компьютера.
- •8. Структура и функционирование cpu.
- •9. Способы адресации информации
- •10. Система прерываний компьютера.
- •Основные понятия.
- •Основные характеристики систем прерывания.
- •4. Классификация систем прерывания.
- •11. Принципы организации системы ввода/вывода в компьютерах.
- •Общие положения
- •3. Ввод/вывод по прерыванию.
- •4. Ввод/вывод с прямым доступом к памяти.
- •12. Конструктив атх рс и архитектура системной платы
- •13. Устройства ввода информации
- •1. Клавиатура
- •2. Мышь.
- •14. Организация оперативных запоминающих
- •1. Общие принципы функционирования
- •2. Тайминги
- •3. Тенденции развития
- •4. Распределение адресного пространства оп пк.
- •2.2 Лабораторный практикум
- •2.3 Методические рекомендации для преподавателей и студентов
- •2.3.1.Методические рекомендации по изучению дисциплины для преподавателя
- •2.3.2. Методические рекомендации для студентов
- •2.3.3. Методические рекомендации для применения активных и интерактивные формы проведения занятий
- •3.Глоссарий
- •Диагностико-контролирующий блок
- •Тест по теме: «Архитектура компьютеров» Вариант №1
- •Тест по теме: «Архитектура пк» Вариант №2
- •Блок наглядно-демонстрационного материала
9. Способы адресации информации
в компьютере.
1. Способы адресации информации
Команды и операнды (т.е. информация, подлежащая обработке) размещаются в компьютере либо во внутренних регистрах процессора, либо в оперативной (виртуальной) памяти компьютера, либо в его периферийных устройствах. В процессе функционирования компьютера под управлением центрального процессора в нем осуществляется выборка команд исполняемых программ, считывание необходимых данных, сохранение результатов обработки и пр.
Адресация – это способ указания процессору о месторасположении (места хранения) команд и операндов в компьютере.
В литературе методы адресации классифицируются по-разному, но наиболее распространенная будет, пожалуй, следующая.
Методы адресации информации, используемые в компьютерах.
1. Неявная (подразумеваемая) адресация.
2. Непосредственная адресация.
3. Прямая адресация.
4. Косвенная адресация:
а) регистровая;
б) базовая;
в) индексная;
г) базовая индексная;
5. Относительная адресация.
6. Адресация устройств ввода/вывода.
1. Неявная адресация. Под неявной адресацией понимается такой метод адресации, когда в команде адрес операнда прямо не указывается, а подразумевается. Сам адрес операнда процессором определяется однозначно по коду операции самой команды.
Примеры: 1. STD – установить в 1 флаг DF.
2. CMC – инвертировать флаг CF.
3. PUSH BX – содержимое регистра BX занести в стек, по
адресу, определяемому содержимым указателя стека SP.
4. MUL CX – содержимое регистра AL умножить на
содержимое регистра CX; результат поместить в регистр AX.
2. Непосредственная адресация. При этом виде адресации операнд находится непосредственно в самой команде.
Примеры: 1. MOV AX, 0FA2Bh – занести в регистр AX константу
0FA2Bh.
2. AND AL, 0Fh – осуществить операцию конъюнкции между
константой 0Fh и содержимым регистра AL; результат
занести в регистр AL.
3. Прямая адресация. При этом способе адресации адрес операнда прямо указывается в команде. Это указание определяется либо приведением имени регистра, где находится требуемый операнд (тогда, часто, такая адресация называется – прямой регистровой), либо указанием прямого адреса в ОЗУ. При программировании на языке ассемблера этот прямой адрес может выделяться квадратными скобками.
Примеры: 1. ADD AX, BX – сложить содержимое регистров AX и BX;
результат поместить в регистр AX.
2. INC CX – увеличить на 1 содержимое регистра CX.
3. CALL 10FAh – передать управление на подпрограмму
по адресу 10FAh.
4. SHL WORD PTR [0FA2Bh], CL – сдвинуть влево слово,
расположенное в ОЗУ по адресу 0FA2Bh, на число разрядов,
указанное в регистре CL.
4. Косвенная адресация. Косвенная адресация является самым распространенным способом адресации данных, расположенных в ОЗУ. При косвенной адресации в команде указывается регистр, где находится адрес операнда, либо некоторое выражение по которому вычисляется этот адрес, в котором участвуют базовые и индексные регистры, а также некоторые константы. При написании программы на языке ассемблера, выражение для косвенного адреса указывается в квадратных скобках. Этот адрес обычно носит название исполнительного или эффективного адреса (EA). Различают несколько разновидностей косвенной адресации.
а) Регистровая косвенная адресация, при которой адрес размещен в указываемом в команде регистре.
Примеры: 1. ADD AX, [BX] – сложить содержимое регистра AX и ячейки
памяти ОЗУ, расположенной по адресу, указанному в
регистре BX; результат поместить в регистр AX.
б) Базовая косвенная адресация. При базовой адресации исполнительный адрес операнда определяется как сумма содержимого одного из базовых регистров плюс некоторая константа. Эта адресация весьма удобна для адресации одинаковых элементов равновеликих массивов чисел.
Примеры: 1. MOV AX, [BX+1234h] – передать в регистр AX содержимое ячейки памяти (слово) по адресу, определяемому как сумма содержимого базового регистра ВX плюс константа 1234h.
2. MOV [BP+4321h], DX – переслать в ячейку памяти ОЗУ по адресу, определяемому как сумма содержимого базового регистра BP плюс константа 4321h, содержимое регистра DX.
в) Индексная косвенная адресация. При индексной адресации исполнительный адрес располагается в индексных регистрах SI или DI, часто с добавлением некоторой константы. Этот способ адресации очень удобен для адресации последовательности чисел в массиве, поскольку особенностями индексных регистров SI и DI является то, что при каждом обращении к ним, их содержимое автоматически инкрементируется или декрементируется (в зависимости от состояния бита DF в регистре флагов). Это же свойство делает этот способ адресации весьма удобным и при обработке цепочек (строк).
Примеры: 1. SUB AX, [SI+1234h] – из содержимого регистра AX
вычесть содержимое ячейки памяти ОЗУ по адресу, равному содержимому регистра SI плюс константа 1234h; результат поместить в регистр AX.
2. DIV Word PTR [SI+4321h] – разделить содержимое двойного слова, расположенного в регистре DX (старшие два байта) и регистре AX (младшие два байта) на слово в ОЗУ по адресу, равному содержимому регистра SI плюс константа 4321h; частное будет помещено в регистр AX, а остаток в регистр DX.
г) Базовая индексная косвенная адресация. При этом способе адресации исполнительный адрес определяется как сумма содержимого базового и индексного регистров со смещением (константой) или без. Этот способ адресации удобен для адресации элементов двумерных матриц, когда номер строки определятся содержимым индексного регистра, а номер столбца – содержимым базового регистра. При этом начальный адрес размещения матрицы определяется смещением (константой).
Примеры: 1. MOV AX, [BX+SI+1234h] – переслать слово, расположенное в ОЗУ по адресу, вычисленному как сумма содержимого регистров BX, SI и константы 1234h, в регистр AX.
5. Относительная адресация. Этот способ адресации относится только к адресации команд. На линейных участках программы, адрес команды берется из регистра IP, т.е. имеет место косвенная регистровая адресация. Однако при передачах управления, после выполнения команд условных переходов, адрес точки перехода определяется как сумма содержимого регистра IP и некоторого смещения относительно IP, автоматически вычисляемого по указанному в команде адресу перехода.
Примеры: 1. JС 1234h – если после выполнения предыдущей команды был перенос из старшего разряда, то осуществляется передача управления по указанному адресу.
6. Адресация ввода/вывода. Этот способ адресации используется не во всех компьютерах. Он используется для адресации устройств ввода/вывода только в тех компьютерах, в которых предусмотрено отдельное адресное пространство ввода/вывода. Так, он характерен для всех компьютеров, в которых используются процессоры Intel и совместимые с ними. Однако в компьютерах Macintosh, где используются процессоры фирмы Motorola, такие команды отсутствуют. Там адресное пространство совмещено с общим адресным пространством ОЗУ и обращение к устройствам ввода/вывода осуществляется как к обычным ячейкам памяти ОЗУ по командам MOV.
Адресация же устройств ввода/вывода в компьютерах с раздельным адресным пространством осуществляется по специальным командам ввода IN (INS) и вывода – OUT (OUTS), путем использования как прямой, так и косвенной регистровой адресации. При этом, при косвенной регистровой адресации используется исключительно регистр DX и сама она применяется только в тех случаях, когда число регистров ввода/вывода в компьютере превышает 256. Кроме того, следует помнить, что любой обмен информацией между процессором и периферийными устройствами осуществляется только через регистр AX (AL, EAX).
Примеры: 1. IN AC, 51h – прямая адресация при вводе данных из
устройства по адресу 51h.
2. IN AC, DX – косвенная адресация при вводе данных из
устройства, адрес которого находится в регистре DX.
3. OUT 17h, AC – прямая адресация при выводе данных в
устройство по адресу 17h.
4. OUT 05, DX – косвенная адресация при выводе данных в
устройство, адрес которого находится в регистре DX.
(Здесь AC => AL, AX, EAX)
2. Формат машинной команды в процессорах i8086
Как следует из описания способов адресации, операнды можно адресовать либо самим кодом операции (неявная адресация), либо тем или иным способом указывая их адреса отдельно. В последнем случае, в командах, в зависимости от ее назначения, могут быть указаны адреса либо одного, либо двух операндов. При этом, если в команде используются два операнда, то один из них обязательно должен располагаться в регистре, а другой может располагаться либо в регистре, либо в памяти. Адресация в одной команде двух операндов, находящихся в памяти, не допускается. (Два операнда, находящихся в памяти, могут существовать только при осуществлении цепочечных операций, при пересылке или сравнении строк, однако, в этом случае, они адресуются отдельными командами).
Наиболее используемыми являются команды с двумя операндами, форматы которых в общем виде приведены на рис.9.1, где штриховыми линиями обозначены необязательные байты команды. В первом байте команды размещается: код операции COP, который определяет характер действия данной команды; нулевой бит байта - бит w, который определяет размер операнда (w = 0 → байт, w = 1→ слово) и первый бит байта – бит d или s.
Рис.9.1. Форматы двухоперандовых команд
Бит d определяет направление передачи операнда или результата операции в регистр, который определяется полем reg второго байта команды (постбайта). При d = 1 осуществляется передача операнда или результата операции в регистр, который определяется полем reg постбайта, а при d = 0 – передача из указанного регистра.
Формат а) характерен для таких команд как: ADD DX, [BX+SI+disp]; SUB [BX+SI+disp]; AND AX, BX и т.п.
Бит s используется в командах с непосредственно адресуемым операндом (формат б). При этом, если адресуемый байт, участвует в байтовых операциях, т.е. w =0, то значение s не играет роли и процессором игнорируется. Его значение важно тогда, когда w = 1, т.е. когда непосредственно адресуется либо двухбайтовое слово (s = 0), либо когда адресуется один байт, но он участвует в двухбайтовой адресации и должен использоваться со знаковым расширением до 16 бит (s = 1). Младший и старший байт непосредственного операнда определяют, соответственно, поля команды: data L и data H.
Формат б) характерен для таких команд как, например, MOV [BX+SI+disp], 0F52BH; ADD AX, 46A9H; SUB DX, 15H; ADC AL, 9BH и т.п.
Формат в) характерен для команд, в которых указывается адрес только одного операнда. Второй операнд, при этом, адресуется неявно. Примером таких команд служат, например, команды: MUL DX; DIV [BX+SI+disp]; PUSH [BX+disp] и т.п.
Второй байт команды, называемый постбайтом служит для указания места размещения операндов (регистре, памяти), а также для указания присутствия и характера смещения в команде (16 битовое или 8 битовое со знаковым расширением до 16 бит). Напомним, что смещением в команде (disp – Displacement) называется константа, используемая при формировании эффективного адреса.
Постбайт состоит из трех полей: md – режим, reg – регистр и r/m – регистр или память. Поле reg определяет операнд, который обязательно находится в регистре процессора и условно считается вторым операндом. Поле r/m определяет операнд, который может находиться в регистре или памяти и условно считается первым.
Поле reg используется для указания регистра только в двухоперандных командах. Если в команде один операнд, то он идентифицируется полем r/m, а поле reg используется для расширения кода операции.
Кодирование в команде регистров процессора, а также полей md и r/m постбайта приведены в таблицах на рисунках 9.2 и 9.3.
Формат однооперандных команд может быть реализован ассемблерной программой двояким образом. Если операнд находится в регистрах процессора, то такой (специальный) формат команды может иметь всего один байт, в котором размещается и код операции и код регистра. В других случаях используется стандартный формат с постбайтом, в котором в поле reg постбайта занесены нули. (см. рис.9.4)
7 6 5 4 3 2 1 0
md reg / сop reg / mem
Код представления смещения в EA или код регистровой адресации: |
Код регистра или расширение кода OP:
|
Код регистра (при md=11) или код способа вычисления эффективного адреса EA (при md ≠ 11): |
00 - DISP = 0 01 - DISP = знак disp 8 10 - DISP = disp 16 11 - Регистровая адресация. |
w=0 w=1 000 - AL или AX 001 - CL или CX 010 - DL или DX 011 - BL или BX 100 - AH или SP 101 - CH или BP 110 - DH или SI 111 - BH или DI
|
000 или EA=(BX)+(SI)+DISP 001 или EA=(BX)+(DI)+DISP 010 или EA=(BP)+(SI)+DISP 011 или EA=(BP)+(DI)+DISP 100 или EA=(SI)+DISP 101 или EA=(DI)+DISP 110 или EA=(BP)+DISP* 111 или EA=(BX)+DISP |
* Примечание: при md=00 и reg/mem=110 EA=disp 16 (прямая адресация)
Рис 9.2. Формат постбайта в командах процессора i8086
7
6 5 4 3 2 1 0
0 0 1 S R 1 1 0
Код
сегментного
регистра:
00 - ES
01 - CS
10 - SS
11 – DS
Рис.9.3. Формат префикса адресации сегментных регистров
.
Рис.9.4. Пример стандартного (а) и специального (б) форматов
команды INC r