15278

Засвоїти способи адресування операндів в мікропроцесорі і8086

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

Информатика, кибернетика и программирование

Лабораторна робота № 3 Тема: Основи програмування мовою Асемблер. Мета роботи: Засвоїти способи адресування операндів в мікропроцесорі і8086. Набути навичок з використання різних способів адресування операндів при складанні програм мовою асемблера. Ко...

Украинкский

2013-06-11

161 KB

12 чел.

Лабораторна робота № 3

Тема: Основи програмування мовою Асемблер.

Мета роботи: Засвоїти способи адресування операндів  в мікропроцесорі і8086. Набути навичок з використання різних способів адресування операндів при складанні програм мовою асемблера.

  1.  Короткі теоретичні відомості

  1.  Адресування операндів в мікропроцесорах

МП підтримує наступні чотири основні режими адресування операндів:

  1.  Пряме адресування. У цьому режимі 2 та 3 байти команд містять адресу операнду.
  2.  Регістрове адресування. У мнемоніці команди вказується позначення РЗП, у якому знаходиться операнд.
  3.  Безпосереднє адресування. У цьому режимі в команді вказується 8 або 16-бітовий операнд у другому або у другому та третьому байтах команди. Операнд у цьому випадку знаходиться у пам’яті  команд.
  4.  Непряме регістрове адресування. У команді вказується регістр (або пара регістрів), який містить адресу комірки пам’яті.

Непряме регістрове адресування має різновиди: базове, індексне і базово-індексне.

Базове адресування. Ефективна адреса операнду EA визначається сумою вмісту одного з базових регістрів BX або BP і зміщенням у вигляді числа. В окремому випадку зміщення може не бути.

Індексне адресування. Ефективна адреса операнду EA визначається сумою вмісту одного з індексних регістрів SI або DI і зміщення у вигляді числа.

Базово-індексне адресування. Ефективна адреса операнду EA визначається сумою вмісту одного з базових регістрів BX або BP, вмісту одного з індексних регістрів SI або DI і зміщення у вигляді числа.

Зауважимо, що зміщення в розглянутих різновидах адресування не є тотожним зміщенню відносно початку сегменту. Останній задається ефективною адресою операнду EA.

З подальшим розвитком МП був здійснений перехід до 32-розрядного адресування в 32-розрядних МП. Ці МП також підтримують і 16-розрядне адресування, чим забезпечується програмна сумісність МП різних поколінь.

Адресування 32-розрядних МП ілюструється рис.1 і табл.1.

Як бачимо з табл.1, при звертаннях до пам'яті ефективна адреса ЕА обчислюється за формулою

EA = Base +Index* Scale +Disp

з використанням наступних компонентів:

-  Зміщення (Dіsplacement або Dіsp) - 8, 16 або 32-бітне число, що включене у команду;

- База (Base) - вміст базового регістру. Використовується для вказівки на початок деякого масиву;

- Індекс (Іndex) - вміст індексного регістру. Використовується для вибору елемента масиву;

- Масштаб (Scale) - множник (1, 2, 4 або 8), зазначений у коді інструкції. Вказує на розмір елемента масиву і доступний тільки при 32-бітному адресуванні.

ЕА

Рисунок 1 – Обчислення ефективної адреси

Таблиця 1 – Обчислення ефективної адреси ЕА

Адресування

Адреса

Пряме

EA = Disp

Непряме регістрове

EA = Base

Базове

EA = Base +Disp

Індексне

EA = Index +Disp

Масштабоване індексне

EA = Index* Scale +Disp (*)

Базово-індексне

EA = Base +Index

Масштабоване базово-індексне

EA = Base +Index* Scale (*)

Базово-індексне зі зміщенням

EA = Base +Index +Disp (*)

Масштабоване базово-індексне зі зміщенням

EA = Base +Index* Scale +Disp

(*)- масштабування індексу можливе тільки при 32-бітному  адресуванні.

  1.  Адресування операндів в МП і8086

В подальшому ми будемо працювати з емулятором МП і8086, який не підтримує 32-бітове адресування, тому нижче розглянемо варіанти адресування операндів цього МП.

