Задание 1. Запись в память микропроцессора простейшей программы

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

 ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ №2

«Исследование выполнения простых программ в эмуляторе

«ЕMU КР580»»

для студентов специальности 09.02.01 Компьютерные системы и комплексы

 

 

2016

Цель работы:

1. Изучение работы команд микропроцессора КР580ВМ80А в пошаговом режиме

2. Знакомство с форматом команд и этапами их выполнения

3. Изучение команд пересылки данных и арифметических команд

4. Исследование простейших программ

 

Теоретическая часть

 

С помощью программного счетчика микропроцессора на шину адреса системы выдается адрес выполняемой команды. Считанная из памяти по этому адресу команда (ее код) поступает на шину данных, затем считывается микропроцессором, декодируется и выполняется. В программном счетчике (счетчике команд) автоматически формируется адрес следующей команды. После окончания исполнения текущей команды на шину адреса поступает адрес очередной команды, и процедура повторяется вновь.

Под управлением команд пересылки микропроцессор может выполнять обмен между внутренними регистрами процессора, между внутренними регистрами и памятью микро-ЭВМ.

Список команд пересылки микропроцессора КР580ИК80А включает следующие команды (табл. 1).

 

Таблица 1-Команды пересылки данных

 

 

 

,Формат байт

Число тактов

   

Мнемоника

Описание

Флаги  

S Z AC P C

 
 

 

 
 

 

   
 

 

   

MOV r1, r2

Пересылка данных из реги-

1

5

-----

 

стра r2 в регистр r1: r1←r2

 

MOV M, r

Пересылка данных из реги-

1

7

-----

 

стра r в регистр М: M ← r

 
MOV r, M

Пересылка данных из реги-

1 7 -----  
 

стра М в регистр r: r ← M

       

MVI r, Д8

Запись в регистр r одного

2

7

-----

 

байта данных: r←Д8

 
         

MVI M, Д8

Запись в регистр М одного

2

10

-----

 

байта данных: М←Д8

 
 

В аккумулятор загружается

       
LDA A16

число из адреса А16:

3 13 -----  
 

А←(А16)

       
  Выгрузка

содержимого

ак-        
STA A16

кумулятора по указанному

3 13 -----  
 

адресу: (А16)←А

 

       
                 

 

 

Загрузка в аккумулятор чис-

       
 

ла из ячейки памяти с адре-

       
LDAX rp

сом, указанным в регистро-

1 7 -----  
 

вой паре (B-C или D-E):

 

       
 

 

А←(rp)

 

       
 

Выгрузка

из аккумулятора

       
STAX rp

по адресу в регистровой па-

1 7 -----  
 

ре (B-С или D-Е): (rp)←A

         
 

Непосредственная запись в

       

LXI rp, D16

регистровую пару (B, D, H,

3

10

-----

 

SP) двухбайтного числа:

 

 
 

(rp)←D16

 

       
 

Загрузка пары регистров H-

       
 

L из двух соседних ячеек

       
LHLD А16

памяти, начиная с адреса

3 10 -----  
 

указанного в команде:

 

       
 

L←(A16); H←(A16+1)

 

       
  Обратно

предыдущей

 

       
SHLD A16 команде

 

 

3 16 -----  
 

(A16)←L; (A16+1)←H

 

       
 

Обмен данными между ре-

       
XCHG

гистровыми парами H-L и

1 4 -----  
 

D-E: H↔D, L↔E

 

       
 

Обмен между регистровой

       
 

парой H-L и двумя верхни-

       

XTHL

ми ячейками стека, при этом

1

18

-----

 

содержимое указателя стека

 
 

не меняется:

 

       
 

L↔(SP); H↔(SP+1)

 

       
 

Занесение

содержимого

па-

       
SPHL

ры регистров H-L в указа-

1 5 -----  
 

тель стека: SP←HL

 

       
 

Занесение в стек содержи-

       
 

мого пары регистров (B, D,

       
PUSH rp

H). Содержимое указателя

1 11 -----  
 

стека уменьшается на 2.

 

       
 

(SP) ←мл. r; (SP+1) ←ст. r.

       
 

Извлечение

пары

чисел в

       
 

регистровую

пару

из стека

       
POP rp

(обратно предыдущей ко-

1 10 -----  
 

манде):

 

 

 

       
 

мл.r←(SP); ст.r←(SP+1);

       
 

SP=SP+2

 

       
 

Копирование в стек аккуму-

       
PUSH PSW

лятора и регистра призна-

1 11 -----  
 

ков: (SP) ←F; (SP+1) ←A

       
 

Выдача из стека данных в

       
POP PSW

аккумулятор и регистр при-

1 10 +++++  
 

знаков

 

 

 

       
 

F←(SP); A←(SP+1)

       
                                       

 

 

Ввод в аккумулятор данных

     
  из внешнего

устройства,

     
IN port

подключенного к указанно-

2 10 -----
 

му в команде порту:

       
 

A←(port)

       
 

Выгрузка 1-го байта из ак-

     
OUT port

