Автор работы: Пользователь скрыл имя, 26 Февраля 2013 в 22:31, лабораторная работа
Целью работы является исследование архитектурных характеристик от-
дельных микропроцессоров и приобретение навыков записи программ в мне-
мокодах и машинных кодах.
регистра ES), а регистр BP адресуется к памяти относительно регистра SS (сег-
ментный регистр стека).
Стек находится в сегменте, на который указывает регистр SS. Напри-
мер:
:
push bp
mov bp,sp
mov ax,[bp+4]
:
Здесь выполняется обращение к сегменту стека для загрузки в AX пер-
вого параметра, передаваемого при вызове Турбо Си подпрограммы на Ас-
семблере. Если говорить кратко, то регистр BP создан для обеспечения работы
с параметрами, локальными переменными другой адресации к памяти с ис-
пользованием стека.
Регистр SP называется также указателем стека. Это "наименее общий"
из регистров общего назначения, поскольку он практически всегда использует-
ся для специальной цели - обеспечения стека. Стек - это область памяти, в
которой можно сохранять значения и из которой они могут затем извлекаться
по дисциплине "последний – пришел – первый - ушел" (LIFO). То есть по-
следнее сохраненное в стеке значение будет первым значением, которое вы
получите при чтении из стека.
Регистр SP в
каждый момент времени
ствие, состоящее в занесении значений в стек, называют также "заталкивани-
ем" (pushing) в стек. В самом деле, инструкция PUSH используется для зане-
сения значений в стек. Аналогично, действие, состоящее в извлечении (выбор-
ке) значений из стека, называют также "выталкиванием" (popping) из стека
(для этого используется
Внимание! Стек используется
всякий раз, когда вы
грамму. Кроме того, стек используют некоторые системные ресурсы, когда они
прерывают процессор, чтобы выполнить свои функции. Если вы измените SP,
даже на несколько инструкций, то правильное значение стека может оказаться
недоступным, когда он потребуется системным ресурсам.
1.2.5 Указатель инструкций
Указатель инструкций (регистр IP) всегда содержит смещение в памя-
ти, по которому хранится следующая выполняемая инструкция. Когда выпол-
няется одна инструкция, указатель инструкций перемещается таким образом,
чтобы указывать на адрес памяти, где хранится следующая инструкция. Обыч-
но
следующей выполняемой
следующему адресу памяти, но некоторые инструкции, такие, как вызовы или
переходы, могут привести к тому, что в указатель инструкций будет загружено
новое значение. Таким образом, будет выполнен переход на другой участок
программы.
Значение счетчика инструкций нельзя прочитать или записать непосред-
ственно.
Загрузить в указатель
циальная инструкция перехода (аналогичная только что описанным).
Указатель инструкций сам по себе не определяет адрес, по которому
находится
следующая выполняемая
ет сегментная организация памяти процессора 8086. Для извлечения инст-
рукции предусмотрен регистр CS, где хранится базовый адрес, при этом указа-
тель инструкций задает смещение относительно этого базового адреса.
1.2.6 Сегментация памяти процессора 8086 и сегментные регистры
Основной предпосылкой
8086 может адресоваться к 1 мегабайту памяти. Для адресации ко всем ячейкам
адресного пространства в 1 мегабайт необходимы 20-разрядные сегментные ре-
гистры. Однако процессор 8086 использует только 16-разрядные указатели на
ячейки памяти. Вспомним, например, что для ссылки на память используется
16-разрядный регистр BX. Как же
тогда согласовать 16-
процессора 8086 и 20-разрядные адреса?
Ответ состоит в том, что процессор 8086 использует двухступенчатую
схему адресации. Да, используются 16-разрядные указатели, но эта форма
представляет собой только часть полной схемы адресации. Каждый 16-
разрядный указатель памяти или смещение комбинируется с содержимым 16-
разрядного сегментного
мяти.
1 F D 5 - 16-разрядный сегментный регистр
+ 1 2 3 C - 16-разрядное смещение
2 0 F 8 C - 20-разрядный адрес памяти
Рисунок 1.5 - 20-разрядные адреса памяти.
Сегменты
и смещения комбинируются
сегмента сдвигается влево на 4 разряда (то есть умножается на 16), а затем
складывается со смещением, как показано на рисунке 1.5.
Рассмотрим, например, следующий фрагмент программы:
:
mov ax,1000h
mov ds,ax
mov si,201h
mov dl,[si]
:
Здесь для сегментного регистра DS устанавливается значение 1000h, SI
устанавливается в значение 201h. Мы можем представить их в виде "сегмент:
смещение" - 1000:201h. Адрес, из которого загружаются данные в DL, пред-
ставляет собой:
((DS * 16) + SI) или ((1000h * 16) + 201h)
Итак, программа получает доступ к полному адресному пространству
в 1 мегабайт с помощью использования только пары "сегмент: смещение". Все
инструкции и режимы адресации процессора 8086 по умолчанию работают от-
носительно того или иного сегментного регистра, хотя в некоторых инструкци-
ях можно явно указать, что нужно использовать желаемый сегментный ре-
гистр. Обычно редко требуется загружать значение непосредственно в сегмент-
ный регистр, а вместо этого сегментные регистры в программе имеют символи-
ческие имена сегментов, которые в ходе ассемблирования, компоновки и вы-
полнения превращаются в числа. Это необходимо, поскольку нет способа ска-
зать заранее, где в памяти будет находиться данный сегмент: это зависит от
версии DOS, числа и размера резидентных в памяти программ, а также потреб-
ности в памяти остальной части программы. Использование имен сегментов по-
зволяет Турбо Ассемблеру и операционной системе DOS выполнять подобные
вычисления.
Наиболее общим именем сегмента для размещения данных является
@Datа, которое в упрощенных
директивах определения
для ссылки на используемый по умолчанию сегмент данных. Например:
dosseg
.model small
.data
var1 dw 0
:
.code
mov ax,@data
mov ds,ax
:
end
Здесь регистр DS загружается таким образом, что он будет указывать
на используемый по умолчанию сегмент данных, в котором находится Var1.
Так как 64К - это максимальный объем памяти, к которой можно адре-
соваться с помощью 16-битового смещения, то при работе с большим (более
64К) объемом памяти значение
сегментного регистра и
то изменять.
Сегментные
регистры не могут
или приемников в арифметических и логических инструкциях и единственная
операция, которую можно выполнять с сегментными регистрами, состоит в ко-
пировании значений между сегментными регистрами и другими общими реги-
страми или памятью. Например, чтобы добавить значение 100 к регистру ES,
потребуется следующее:
:
mov ax,es
add ax,100
mov es,ax
:
Из всего этого можно сделать заключение, что процессор 8086 лучше
подходит для работы с памятью в блоках, не превышающих 64К.
Ещё одна особенность
использования сегментов
каждая ячейка памяти адресуется через многие возможные сочетания "сегмент:
смещение". Например, адрес памяти 100h адресуется с помощью следующих
значений "сегмент: смещение": 0:100h, 1:F0h, 2:E0h и т.д., так как при вычислении всех этих пар "сегмент: смещение" получается значение адреса 100h.
Аналогично регистрам
общего назначения каждый
играет свою, конкретную роль. Регистр CS указывает на код программы, DS
указывает на данные, SS - на стек, сегмент (сегментный регистр) ES - это
"трафаретный" (дополнительный)
сегмент, который может
как это необходимо.
Регистр CS указывает
на начало блока памяти
мент кода, в котором находится следующая выполняемая инструкция. Сле-
дующая инструкция, которую нужно выполнить, находится по смещению, оп-
ределяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в
форме "сегмент:смещение") CS: IP. Никакие другие режимы адресации или
указатели памяти, отличные от IP, не могут нормально работать относительно
регистра CS.
Регистр DS указывает на начало сегмента данных, которые представ-
ляет собой блок памяти объемом
64К, в котором находится
мещенных в памяти операндов. Обычно для ссылки на адреса памяти исполь-
зуются смещения, предполагающие использование регистров BX, SI или DI.
Регистр ES указывает
на начало блока памяти
называется дополнительным сегментом. Как и подразумевает его название,
дополнительный сегмент не служит для какой-то конкретной цели, но досту-
пен тогда, когда в нем возникает необходимость. Иногда дополнительный сег-
мент используется для выделения дополнительного блока памяти объемом
64К для данных. Однако доступ к памяти в дополнительном сегменте менее
эффективен, чем доступ к памяти в сегменте данных. Особенно полезен до-
полнительный сегмент, когда используются строковые инструкции. Все стро-
ковые инструкции, которые выполняют запись в память, используют в качестве
адреса памяти, в которую нужно выполнить запись, пару регистров ES:DI.
Это означает, что регистр ES особенно полезен при использовании его в каче-
стве целевого сегмента при копировании блоков, сравнении строк, просмотре
памяти и очистке блоков памяти.
Регистр SS указывает
на начало сегмента стека,
ет собой блок памяти объемом 64К, в котором находится стек. Все инструк-
ции, которые неявно используют регистр SP (включая занесение в стек, извле-
чение из стека, вызовы и возвраты управления), работают с сегментом стека,
так как только регистр SP может использоваться для адресации памяти в сег-
менте стека. Как мы обсуждали ранее, регистр BP также работает относи-
тельно сегмента стека. Это позволяет использовать регистр BP для доступа к
параметрам и переменным, которые хранятся в стеке.
1.3 Содержание отчета
1.3.1 Название лабораторной работы.
1.3.2 Цель работы.
1.3.3 Рисунки с лекции.
1.3.4 Фрагменты программ с комментариями к лабораторной работе.
1.4.5 Листинг программы к лабораторной работе.
1.4 Контрольные вопросы
1.4.1 В чём отличие понятий структуры и архитектуры системы (вычис-
лительной, управляющей, микропроцессорной и т.п.)?
1.4.2 Какие основные компоненты входят в состав микропроцессорной
системы?
1.4.3 Какие элементы
микропроцессора являются
функционировании процессора?
1.4.4 Какая система счисления является машинным языком? В какой
системе счисления обычно записывают команды на машинном языке? Почему?
1.4.5 под архитектурой МП понимают совокуп-
ность следующих компонентов и характеристик:
- разрядность адресов и данных;
- состав, имена
и назначение программно-
- форматы системы команд;
- режимы адресации памяти;
- способы машинного представления данных разного типа;
- способ адресации внешних устройств и средства выполнения опера-
ций ввода-вывода;
- особенности инициирования и обработки прерываний.Какие архитектурные характеристики микропроцессора представ-
ляют наибольший интерес при его программировании?
1.4.6 Является ли модель МП Intel 8086 моделью фон Неймана и поче-
му? Модель МП Intel 8086 является моделью фон Неймана
1.4.7 К какой
разновидности архитектур
RISC, CISC, SIMD, SISD, MIMD?
1.4.8 Перечислите основные группы регистров, входящих в состав МП
8086.
1.4.9 При работе
РС в реальном режиме
соб адресации памяти. В чём суть? Поясните на примере с 16-битной шиной
адреса.
1.4.10 Для чего предназначена программа-отладчик?
1.4.11 Что такое стек и где он используется? Приведите пример исполь-
зования стека.
1.4.12 Назовите основные признаки отличия RISC - архитектуры МП от
CISC. Что такое конвейерная
наиболее приемлема: RISC или CISC? Почему?
1.4.13 Какая информация включается в состав слова состояния процессора?
Регистры или наборы регистров, известных под названием "слово состояния программы" (program status word — PSW), включают информацию о состоянии и кодах условий.
1.4.14 Как организуется в микро-ЭВМ сегментно-страничный способ