Для звертання до запам’ятовуючого пристрою (ЗП) використовують чотири регістри: BX, SI, DI, BP. Комбінації вказаних регістрів утворюють різні варіанти непрямого регістрового адресування комірок пам’яті ЗП. В табл.2 приведені допустимі варіанти формування адрес МП і8086 при звертаннях до ЗП. Запис адреси комірки пам’яті в командах асемблера подається у квадратних дужках, наприклад команда MOV [BX], 0A9C5h забезпечує пересилання числа 0A9C5h в комірку пам’яті, адреса якої вказана в регістрі BX.

Таблиця 2.2 Допустимі варіанти формування адрес при звертаннях до ЗП

[BX + SI]
[BX + DI]
[BP + SI]
[BP + DI]

[SI]
[DI]
d16 (variable offset only)
[BX]

[BX + SI + d8]
[BX + DI + d8]
[BP + SI + d8]
[BP + DI + d8]

[SI + d8]
[DI + d8]
[BP + d8]
[BX + d8]

[BX + SI + d16]
[BX + DI + d16]
[BP + SI + d16]
[BP + DI + d16]

[SI + d16]
[DI + d16]
[BP + d16]
[BX + d16]


d8 – 8-бітове знакове безпосереднє зміщення (наприклад: 22, 55h, -1, і ін...)
d16 - 16-бітове знакове безпосереднє зміщення (наприклад: 300, 5517h, -259, і ін...).

 Зміщення може бути записане як всередині квадратних дужок так і поза ними. В обох випадках асемблер генерує однаковий код.
Зміщення є знаковою величиною, тому воно може бути як додатним так і від’ємним.

Розглянемо приклад, нехай DS = 100, BX = 30, SI = 70 і вибраний наступний спосіб адресування [BX + SI] + 25. У даному випадку фізична адреса буде визначатися як 100 * 16 + 30 + 70 + 25 = 1725.
Зауважимо, що регістр DS за замовчуванням використовується для всіх способів адресування, представлених у табл..2.2, окрім тих, де задіяний регістр  BP, який
 використовується в парі з сегментним регістром SS.

Нижче наведений зручний для запам’ятовування узагальнений алгоритм формування різних способів адресування комірок пам’яті:   

Для правильного формування адрес необхідно з кожної колонки взяти по одному елементу, при цьому одна чи дві колонки з трьох можуть пропускатися. Як бачимо з наведеного алгоритму, регістри BX і BP ніколи не використовуються разом. Не використовуються разом і регістри SI та DI.

Нижче наведені приклади правильного формування адрес комірок запам’ятовуючих пристроїв:

[BX+5]     ,     [BX+SI]     ,     [DI+BX-4]

Величину в сегментному регістрі (CS, DS, SS, ES) називають сегментом, а величину в регістрі загального призначення (BX, SI, DI, BP) називають зміщенням. Наприклад, якщо регістр DS містить число 1234h, а регістр SI містить число 7890h, то адреса може бути представлена записом 1234:7890. Фізична адреса у цьому випадку буде визначатися як

1234h * 10h + 7890h = 19BD0h,

де 10h = 16.

Зауважимо, що добавляння нуля праворуч у шістнадцятковому числі означає множення числа на 16, наприклад, 7h = 7, а 70h = 112.

  1.  Постановка завдання

  1.  Використовуючи середовище емулятора МП і8086, створити і налагодити проект асемблерної програми відповідно до індивідуального завдання за нижченаведеним шаблоном програми:

ORG 100h ;директива, що вказує на початок розташування програми.

MOV R1, C1H ;запис числа C1H в регістр R1.

MOV R2, R1 ;копіювання вмісту регістра R1 в регістр R2.

MOV [C2H], R1;копіювання вмісту регістра R1 в комірку пам’яті за прямою адресою С2Н.

MOV R14, [C2H] ;копіювання вмісту комірки пам’яті, пряма адреса якої C2H, в регістр R14.

MOV BX, C3H ;запис числа C3H в регістр BX.

MOV [BX], C4H ;запис числа C4H в комірку пам’яті з непрямою адресою, що вказана в регістрі BX.

MOV R3, [BX] ;копіювання вмісту комірки пам’яті з непрямою адресою, що вказана в регістрі BX, в регістр R3.

MOV R4, C5H;запис числа C5H в регістр R4.

MOV [R4], R3;копіювання вмісту регістра R3 в комірку пам’яті з непрямою адресою, що вказана в регістрі R4.