кумулятора

в

соответст-

2 10 -----
 

вующий порт: (port)←A

     
                 

 

В списке команд пересылки под r, r1 и r2 понимается содержимое регистров процессора A, B, C, D, E, H, L. Под M – содержимое ячейки памяти (ОЗУ или ПЗУ), адрес которой предварительно записан в регистровой паре HL. Под D8 – байт данных, непосредственно содержащийся в команде. Под D16 – двухбайтовое число, непосредственно содержащееся в команде. Под (rp) – содержимое регистровых пар. Под А16 – двухбайтовый адрес, непосредственно записанный в команде. Под (А16) – содержимое ячейки памяти (ОЗУ или ПЗУ), адрес которой указан в команде.

Практическая часть

 

Часть 1

Составить простейшую программу для вычисления формулы:

(Х – 200 b + Y) ® Z,

где «X», «Y» – содержимое ячеек памяти с адресами «0B00 h» и «0B01 h» соответственно, где располагаются первый и второй операнд; «200 b» – заданная константа в десятичной системе исчисления; «Z» – указывает на местоположение результата, а именно на ячейку памяти с адресом «0В02 h».

В соответствии с формулой требуется загрузить из адреса «0В00 h» число «X», вычесть из него константу 200 и сложить с числом «Y», загруженным из ячейки памяти «0В01h». Результат необходимо сохранить в памяти по адресу «0В02 h».

Программа представлена в виде таблицы 1, при этом условно считается за начало расположения программного кода адрес «0800 h».

Весь процесс разбивается на циклы, обозначаемые M1, M2, M3, M4, M5. Выполнение каждой команды занимает от одного до пяти машинных циклов. Машинный цикл требуется всякий раз, когда микропроцессор обращается к памяти или устройствам ввода-вывода (портам).Если команда занимает несколько байтов, то для выбора каждого байта требуется по одному машинному циклу.

 

 

Таблица 1

Программа 1.1

 

№ этапа Адрес, h Мнемокод Число байт в команде Машинный код, h Комментарий

1

0800

LDA 0B00 h

3

3A Назначение команды LDA: содержимое ЯП, адрес которой указан во втором и третьем байтах команды загрузить в регистр «А».
0801 00 Младший байт адреса.
0802 0B Старший байт адреса.

2

0803

SUI C8 h

2

D6 Назначение команды SUI: из содержимого «А» отнимается второй байт команды.
0804 C8 Второй байт команды (операнд)

3

0805

LXI H,0B01 h

3

21 Назначение команды LXI: Непосредственная загрузка пары регистров H»,«L».
0806 01 Младший байт адреса, который пересылается в регистр «L».
0807 0B Старший байт адреса, который пересылается в регистр «H».
4 0808 ADD M 1 86 Назначение команды ADD: содержимое ЯП, адрес которой записан в регистрах «H»,»L» складывается с содержимым «А»; результат в «А».

5

0809

STA 0B02 h

3

32 Назначение команды STA: содержимое «А» пересылается в ЯП, адрес которой указан во втором и третьем байтах команды.
080A 02 Младший байт адреса.
080B 0B Старший байт адреса.
- 080C HLT 1 76 Назначение команды HLT: Останов.

 

Команда «LDA 0B00h» (см. выше) занимает три ячейки памяти «0800h», «0801h», «0802h», в которых хранятся коды «3Аh», «00h», «0Вh».

 

Выполнение команды начинается, когда на программном счетчике имеется число «0800h». В первом машинном цикле по адресу «0800h» выбирается первый байт команды «3А», передается в микропроцессор, где производится дешифрация этого кода. Во втором машинном цикле из следующей ячейки «0801h» выбирается число «00h» и записывается в регистр «L». В третьем машинном цикле из ячейки «0802h» выбирается число «0Вh» и записывается в регистр «Н». Таким образом, в паре регистров «Н», «L» сформировался адрес ЯП, содержимое которой по команде «3Аh» необходимо передать в аккумулятор. Поэтому в четвертом машинном цикле число из ячейки «0В00h» передается в аккумулятор. На этом выполнение команды заканчивается и к содержимому счетчика прибавляется единица, то есть микропроцессор переходит к выполнению следующей команды. Первым машинным циклом при извлечении любой команды является цикл M1 – выбор первого байта команды. Самые длинные по времени исполнения команды выполняются в пять циклов.

Порядок выполнения работы:

Задание 1. Запись в память микропроцессора простейшей программы.

Занести программу 1.1 (таблица 1) в память микропроцессорной системы. Записать по адресам «0В00h» и «0В01h» числа по своему варианту, согласно таблице 2 (номер варианта выдается преподавателем)

 

Таблица 2 -Варианты чисел для программы 1.1

 

Адреса

ячеек, h

Значения чисел по вариантам, h

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0B00 05 0E 5A 12 B5 B0 25 A0 EE 34 55 D5 12 6F 1D
0B01 06 0F 6A 11 B6 A0 26 99 FF 35 54 D6 13 7F 1E

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: