15277

Вивчити програмну модель мікропроцесора і8086

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

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

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

Украинкский

2013-06-11

153 KB

8 чел.

PAGE  5

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

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

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

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

  1.  Програмна модель мікропроцесора і8086

Програмною моделлю МП називається сукупність програмно доступних регістрів, тобто тих регістрів вміст яких можна зчитати або змінити за допомогою команд. Програмну  модель МП і8086 складають регістри загального призначення (РЗП), сегментні регістри, вказівник команд і регістр прапорців. Програмна модель МП і8086 представлена на рис. 1.

Рисунок 1 - Програмна модель МП і8086

РЗП поділяються на регістри даних і регістри-вказівники. До регістрів даних відносяться 16-розхрядні регістри: AX, BX, CX, DX. Кожен із цих регістрів складається з двох   8-розрядних  регістрів,  які  можна незалежно      адресувати  іменами AH, BH, CH, DH (старші байти – Hihg) та AL, BL, CL, DL (молодші байти – Low). Регістри-вказівники SP (Stack pointer – вказівник стеку), BP (Base pointer – базовий регістр), SI (Source Index – індекс джерела), DI (Destination Index – індекс призначення) є 16-розрядними. Усі РЗП можна використати для зберігання даних, але в деяких командах допускається використання певного регістра за замовчуванням: AX – при множенні, діленні, введенні та виведенні слів;   AL -  при множенні, діленні, введенні та виведенні байтів, десятковій корекції, перетворенні байтів; AH – при множенні і діленні байтів; BX – при трансляції; CX – як лічильник циклів і вказівник довжини рядків у рядкових командах; CL – для зберігання зміщення з указанням змінної; DX – при множенні та діленні слів, при введенні та виведенні з непрямою адресацією; SP – при операціях із стеком; SI, DI – при рядкових операціях. На відміну від 8-розрядних мікропроцесорів регістр SP зберігає зміщення останньої зайнятої комірки стека.

Оперативна пам'ять МП зазвичай логічно поділяється на області коду (програмної пам’яті), даних і стеку. Для адресування до області коду використовується сегментний регістр CS, який визначає початкову адресу сегменту Seg, і вказівник команд IP, який містить зміщення EA. Для адресування до області пам’яті стеку при виконанні стекових операцій використовуються відповідно сегментний регістр SS і вказівник стеку SP. При звертаннях до області даних використовуються сегментні регістри DS і ES, які задають початкову адресу сегменту, а розташування адреси зміщення залежить від конкретної операції.

  1.  Порядок роботи з регістрами МП

Порядок роботи з регістрами МП розглянемо на прикладі команди MOV.

Команда MOV dest, sourse:

  •  копіює другий операнд (source – джерело) у перший операнд (destination - призначення);
  •  Операндом-джерелом може бути безпосереднє число, регістр загального призначення або комірка запам’ятовуючого пристрою;
  •  Операндом-призначення може бути регістр загального призначення або комірка запам’ятовуючого пристрою;
  •  Обидва операнди повинні мати однаковий розмір – байт або слово.

Нижче наведені формати застосування команди MOV:

MOV REG, memory
MOV memory, REG
MOV REG, REG
MOV memory, immediate
MOV REG, immediate ,

де:

  •  REG (регістр загального призначення): AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP;
  •  memory (адреса комірки пам’яті): [BX], [BX+SI+7], змінна, і ін.;
  •  immediate (безпосереднє число): 5, -24, 3Fh, 10001101b, і ін..

Для роботи з сегментними регістрами команда MOV підтримує наступні формати:

MOV SREG, memory
MOV memory, SREG
MOV REG, SREG
MOV SREG, REG,

де:

  •  SREG (сегментний регістр): DS, ES, SS, і тільки як другий операнд: CS;
  •  REG (регістр загального призначення): AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP;
  •  memory (адреса комірки пам’яті): [BX], [BX+SI+7], змінна, і ін..

При роботі з регістрами МП необхідно памятати  наступні правила:

  1.  В сегментні регістри не можуть завантажуватися безпосередньо числа;
  2.  Значення регістрів CS і IP не можуть встановлюватися командою MOV чи якоюсь іншою командою.

Нижче наведена коротка програма, що ілюструє використання команди MOV:

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

MOV AX, 0B800h     ; пересилає в регістр AX шістнадцяткове число B800h.

MOV DS, AX         ; копіює вміст регістру AX в сегментний регістр DS.

MOV CL, 'A'        ; заносить в регістрt CL код символу 'A' ASCII 41h.

MOV CH, 1101_1111b ; пересилає в регістр CH двійкове число 1101_1111b.

MOV BX, 15Eh       ; заносить в регістр BX число 15Eh.

MOV [BX], CX       ; копіює вміст регістру CX в комірку памяті B800:015E

RET                ; повернення до операційної системи.

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

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

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

MOV R1, 00h   ;очистка регістру R1.

MOV R2, R1   ;очистка регістру R2.

MOV R3, R1   ;очистка регістру R3.

MOV R4, R1  ;очистка регістру R4.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MOV DS, CH4h    ;помилка  

MOV CL, 'X'         ;занесення в регістр CL коду заданого символу 'X' ASCII.

MOV CH, 11011111b ;запис в регістр CH двійкового числа 11011111b.

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

MOV [BX], CX       ;копіювання вмісту регістра CX в комірку памяті CH1h:CH3h

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

 Примітка: в рядку з коментарем «помилка» приведений приклад неправильного застосування команди MOV. При компілюванні програми буде дане повідомлення про помилку, зміст якого необхідно занотувати, а потім виправити помилку, використовуючи команди, що знаходяться в стрічках, відокремлених  знаком «;». При цьому рядок програми, що містить помилку, видалити або відокремити знаком «;».

  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.  