MOV R5, [R4] ;копіювання вмісту комірки пам’яті з непрямою адресою, що вказана в регістрі R4, в регістр R5.

MOV R6, 0H ;очищення регістру R6.

MOV R7, R6 ;очищення регістру R7.

MOV R8, R6 ;очищення регістру R8.

MOV R9, R6 ;очищення регістру R9.

MOV R10, R6 ;очищення регістру R10.

MOV BX, C6H ;запис числа C6H в регістр BX.

MOV R11, C7H ;запис числа C7H в регістр R11.

MOV [BX+R11], C8H;запис числа C8H в комірку пам’яті з непрямою адресою, що задана парою регістрів BX і R11.

MOV AX, [BX+R11] ;копіювання вмісту  комірки пам’яті з непрямою адресою, що задана парою регістрів BX і R11.

MOV [BX+R11+C9H], C10H;запис числа C10H в комірку пам’яті з непрямою адресою, що задана парою регістрів BX, R11 і числовим зміщенням C9H.

MOV R12, [BX+R11+ C9H] ;копіювання вмісту  комірки пам’яті з непрямою адресою, що задана парою регістрів BX, R11 і числовим зміщенням C9H, в регістр R12.

MOV BX, OFFSET VAR1 ;завантаження в регістр BX адреси комірки пам’яті, в якій записана змінна VAR1.

MOV [BX], C11H ;присвоєння змінній VAR1 нового значення C11H.

MOV R13, VAR1 ;копіювання змінної VAR1 в регістр R13.

RET

VAR1 DW 0H ;опис змінної VAR1.

END ;закінчення програми.

  1.  Використовуючи середовище емулятора скласти лістинг програми (табл..1)

Таблиця 1 Лістинг програми

Зміщення

Код (Hex)

Мнемокод команди

К-сть байт

Коментар

100

B8

MOV AX, 0000h

3

Код операції – запис числа 0000h в регістр AX

101

00

Молодший байт числа

102

00

Старший байт числа

103

8B

MOV BX, AX

2

Код операції – копіювання вмісту одного регістру (AX) в інший регістр (BX)

104

D8

Вказує на регістри, між якими відбувається пересилання даних

  1.  Використовуючи покроковий режим роботи емулятора, проаналізувати хід виконання програми. Заповнити табл..2 результатів досліджень.

  1.  Варіанти індивідуальних завдань

  1.  Варіанти індивідуальних завдань до даної лабораторної роботи наведені у табл.. 3.

  1.  Методичні вказівки

  1.  Увійти в середовище емулятора Emu8086.
    1.  Створити новий проект типу “com” під власним іменем.
    2.  У створеному проекті набрати текст програми відповідно до п.2.1 і індивідуального завдання .
    3.  Скомпілювати створений проект.
    4.  Проаналізувати повідомлення про помилки, якщо такі мають місце. Записати повідомлення у звіт до лабораторної роботи. Пояснити причини виникнення помилок і вказати шляхи їх усунення.
    5.  Після успішного завершення процедури компілювання проекту перейти до аналізу роботи створеної програми відповідно до п.п.2.2 і 2.3, використовуючи покроковий режим роботи емулятора.
    6.  В процесі аналізу роботи програми контролювати і записувати зміни вмісту регістрів, що приймають участь в роботі програми.

  1.  Зміст звіту

  1.  Назва теми.
    1.  Мета роботи.
    2.  Індивідуальне завдання.
    3.  Лістинг програми відповідно до п.2.2 з відповідними коментарями.
    4.  Результати досліджень регістрів відповідно до п.2.3.
    5.  Відповіді на контрольні запитання.
    6.  Висновки, в яких дати характеристику основних способів адресування операндів в МП.

  1.  Контрольні запитання

  1.  Назвіть основні способи адресування операндів в мікропроцесорах.
    1.  Дайте характеристику прямого способу адресування операндів в МП.
    2.  Дайте характеристику прямого регістрового способу адресування операндів в МП.
    3.  Дайте характеристику безпосереднього способу адресування операндів в МП.
    4.  Дайте загальну характеристику непрямого регістрового адресування операндів в МП.
    5.  Дайте пояснення непрямого базового адресування операндів в МП.
    6.  Дайте пояснення непрямого індексного адресування операндів в МП.
    7.  Дайте пояснення непрямого базово-індексного адресування операндів в МП.


