Запись и выполнение простых программ.

ЛАБОРАТОРНАЯ РАБОТА №2

 

 

ЦЕЛЬ РАБОТЫ:

получить навыки в составлении программ на языке ассемблера и исследовать выполнение линейных программ.

Любая программа записывается в микропроцессоре в последовательных ячейках памяти. В нашей программе пользователь может расположить программу в любом месте адресного пространства 0000-0FFF, исключая адреса 0B00-0BFF – область стека программы монитор.

Общий алгоритм подготовки программы приведен ниже:

1. Текстовое задание решаемой задачи анализируется программистом.

2. По результатам анализа составляется блок-схема алгоритма решения поставленной задачи.

3. Используя блок схему программист записывает программу решения задачи на языке ассемблера используя мнемоники команд конкретного микропроцессора.

4. На основе листинга программы из пункта 3 составляется программа в машинных кодах.

5. Выполняется ввод программы в микропроцессор и производится ее отладка.

6. Запускается программа на выполнение.

Команды ассемблера микропроцессора К580ИК80 могут иметь форматы:

  • 1 байт,
  • 2 байта,
  • 3 байта.

В зависимости от формата эти команды занимают в памяти ЭВМ соответственно: одну, две или три ячейки памяти .

    1. Одно машинное слово (один байт) занимают команды:

· перемещения,

· арифметические и логические команды

· команды останова.

    1. Два машинных слова занимают команды:
      • ввода вывода
      • команды с непосредственной адресацией.
    2. Три машинных слова занимают:

· команды загрузки и запоминания данных,

· команды безусловных переходов.

В любых командах сначала записывается код операции, который всегда занимает 1 байт.

Если в команде задаются данные, то:

  • для записи восьмиразрядных данных требуется 1 байт,
  • для записи шестнадцатиразрядных – 2 байта,
  • при этом следует помнить, что перед записью данных всегда записывается код операции.

Форматы различных команд приведены на рис. 2.1

 

КОМАНДЫ МИКРОПРОЦЕССОРА

 

1 Байтные 2 Байтные 3 Байтные

           
     


байт1 коп прием ист байт1 коп байт1 коп

       
   


байт2 данные байт2 мл. байт адр.

 
 


байт3 стар. байт адр.

Рисунок 2.1 Формат команд

 

Рассмотрим процесс программирования на примере

 

ПРИМЕР

Извлечь число из ячейки памяти с адресом 0А00 инвертировать его и записать в ячейку памяти с адресом 0А01.

Программу составить в мнемокодах и машинных кодах.

 

Запись программы в мнемокодах приведена в таблице 2.1. В графе «комментарий» в текстовом режиме описывается что именно выполняется в конкретной строке программы.

В таблице 2.1 представлен так называемый листинг программы на языке АССЕМБЛЕР для процессора К580ИК80 соответствующий заданию примера.

 

Таблица 2.1.

Метка Мнемокод (команда) Операнд(адрес яч. пам.) Комментарий

LDA 0А00H получить число из адр. 0В00

СМА инвертировать число.

STA 0А01Н записать резул. по адр. 0В01

RST 7 прервать выполнение прогр.

 

Для записи программы в память микро – ЭВМ и последующего выполнения необходимо перевести мнемокоды инструкций программы в машинные коды и выполнить распределение памяти. Для этого необходимо воспользоваться приложениями 1 и 2.

Необходимо отметить что программист сам выбирает область памяти цифровой системы в которой он будет размещать программу, опираясь при этом на карту памяти цифровой системы. В нашем случае первая команда программы размещена в ячейке памяти 0800.

Запись программы в машинных кодах, состоящую из столбцов «Адрес» и «Код» таблицы 2.2 принято называть листингом программы в машинных кодах.

Запись программы 2.1 в машинных кодах приведена в таблице 2.2.

 

Таблица 2.2

Адрес Код Метка Мнемокод Операнд Комментарий:

0800 3А LDA 0B00 H код команды

0801 00 мл. байт адреса

0802 0В ст. байт адреса

0803 2F CMA код команды

0804 32 STA 0B01 H код команды

0805 01 мл. байт адреса

0806 0В ст. байт адреса

0807 FF RST 7 код команды

 

При записи программ все числа представляются в шестнадцатеричной системе счисления, а мнемокоды команд по приложению 2 переводятся в шестнадцатиричные коды операций (КОП).

Адреса ячеек памяти распределяются в соответствии с форматом каждой конкретной команды согласно рисунку 2.1.

В память вводятся данные только второго столбца таблицы 2.1.(столбец «код») согласно адресам первого столбца таблицы (столбец «Адрес»), используя команду монитора «Модификация содержимого ОЗУ».

 

ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ

 

1. Изучить формы записи программы 2.1 на языке ассемблера, ее ввод в микропроцессор и выполнение.

2. Исследовать работу эмулятора при пошаговом выполнении программы 2.1 в покомандном режиме.

3. Изучить работу программы 2.1 при замене команды СМА последовательно на команды

INR A, DCR A, ANA A, ORA A, XRA A

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

 

1.1 Запустить программу «Монитор».

1.2 Ввести программу 2.1 в ОЗУ с адреса 0800.

1.3 Записать по адресу 0А00 заданное число, например А1.

1.4 Запустить программу на выполнение с адреса 0800

1.5 Проверить результаты выполнения программы 2.1. Для этого извлечь число из ячейки памяти с адресом 0801. Результат занести в таблицу 2.4.

2.1 Изменить число по адресу 0А00

2.2 Исследовать работу программы 2.1 в покомандном режиме. Результаты записать в таблицу 2.3

2.3 Проверить правильность работы программы 2.1 . Для этого извлечь число из ячейки памяти с адресом 0А01. Результат записать в таблицу 2.4.

3.1 Составить программы, аналогичные программе 2.1, используя вместо команды CMA команды INR A, DCR A, ANA A, ORA A, XRA A, CMP A. Твердо усвоить и уметь объяснить работу этих программ.

3.2 Записать по адресу 0А00 заданное число, например А1

3.3 Записать составленные программы в ОЗУ и осуществить их выполнение. Результаты работы указанных программ записать в таблицу 2.4.

3.4 Выключить компьютер.

 

Таблица 2.3

№прог. старший байт адреса побитно младший байт адреса побитно Байт данных Флаги состояния
                                                               
                                                                 
                                                                 
                                                                 
                                                                 
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

Таблица 2.4

№ программы Команда по адр. 0803 Число по адр. 0B00 Число по адр. 0B01
INR A    
DCR A    
ANA A    
ORA A    
XRA A    
CMP A    

 

ОТЧЕТ по работе должен содержать: тексты всех программ в машинных кодах, а для программ 2.1 и в мнемокодах; заполненные таблицы 2.3 и 2.4; описания выполняемых функций командами: INR A, DCR A, ANA A, ORA A, XRA A, CMP A.

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Какие форматы команд ассемблера К580 вы знаете ?

2. Как располагаются в ячейках памяти 2-х и 3-х байтные команды ?

3. На какие группы делятся команды микропроцессора К580ИК80?

4. Приведите примеры команд пересылки, логических и арифметических команд.

5. Поясните функции, выполняемые командами CMA, INR A, DCR A.

6. Поясните функции, выполняемые командами ANA A, ORA A, XRA A.