Скачиваний:
31
Добавлен:
18.12.2018
Размер:
306.82 Кб
Скачать

Федеральное агентство связи

Федеральное государственное бюджетное образовательное

учреждение высшего образования

Поволжский государственный университет

телекоммуникаций и информатики

Кафедра Информационных систем и технологий

Лабораторная работа №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. Сегмент дополнительных данных.

Соседние файлы в предмете Автоматизированные информационные системы