Таблиця 2 Результати досліджень

№ кроку

IP

Команда

CS

SS

SP

BP

SI

DI

DS

ES

BX

CX

AX

DX

Коментар

H

L

H

L

H

L

H

L

0

100

MOV AX, 0000H

0B56

0B56

FFFE

0000

0000

0000

0B56

0B56

00

00

00

17

00

00

00

00

очистка регістру AX

1

103

MOV BX, AX

0B56

0B56

FFFE

0000

0000

0000

0B56

0B56

00

00

00

17

00

00

00

00

очистка регістру BX

Таблиця 3 Індивідуальні завдання до лабораторної роботи №3

№ варіанту

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

C1h

C2h

C3h

C4h

C5h

C6h

C7h

C8h

C9h

C10h

C11h

1

AX

CX

BX

SI

DX

AX

BX

CX

DX

SI

DI

BX

AX

DX

A0B1

200

210

C2D3

220

230

02

E4F5

0A

1001

01

2

BX

DX

CX

SI

AX

BX

AX

CX

DX

SI

DI

CX

BX

AX

B1C2

240

250

D3E4

260

270

04

F5A0

08

2002

02

3

CX

AX

DX

SI

BX

CX

AX

BX

DX

SI

DI

DX

CX

BX

C2D3

280

290

E4F5

2A0

2B0

06

A0B1

06

3003

03

4

DX

BX

AX

SI

CX

DX

AX

BX

CX

SI

DI

AX

DX

CX

D3E4

2C0

2D0

F5A0

2E0

2F0

08

B1C2

04

4004

04

5

AX

CX

BX

DI

DX

AX

DX

CX

BX

DI

SI

BX

AX

DX

A0B1

300

310

C2D3

320

330

02

E4F5

0A

5005

05

6

BX

DX

CX

DI

AX

BX

DX

CX

AX

DI

SI

CX

BX

AX

B1C2

340

350

D3E4

360

370

04

F5A0

08

6006

06

7

CX

AX

DX

DI

BX

CX

DX

BX

AX

DI

SI

DX

CX

BX

C2D3

380

390

E4F5

3A0

3B0

06

A0B1

06

7007

07

8

DX

BX

AX

DI

CX

DX

CX

BX

AX

DI

SI

AX

DX

CX

D3E4

3C0

3D0

F5A0

3E0

3F0

08

B1C2

04

8008

08

9

AX

CX

BX

SI

DX

AX

CX

DX

BX

SI

DI

BX

AX

DX

A0B1

200

210

C2D3

220

230

02

E4F5

0A

9009

09

10

BX

DX

CX

SI

AX

BX

CX

DX

AX

SI

DI

CX

BX

AX

B1C2

240

250

D3E4

260

270

04

F5A0

08

A00A

0A

11

CX

AX

DX

SI

BX

CX

BX

DX

AX

SI

DI

DX

CX

BX

C2D3

280

290

E4F5

2A0

2B0

06

A0B1

06

B00B

0B

12

DX

BX

AX

SI

CX

DX

BX

CX

AX

SI

DI

AX

DX

CX

D3E4

2C0

2D0

F5A0

2E0

2F0

08

B1C2

04

C00C

0C

13

AX

CX

BX

DI

DX

AX

BX

CX

DX

DI

SI

BX

AX

DX

A0B1

300

310

C2D3

320

330

02

E4F5

0A

D00D

0D

14

BX

DX

CX

DI

AX

BX

AX

CX

DX

DI

SI

CX

BX

AX

B1C2

340

350

D3E4

360

370

04

F5A0

08

E00E

0E

15

CX

AX

DX

DI

BX

CX

AX

BX

DX

DI

SI

DX

CX

BX

C2D3

380

390

E4F5

3A0

3B0

06

A0B1

06

F00F

0F

16

DX

BX

AX

DI

CX

DX

AX

BX

CX

DI

SI

AX

DX

CX

D3E4

3C0

3D0

F5A0

3E0

3F0

08

B1C2

04

0110