Таблиця 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 Індивідуальні завдання до лабораторної роботи №2

№ варіанту

R1

R2

R3

R4

R5

R6

R7

R8

R9

R10

R11

R12

R13

R14

R15

R16

R17

R18

R19

R20

C1h

C2h

C3h

C4h

C5h

X

1

AX

BX

CX

DX

AL

AH

BH

BX

AX

BX

CX

SI

SS

DX

DI

AX

SI

DS

BX

CX

A1

A000

BF00

B800

0

A

2

BX

AX

CX

DX

BL

BH

CH

CX

BX

AX

CX

SI

DS

DX

DI

BX

SI

ES

AX

CX

B2

A100

BE00

B810

10

B

3

CX

AX

BX

DX

CL

CH

DH

DX

CX

AX

BX

SI

ES

DX

DI

CX

SI

SS

AX

BX

C3

A200

BD00

B820

20

C

4

DX

AX

BX

CX

DL

DH

AH

AX

DX

AX

BX

SI

SS

CX

DI

DX

SI

ES

AX

BX

D4

A300

BC00

B830

30

D

5

AX

DX

CX

BX

AH

AL

BL

BX

AX

DX

CX

DI

DS

BX

SI

AX

DI

SS

DX

CX

E5

A400

BB00

B800

40

E

6

BX

DX

CX

AX

BH

BL

CL

CX

BX

DX

CX

DI

ES

AX

SI

BX

DI

DS

DX

CX

F6

A500

BA00

B810

50

F

7

CX

DX

BX

AX

CH

CL

DL

DX

CX

DX

BX

DI

SS

AX

SI

CX

DI

DS

DX

BX

A7

A600

B900

B820

60

G

8

DX

CX

BX

AX

DH

DL

AL

AX

DX

CX

BX

DI

DS

AX

SI

DX

DI

ES

CX

BX

B8

A700

B800

B830

70

H

9

AX

CX

BX

DX

AL

AH

DH

DX

AX

CX

BX

SI

ES

DX

DI

AX

SI

SS

CX

BX

C9

A800

B700

B800

80

I

10

BX

CX

AX

DX

BL

BH

AH

AX

BX

CX

AX

SI

SS

DX

DI

BX

SI

ES

CX

AX

DA

A900

B600

B810

90

J

11

CX

BX

AX

DX

CL

CH

BH

BX

CX

BX

AX

SI

DS

DX

DI

CX

SI

SS

BX

AX

EB

AA00

B500

B820

100

K

12

DX

BX

AX

CX

DL

DH

CH

CX

DX

BX

AX

SI

ES

CX

DI

DX

SI

DS

BX

AX

FC

AB00

B400

B830

110

L

13

AX

BX

DX

CX

AH

AL

DL

DX

AX

BX

DX

DI

SS

CX

SI

AX

DI

DS

BX

DX

AD

AC00

B300

B800

120

M

14

BX

AX

DX

CX

BH

BL

AL

AX

BX

AX

DX

DI

DS

CX

SI

BX

DI

ES

AX

DX

BE

AD00

B200

B810

130

N

15

CX

AX

DX

BX

CH

CL

BL

BX

CX

AX

DX

DI

ES

BX

SI

CX

DI

SS

AX

DX

CD

AE00

B100

B820

140

O

16

DX

AX

CX

BX

DH

DL

CL

CX

DX

AX

CX

DI

SS

BX

SI

DX

DI

ES

AX

CX

D0

AF00

B000

B830

150

P


  1.  Яке призначення вказівника команд ІР?
    1.  Чим відрізняється сегментний регістр CS від інших сегментних регістрів?

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

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

PAGE  2


PAGE  3


 

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

56179. ВИГОТОВЛЕННЯ ІГРАШОК-СУВЕНІРІВ “СПОРТСМЕНИ“ 56.5 KB
  Із поролону вирізати деталі: тулуб разом із головою та ноги. Із коричневого драпу вирізати деталі тулуба й ніг. Зєднати деталі тулуба із тканини й поролону зметати й зшити косим стібком через край. Зєднати деталі із тканини й поролону зметати й зшити.
56181. Німецька мова — одна з найкращих європейських мов 145.5 KB
  Stimmt. Ich bin damit einverstanden. Auβerdem werden wir H?rverstehen?ben, Sprachreaktion entwickeln, die Liebe zur deutschen Sprache beitragen. Jetzt beginnen wir mit der Wortschatzarbeit.
56184. Справочник юного натуралиста 977.5 KB
  Сельским жителям лесостепных районов УССР известна эта небольшая серая птица с коричневой подковкой на груди. Дятел Дятлы тоже принадлежат к лазающим птицам в полном смысле этого слова и при лазанье по коре деревьев очень ловко умеет пользоваться парным расположением своих пальцев.
56185. ЧЕЛОВЕК И ОКРУЖАЮЩАЯ СРЕДА 190.5 KB
  Развивать интуицию память речь умение логически мыслить делать выводы. Вечное как мир: с чего начинается Родина маминой песни родительского дома или рисунка букваре Изменения Положительные Отрицательные Воды Почвы Население Атмосфера...
56186. The Structure and Functions of British Parliament 103.5 KB
  The British Parliament works in a large building called the Palace of Westminster (popularly known as the Houses of Parliament). This contains offices, committee rooms, restaurants, bars, libraries and even some places of residence.