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

*

Σ


 

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

24106. Проблема происхождения жизни: эволюционизм и креационизм 15.96 KB
  Эволюционизм и креационизм в науке и религии В рамках познавательных систем использование терминов и понятий требует их строгого предварительного определения. В науке имеют место модели рассматривающие количественные изменения. Поэтому любые рассуждения о развитии материи в эволюционных процессах от низших форм к высшим в науке некорректны поскольку они относятся к рассмотрению качественному. В науке низшее должно пониматься буквально и относится к одному конкретному параметру: низкая температура пониженное давление низкая...
24107. Ценность жизни и основные проблемы биоэтики 14.38 KB
  Биоэтика междисциплинарная область знания охватывающая широкий круг философских и этических проблем возникающих в связи с бурным развитием медицины биологических наук и использования в здравоохранении высоких технологий. Термин Биоэтика был предложен в 1971 году Ван Поттером в книге Биоэтика: мост в будущее для обозначения особого варианта экологической этики рассматривающей возможности выживания человечества в условиях техногенной цивилизации однако впоследствии значение термина изменилось. Биоэтика формирует обоснование права...
24108. Проблема познания в философии. Структура процесса познания. Чувственное и рациональное в процессе познания мира. Интуиция 15.88 KB
  Проблема познания в философии. Структура процесса познания. Чувственное и рациональное в процессе познания мира. Интуиция 1основные положения теории познания: 1.
24109. Сознание, его структура. Сознание и самосознание. Сознание и бессознательное 14.25 KB
  Сознание его структура. Сознание и самосознание. Сознание и бессознательное. Сознание это высшая интегрированная форма психики которая складывается под воздействием общественноисторических условий в трудовой деятельности человека и его общении с помощью языка с другими людьми.
24110. Проблема истины. Современные трактовки понятия истина. Формы истины. Проблема критериев научной истины 94.28 KB
  Формы истины. Проблема критериев научной истины. Проблема истины в философии является центральной во всей теории познания.
24111. Особенности научного познания. Роль науки в функционировании и развитии общества 14.9 KB
  Наука особый вид познавательной деятельности людей направленный на выработку системы объективноистинного знания о природной и социальной действительности и о самом человеке. Современная наука это: 1. Наука имеет дело с объектами реальности которая не сводится к объектам обыденного опыта. Современная наука выполняет функции: 1.
24112. Естественнонаучное, техническое, гуманитарное знание 30.67 KB
  Естественнонаучное техническое гуманитарное знание. Техническое знание включает в себя от специализированных рецептурнотехнических до теоретических научнотехнических и системотехнических знаний. Современная техника и прежде всего техническое знание неразрывно связаны с развитием науки. техническое знание как конечный продукт познавательной деятельности определяет характер познавательного процесса выступая в качестве средства социальнотехнического проектирования.
24113. Социальная реальность и ее характеристики 16.73 KB
  Социальная реальность и ее характеристики. Социальная реальность это реальность в той или иной степени организованная упорядоченная и структурированная. Социальная реальность это реальность динамическая т. Социальная реальность это реальность стратифицированная.
24114. Общество как система. Сферы общественной жизни 17.51 KB
  Общество как система. Собственно философское значение этого термина таково: общество это обособившаяся от природы часть материального мира представляющая собой исторически развивающуюся форму жизнедеятельности людей. В истории социологии и культурологии чаще используется более узкое понятие общества: общество это определённый этап человеческой истории родовое общество общество капитализма или конкретный социальный организм французское общество общество США. Так древнекитайская мысль традиционно смотрела на общество сквозь призму...