10


  1.   Що розуміють під ефективною адресою операнду EA?
    1.  Дайте пояснення сегменту і зміщення.

  1.  Джерела інформації

  1.  Ю.І. Якименко, Т.О. Терещенко, Є.І. Сокол та ін. Мікропроцесорна техніка: Підручник. – Київ. – ІВЦ «Видавництво «Політехніка». – 2004. – 439 с.
    1.  Юров В., Хорошенко С. Assembler: учебный курс – СПб: Питер Ком, 1999. – 672 с.


База

(Base)

Зміщення

(Disp)

ндекс

(Index)

Множник

(Scale) 1, 2, 4, 8

*

Σ


 

А также другие работы, которые могут Вас заинтересовать

45179. История государственного управления 86.42 KB
  Со смертью бездетного царя Федора Ивановича пресеклась многовековая династия Рюриковичей. Избрание было абсолютно легитимным но сам процесс становления авторитета нового царя у знати приказных людей и широких слоев русского общества легитимация династии требовали значительного времени. Успешными оказались внешнеполитические акции царя отвоевание в 1590 1593 гг. Ответственность за бедствия обрушившиеся на страну в массовом сознании возлагались на царя и объяснялись Божьим наказанием за его неправедность.
45180. Эволюция Земских соборов 95 KB
  Эволюция Земских соборов. Земский собор Совет всей земли высшее сословно-представительское учреждение Российского царства с середины XVI до конца XVII века собрание представителей всех слоёв населения кроме крепостных крестьян для обсуждения политических экономических и административных вопросов. Земский собор существовал в условиях сословно-представительной монархии. Последним земским собором принято считать собрание состоявшееся в 1683 1684 годы по вопросу о вечном мире с Речью Посполитой.
45181. Правление Петра I 17.15 KB
  Были введены: Коллегия чужестранных иностранных дел заменила Посольский приказ то есть ведала внешней политикой. Военная коллегия Воинская комплектование вооружение снаряжение и обучение сухопутной армии. Адмиралтейств коллегия военно-морские дела флот. Вотчинная коллегия заменила Поместный приказ то есть ведала дворянским землевладением рассматривались земельные тяжбы сделки на куплю-продажу земли и крестьян сыск беглых.
45182. Эпоха дворцовых переворотов 16.01 KB
  После его смерти столкнулись представители родовой знати Голицыны Долгорукие признававшие наследником князя Петра и чиновная власть сделавшая ставку на Екатерину I и выигравшая эту борьбу с помощью гвардейских полков. императором согласно ее завещанию провозглашается внук Петра I Петр II а к Верховному тайному совету фактически к А. В ходе обсуждения возможных кандидатов на престол выбор пал на курляндскую герцогиню Анну Иоанновну дочь брата Петра I Ивана Алексеевича.
45183. Ресурсный метод определения стоимости строительства 16.17 KB
  Этот метод формирования сметной документации предусматривает калькулирование в текущих ценах трудовых материальных и технических ресурсов необходимых для реализации проектного решения. В качестве исходных данных для определения прямых затрат в локальных ресурсных сметных расчетах выделяют следующие показатели: Затраты труда рабочих строителей монтажников персонала по пусконаладке Средний разряд работы Затраты труда машинистов Строительные машины и механизмы в маш час Расход материальных ресурсов в принятых физических...
45184. Метод определения стоимости строительства на основе укрупненных сметных нормативов 15.52 KB
  Метод определения стоимости строительства на основе укрупненных сметных нормативов Этот метод предназначен для следующих целей: Определение стоимости строительства объектов различного функционального значения на ранних стадиях и инвестиционного процесса на предпроектной стадии на стадии техникоэкономических обоснований формирование социальноэкономической программы ориентация проектировщика разработавшего проектное предложение для проведения подряда торговой оценки стоимости предмета конкурса для решения других задач связанных с...
45185. Состав затрат сводного сметного расчета (наименование 12 глав ССР, непредвиденные расходы, НДС) 43 KB
  Состав затрат сводного сметного расчета наименование 12 глав ССР непредвиденные расходы НДС Глава 1 Подготовка территорий строительства Основные затраты: оформление земельного участка и разбивочные работы: затраты по отводу земельного участка выдача архитектурно-планировочного задания затраты по разбивке основных осей здания и сооружения: плата за землю при изъятии или выкупе земельного участка; плата за аренду земельного строительства период проектирования земельного строительства затраты на получение технических условий затраты...