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

*

Σ


 

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

52398. Хімія і чашка кави 80.5 KB
  Хімія і чашка кави Виконала викладач хімії спеціаліст вищої категорії Тимофеєва В. Позаурочний захід матеріал для уроків до тем: Органічні речовини в живій природі Органічні сполуки і здоровя людини Тема: Хімія і чашка кави МЕТА: навчальна: заохочувати учнів до вивчення предмету хімії розширити їх знання про органічні сполуки...
52401. Большой чайный вечер «Мы за чаем не скучаем» 195 KB
  Вечер за чайным столом подготовили и провели учащиеся 6 класса. На столах самовары чайные приборы. Сегодня у нас чайный вечер поэтому говорить мы будем только о чае.
52402. Мы за чаем не скучаем 50.5 KB
  Чай. Как он приятен вкусен крепок ароматен Цель: Познакомить учся с историей появления чая у нас; доказать что чай это прекрасный напиток бодрости который утоляет жажду снимает усталость придает бодрость поднимает настроение; развивать интерес к общению к истории; формировать социальные и коммуникативные компетентности; воспитывать здоровый образ жизни.Толстой Чай мой любимый напиток.Муслимов долгожитель120 Дружба и чай хороши когда они крепки и не очень сладки Ф.
52403. Чайные традиции народов мира (I часть) 67.5 KB
  Цель: познакомить с происхождением слова чай возникновением чайной церемонии; расширить знания о чайных традициях народов мира о целебных веществах чая; прививать интерес и эстетический подход к чайной церемонии; способствовать развитию здорового образа жизни. Литература и оборудование: буклет Чайные традиции народов мира; иллюстрации о чайной традиции в Японии Англии России Узбекистане Иране Тибете Америке китайского иероглифа чай; бейджики с надписями: Этимолог Хранитель легенд Целитель Этнограф Японии Этнограф...
52404. Исследование особенностей развития внимания школьников 367.5 KB
  Наша работа посвящена, прежде всего, описанию видов внимания, а также изучению особенностей свойств внимания у учащихся на уроках физической культуры. Цель: исследовать особенности развития внимания школьников. Объект: внимание как психический процесс. Предмет: специфика развития внимания школьников на уроках физической культуры.
52405. Сценарий воспитательного мероприятия на знание культуры Чехии 349 KB
  Речь идет о Золотом сердце Европы о Чехии. Никто Ведущий Наш 1 тур окончен прошу жюри огласить его результаты Жюри объявляет результаты 1 тура Музыка 2 тур Великие люди и Чехия Ведущий Наш 2 тур посвящен известным людям жившим когдато в Чехии. О ком идет речь Ольгерд Кейстут Свидригайло Витовт Ведущий Как вы видите Чехии есть чем гордиться.
52406. БЫТЬ ЧЕЛОВЕКОМ НА ЗЕМЛЕ 108.5 KB
  Ученик 1. Всем людям свойственно познавать самого себя и мыслить Гераклит Ученик 3. Декарт Ученик 4.Брехт Ученик 5.