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

*

Σ


 

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

41318. Изучение команд обращения к портам. Реализа-ция последовательного и параллельного обмена данными 149.5 KB
  Основные теоретические положения Организация ввода вывода в микропроцессорной системе Вводом выводом ВВ называется передача данных между ядром ЭВМ включающим в себя микропроцессор и основную память и внешними устройствами ВУ. Управляющие данные от процессора называемые также командными словами или приказами инициируют действия не связанные непосредственно с передачей данных например запуск устройства запрещение прерываний и т. Управляющие данные от внешних устройств называются словами состояния; они содержат информацию об...
41319. Изучение команд пересылки данных МК МС 68HC908GP32 1.63 MB
  Практически изучить команды пересылки данных МК МС 68HC908GP32 ПК ПО. Методические материалы и литература: Методические указания по выполнению практических работ; Иллюстративный материал: команды управления на языке SM для МП. При запуске МК процедура RЕSЕТ в РС автоматически загружается адрес первой команды выполняемой программы вектор начального запуска из двух...
41320. Изучение команд передачи управления 4.09 MB
  Практически изучить команды передачи управления . Методические материалы и литература: Методические указания по выполнению практических работ; Иллюстративный материал: команды операций над числами . При этом использовать описание работы лабораторный блок ПК иллюстрационный материал; В практической части отработать следующие подразделы: Рассмотреть команды передачи управления; Выполнить примеры и отразить их в отчёте; Проанализировать результаты выполненных примеров. Основные теоретические положения Способы...
41321. Изучение программной модели команд управления на языке SM для МП 1.1 MB
  Практически изучить программную модель команд управления на языке SM для МП. Методические материалы и литература: Методические указания по выполнению практических работ; Иллюстративный материал: команды управления на языке SM для МП. При этом исполнение текущей последовательности команд приостанавливается прерывается а вместо нее начинает выполняться другая последовательность соответствующая данному прерыванию.
41322. Изучение команд операций над числами 1.62 MB
  Основные теоретические положения Структура команд Любая команда ЭВМ обычно состоит из двух частей: операционной и адресной. Трехадресная команда легко расшифровывалась и была удобна в использовании но с ростом объемов ОЗУ ее длина становилась непомерно большой. Пример программы в командах процессора Перед вами короткая программа для процессора семейства 1п1е1 которая увеличивает число находящееся в регистре ах. Пример программы в командах процессора Несмотря на то что приведенная программа по длине явно больше чем...
41323. Изучение команд операций с битами 5.5 MB
  Каждая команда МК подгруппы РIС16F8Х представляет собой 14битовое слово разделенное на код операции ОРСОDЕ и поле для одного и более операндов которые могут участвовать или не участвовать в этой команде.1 Основные форматы команд МК Команды работы с битами Отличительной особенностью данной группы команд является то что они оперируют с однобитными операндами в качестве которых используются отдельные биты регистров МК. отрицание логическое НЕ логическая операция над одним операндом результатом которой является...
41324. Исследование состава и возможностей ИС РПО для семейства МК АVR 3.63 MB
  Основные теоретические положения Программная среда АVR Studio Фирма Аtmel разработчик микроконтроллеров АVR очень хорошо позаботилась о сопровождении своей продукции. Для написания программ их отладки трансляции и прошивки в память микроконтроллера фирма разработала специализированную среду разработчика под названием АVR Studio Программная среда АVR Studio это мощный современный про граммный продукт позволяющий производить все этапы разработки программ для любых микрокон троллеров серии АVR ....
41325. Работа с ИС РПО для семейства МК АVR 5.99 MB
  Если уже есть файл с текстом программы на Ассемблере и просто необходимо создать проект а затем подключить туда готовый программный файл снимите соответствующую галочку. Оно должно содержать имя файла куда будет записываться текст программы. При выборе этого элемента диалог создания проекта будет автоматически запускаться каждый раз при запуске программы VR Studio.ps; файл куда будет помещен текст программы на Ассемблере Prog1.
41326. Лабораторная работа Определение скорости полета пули методом баллистического маятника 461 KB
  Приборы: пули свинцовые 5 штук; пневматическое ружье; баллистический маятник; аналитические весы 0001 г; технические весы 1 г; линейка 1 см; секундомер 01 с. где d – расстояние от зеркальца до шкалы; n –отклонение “зайчика†по шкале; – расстояние от оси вращения до точки удара пули; l – расстояние от оси вращения до центра тяжести; h – высота поднятия цента тяжести;  угол отклонения; масса пули m.