Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация ЭВМ и сетей - Лаба 01.rtf
Скачиваний:
2
Добавлен:
10.07.2019
Размер:
764.62 Кб
Скачать

Лабораторная работа № 1

Основы ассемблера микропроцессоров Intel.

Цель работы: изучение структуры микропроцессора (МП), организации памяти, формата команд, режимов адресации, основных команд и структуры программы на языке ассемблера.

Общие сведения.

Структура микропроцессора I8086/88.

Укрупненная структура МП содержит две относительно независимые части: операционное устройство и шинный интерфейс (ну и +устройство управления).

Операционное устройство непосредственно выполняет заданные командой операции. Содержит группу общих регистров, арифметико-логическое устройство (АЛУ), регистр флагов F и блок управления. АЛУ выполняет арифметические, логические и сдвиговые операции аппаратным или микропрограммным способом в соответствии с заданной командой.

Шинный интерфейс выполняет для операционного устройства все операции обмена - выборку команд из памяти, обращение к памяти и внешним устройствам для считывания операндов и записи результатов. Команды хранятся во внутренней регистровой памяти - очереди команд длиной 6 байт (4байта для 8088). Очередная команда выбирается из памяти если в очереди есть два свободных («пустых») байта. Буферы адрес/данные и адрес/состояние содержат усилители с тремя выходными состояниями и обеспечивают номинальную нагрузочную способность линий. Сегментные регистры и сумматор адресов используются для формирования 20-разрядных физических адресов. Указатель (счетчик) команд IP хранит номер следующей команды.

Устройство управления в принципе включает две части - управление шиной (сигналы справа) и управление ОУ (сигналы внизу) дешифрирует команды, т. е. преобразует код команды в управляющие сигналы для внутренних схем МП, а так же воспринимает и вырабатывает внешние управляющие сигналы.

Эти части могут работать параллельно, что позволяет совмещать во времени выборку и выполнение команд (т. н. конвейерное выполнение команд).

Организация памяти.

Совокупность ячеек памяти, которые может адресовать МП называют адресным пространством (АП). Для МП Intel АП представляет собой одномерный массив байт, каждый из которых имеет 20-битовый (в рассматриваемом случае) физический адрес в диапазоне 00000 - FFFFF. Любые два смежных байта можно рассматривать как 16-разрядное слово. Младший байт слова имеет меньший адрес. Адресом слова считается адрес его младшего байта. При работе с байтами и словами об этом надо четко помнить. Например 16-ричное число ABCD хранится в памяти как CD AB. Обычно слова размещают по четным адресам (т.к. их можно передавать за один цикл шины). Такие слова называют выровненными на границе слова.

Любая область памяти из смежных параграфов размером не более 64 К называется сегментом. Начальный (или базовый) адрес сегмента определяется номером первого параграфа в нем. Для обращения к ячейке памяти нужно определить базу сегмента и расстояние от базы, называемое смещением (или эффективным, или исполнительным адресом). Таким образом физический (или полный) адрес получается сложением базы сегмента, умноженной на 16 (или сдвинутой влево на 4 разряда) и смещения. Обычно адрес записывается в форме СЕГМЕНТ:СМЕЩЕНИЕ, хотя возможна и запись в виде пятизначного числа. Один и тот же физический адрес можно записать разными способами, в зависимости от выбранного базового адреса сегмента.. Сегменты могут быть соседними (смежными) не перекрывающимися, частично или полностью перекрывающимися. Единственное ограничение на размещение сегмента в памяти - он должен начинаться на границе параграфа.

16-разрядные регистры МП могут непосредственно адресовать 216 байт = 64Кб памяти. Для увеличения объема адресуемой памяти используются различные методы. Intel выбрал сегментную организацию памяти при которой память разделяется на параграфы по 16 байт с номерами от 0 до 64К.

При выполнении программы МП может одновременно обращаться к четырем сегментам: сегменту кода, содержащему коды машинных команд выполняемой программы; сегменту данных с определенными данными, константами и рабочими областями, необходимыми программе; сегменту стека, хранящему адреса возврата и передаваемые параметры для подпрограмм и дополнительному сегменту, предназначенному для специального использования, часто для хранения данных, дополнительно к сегменту данных.

Прграммная модель мп.

Программная модель, или модель МП для программиста, которую мы и будем в основном рассматривать, включает регистры, доступных пользователю на уровне команд. Имеется 14 16-разрядных регистров, которые разделены на три группы.

  1. Арифметические регистры или регистры общего назначения (РОН) AX, BX, CX и DX. Допускается отдельная адресация их старшей (H) и младшей (L) половин, т.е. каждый из них можно использовать как 16-битный регистр или как два 8-битных. Предназначены в основном для временного хранения данных, особенно операндов арифметических операций. Каждый из регистров имеет некоторые специальные функции. В частности, AX - аккумулятор и основной регистр для арифметических операций, BX - содержит смещение для косвенной адресации, CX - счетчик числа повторений цикла, DX - используется для организации ввода-вывода.

  2. Сегментные регистры хранят начальные адреса четырех сегментов по 64 К. Три из них имеют вполне определенное значение: CS - хранит адрес сегмента кода выполняемой программы, DS - указывает сегмент данных, используемых программой, SS - сегмент стека. ES - дополнительный сегментный регистр, используемый обычно для хранения данных. С сегментацией связаны понятия ближнего (Near) и дальнего (Far) адреса (вызова, перехода). В первом случае доступ к нужной ячейке производится только указанием смещения, а адрес сегмента определяется текущим содержимым соответствующего регистра сегмента. Во втором случае указывается полный адрес CS:IP.

  3. Индексные и указательные регистры служат для задания адреса относительно начала соответствующего сегмента. IP (Instruction Pointer, PC - Program Counter) - указатель инструкций (программный счетчик) определяет смещение для следующей выполняемой инструкции в сегменте кода (определенном регистром CS). Программа не может явно изменить его значение. В неявном виде оно изменяется при выполнении команд перехода (JMP, CALL). SP (Stack Pointer) - указатель стека и BP (Base Pointer) - указатель базы предназначены для доступа к текущему сегменту стека, а регистры SI (Source Index - индекс источника), DI (Destination Index - индекс приемника) хранят смещение в текущем сегменте ванных.

  4. Регистр флагов F (или регистр слова состояния процессора - PSW) хранит признаки выполнения арифметических и логических операций (переноса, переполнения, нулевого и отрицательного результата, четности, BCD переноса) и управляющие биты (направления, прерываний, ловушки).

Стек после записи

Стек после чтения

Стеком называют память, реализующую безадресное задание операндов по принципу «последний пришел - первый ушел». Стек часто называют магазинной памятью по аналогии с пружинным магазином и может быть построен на основе реверсивного сдвигового регистра. В МП Intel (и соответственно в IBM PC) стек реализуется в оперативной памяти и используется от основания ( с наибольшего адреса) к вершине(наименьшему адресу). При этом элементы данных не перемещаются в памяти, а меняется только указатель стека (уменьшается).

Стек перед записью