5
.docxФедеральное агентство связи
Федеральное государственное бюджетное образовательное
учреждение высшего образования
Поволжский государственный университет
телекоммуникаций и информатики
Кафедра Информационных систем и технологий
Лабораторная работа №5
По дисциплине «Архитектура информационной системы»
Тема: «Исследование способов адресации операндов»
Вариант 5 и 11
Выполнили: студент
Руководитель :
__________________ Куляс О.Л.
Самара 2018
Цель работы
Получение практических навыков использования различных способов адресации операндов. Практическое освоение основных функций TURBO DEBUGGER.
ВАРИАНТ 5
Листинг:
1.
2.
3.
4.
Вариант 11
.MODEL SMALL ;модель памяти ближнего типа
.STACK 100h ;определить стек размером 100h
.Data
Z2 DW 0EEh,99Fh, 300h,51AAh ; определить массив
var_1 DB 11000110b ;переменная размером байт
var_2 DW 9FFEh ;переменная размером слово
SIM DB 'QWERTYUIOP' ;создание массива из 3 стр по 10 символов
DB 'ЙЦУКЕГШЩЗ'
DB 'POIUYTREWQ'
a DW 0FF5Fh
.Code
Start:
mov AX,@data
mov DS, AX
mov ES, a ;переслать значение константы в регистр
LEA SI,Z2 ;загрузить в SI начальный адрес
;массива Z2
mov DX, var_2 ;переслать переменная var_2 в регистр DX
MOV 0[SI],DX ;переслать var_2 в 1 элемент массива SI
MOV BX,0 ;загрузить число байт в строке
MOV SI,2 ;загрузить индекс элемента
mov al, var_1 ;переслать var_1 в регистр
ADD al,SIM[BX][SI] ;сложение 3 элемента 1 строки с var_1
mov var_1,AL ;переслать в var_1 из регистра
LEA SI, SIM ;загрузить в SI начальный адрес SIM
MOV BL, SI[0][2] ;третий элемент 1 строки в регистр BL
MOV SI[28][2], BL ;BL в третий элемент 3 строки
END Start
6.1 В чем заключается принцип сегментации памяти?
Любые ассемблерные программы содержат, по крайней мере, один сегмент: сегмент кода. В некоторых программах используется сегмент для стековой памяти и сегмент данных для определения данных. Ассемблерная директива для описания сегмента SEGMENT имеет следующий формат:
<имя> SEGMENT
:
<имя> ENDS
Имя сегмента обязательно, оно должно быть уникальным. Директива ENDS означает конец сегмента. 6.2 Что означает адрес байта, слова и двойного слова?
6.3 Каков минимальный объем адресуемого участка памяти?
1 байт 6.4 Что такое регистровая адресация операндов?
Операнды команд могут храниться в регистрах микропроцессора, в ячейках памяти или могут быть указаны непосредственно в команде. Где бы ни нахо- дился операнд его местоположение можно определить с помощью адреса: каждый регистр, ячейку памяти или команду, которой передается управление, можно связать с их адресами. 6.5 Что используется для прямой адресации ячеек памяти?
Используется в случаях, когда операнд находится в одном из программно-адресуемых регистров микропроцессора. MOV AX, BX ;переслать содержимое BX в регистр AX. 6.6 Где располагаются операнды при непосредственной адресации?
Операнд, который представляет собой константу размером байт или слово, содержится непосредственно в команде. Такой способ адресации используется для целей загрузки регистров и переменных в памяти, в качестве формирования масок для работы с отдельными битами, для сравнения операндов с константами и т. д. MOV CH, 3Eh ;загрузить регистр CH числом 3Еh 6.7 Что используется для косвенной адресации ячеек памяти?
Это адресация к операнду, находящемуся в памяти. При этом эффективный адрес этого операнда ЕА, содержится в одном из базовых или индексных регистров. В этих случаях, обозначения регистров, содержащих эффективный адрес, заключаются в квадратные скобки. Если используются базовые регистры BP, BX – то адресация базовая, если индексные регистры SI, DI – то адресация индексная. 6.8 Какие регистры используются и как вычисляется адрес при ба- зовой адресации?
При использовании регистров BX, SI, DI происходит обращение к операндам, находящимся в текущем сегменте данных, сегментный адрес которого обычно хранится в сегментном регистре DS, т.е. к операндам с логическими адресами DS:BX, DS:SI, DS:DI 6.9 Какие регистры используются и как вычисляется адрес при ин- дексной адресации?
индексные регистры SI, DI 6.10 Какие регистры используются и как вычисляется адрес при ба- зовой адресации со смещением?
6.11 Какие регистры используются и как вычисляется адрес при ин- дексной адресации со смещением? 6.12 Как вычисляется адрес ячейки памяти при базово-индексной адресации?
Используется для нахождения операндов в памяти, причем эффективный адрес ЕА вычисляется как сумма содержимого двух регистров (базового и индексного), указанных в команде.
При этом могут использоваться следующие пары регистров:
[bx] [si] - адрес вычисляется как DS: [BX] [SI];
[bx] [di] - адрес вычисляется как DS: [BX] [DI];
[bp] [si] - адрес вычисляется как SS: [BP] [SI];
[bp] [di] - адрес вычисляется как SS: [BP] [DI].
6.13 Как вычисляется адрес ячейки памяти при базово-индексной адресации со смещением?
Используется для нахождения операндов в памяти, причем эффективный адрес ЕА вычисляется как сумма содержимого двух регистров (базового и индексного) и смещения, указанного в команде. Этот режим адресации является наиболее гибким, так как два компонента адреса позволяют реализовать наиболее широкие возможности по адресации операндов, например, обращение к элементам двумерного массива (матрице).
6.14 Какой способ адресации операндов обеспечивает самый корот- кий формат команды?
Прямая регистровая адресация
6.15 Какой способ адресации является самым сложным?
базово-индексной адресация
6.16 Каким образом процессоры i80х86 обращаются к портам ввода/вывода?
При выполнении любой программы в любой момент времени можно выделить несколько участков памяти (сегментов), с которыми происходит работа микропроцессора. Использование сегментов является отличительной особенностью микропроцессоров семейства I80х86 и преследовало несколько целей. Во-первых, использование сегментов является попыткой защитить или, по крайней мере, изолировать несвязные участки памяти в самой программе или между программами. Во-вторых, программа будет выполняться, если изменить только адрес начала сегмента (перенося его в памяти в другое место) и не менять относительное смещение в нем. Это позволяет, при необходимости, переносить программу в памяти даже в процессе ее выполнения. Возможности сегментации памяти существенно превышают возможный размер физической памяти, используемой в микропроцессоре. В некоторых ситуациях использовать сегментацию памяти нецелесообразно, поэтому в старших моделях микропроцессора (начиная с I80386) можно работать с сегментами памяти длиной до 4 Гбайт, т.е. вся доступная физическая память рассматривается как один сегмент. В реальном режиме работы микропроцессора любая программа, оперирует с четырьмя сегментами:
1. Сегмент кода.
2. Сегмент данных.
3. Сегмент стека.
4. Сегмент дополнительных данных.