Информатика, программирование: Программирование арифметических задач на Ассемблере для микропроцессора К580, Лабораторная работа

Дон ГТУ

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

АКГ-05

АУТПТЭК

Программирование арифметических задач на Ассемблере для микропроцессора К580


Цель лабораторной работы - рассмотреть особенности выполнения простейших арифметических операций над целыми числами без знака на микропроцессорных установках МИКРОЛАБ КР580ИК80 и ЭЛЕКТРОНИКА-580, познакомиться с программированием в машинных кодах и мнемокодах, научиться пользоваться средствами управления и клавиатурой устройств.


1 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 

1.1 Представление чисел

При программировании микро ЭВМ на МП БИС КР580ИК80 необходимо пользоваться способом представления чисел с фиксированной десятичной точкой. При этом знак числа и количество разрядов, занятых дробной частью числа, могут быть учтены при подготовке данных или программным путем.

Следует помнить, что коды команд, адреса и данные вводятся в микро ЭВМ числами в шестнадцатеричной системе счисления. Некоторой особенностью в лабораторных установках МИКРОЛАБ и ЭЛЕКТРОНИКА-580 является отображение чисел на дисплее (табл. I).

Для МП БИС КР580ИК80 можно представлять данные в виде двоично-десятичного числа, при этом каждый байт рассматривается как две тетрады (два полубайта), а каждая тетрада кодирует одну десятичную цифру.

Такое представление позволяет закодировать в одном байте десятичные числа от 0 до 99. Обратите внимание на то, что, используя для представления шестнадцатеричную систему счисления, в одном байте можно закодировать число от 0 до FF , что соответствует числам десятичной системы от 0 до 255.

Эти примеры показывают, что такое представление чисел более рационально: используется меньший объем памяти, сокращается программа.

Таблица 1- Представление чисел в различных системах счисления и отображение их на дисплее

Десятичная

система

счисления

Восьмеричная

система

счисления

Двоичная сис­тема счисле­ния (по тетрадам) Шестнадцате-ричная систе­ма счисления

Символы

на дисплее

0 0 0000 0 0
1 1 0001 1 1
2 2 0010 2 2
3 3 0011 3 3
4 4 0100 4 4
5 5 0101 5 5
6 6 0110 6 6
7 7 0111 7 7
8 10 1000 8 8
9 11 1001 9 9
10 12 1010 А А
11 13 1011 В B
12 14 1100 С С
13 15 1101 D D
14 16 1110 Е E
15 17 1111 F F

1.2 Арифметические команды

Основной арифметической функцией является сложение двух чисел. Команда, имеющая мнемокод ADD Rд, складывает данные регистра Rд и аккумулятора (регистра А) и результат сложения запоминает в аккумуляторе.

- CARRY - регистра признаков. Разряд (флаг) переноса играет большую роль при выполнении микропроцессором арифметических операций и работает девятым разрядом аккумулятора. По флагу командами IC и INC можно осуществить переход. Применяется он так же при сложении чисел длиннее восьми разрядов, выполняя функции связи между двумя байтами записи числа.

О состоянии флага переноса, как и других флагов регистра признаков в МИКРОЛАБе может сообщить ячейка памяти с адресом 83ЕА, где флаги за­писываются в последовательности, приведенной на рисунке 1.1.

В «ЭЛЕКТР0НИКЕ-580» разряд С высвечивается на панели установки.


Рисунок 1.1 - Флаги № ШС КР580ИКБ0

Вычитание содержимого регистра Rд из содержимого аккумулятора производит команда SUB Rд. Например, команда SUB B вычитает из аккумулятора данные регистра В.

Команда вычитания использует флаг переноса как разряд заема. Если флаг переноса устанавливается после команды SUB Rд, значит, число в регистре Rд больше, чем в аккумуляторе.

После выполнения команды SUB Rд результат остается в аккумуля­торе, вызов содержимого которого на индикатор регистра данных осущест­вляется адресом 83ЕВ в "МИКРОЛАБе" и клавишами REC, А в "ЗЛЕКТРОНИКЕ-580".

1.3 Программа сложения двух однобайтных чисел X и У

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

Задайтесь числовыми значениями Х = 38, Y = А3 и начальным адресом программы, приняв его равным 8200.

Обратите внимание на то, что все приведенные числа записаны в шестнадцатеричной системе счисления.

Включите лабораторную установку и, пользуясь листингом программы, приведенным в табл. 2, запишите в память ЭВМ по указанным адресам коды команд.

Таблица 1.2 - Программа PRG 1 сложения двух однобайтных чисел

Адрес Код команды Метка Мнемокод Комментарий
8200 AF PRG 1: ХRА А Очистить аккумулятор
8201 ЗЕ MVI A, 38 Записать в аккумулятор
8202 38 число X
8203 06 MVI B, A3 Записать в регистр В
8204 A3 число У
8205 80 ADD 8 Сложить X и Y
8206 E7 RST 7 Прервать выполнение программы

Выполнив запись программы, установите начальный адрес и запустите программу. После её исполнения на дисплее установится запись: 8207 DB_ _, показывающая результат вычисления DB по адресу 8207.

Для получения разности двух чисел X и Y можно использовать программу PRG 1, заменив в ней по адресу 8205 код команды 80 (ADD B) кодом 90 (SUB В) команды вычитания содержимого регистра В из содержимого аккумулятора, разместив предварительно в регистрах В и А соответственно вычитаемое и уменьшаемое. Разность будет записана в аккумуляторе.

1.4 Сложение массива однобайтных чисел

Массив однобайтных шестнадцатеричных чисел, например, 31, АВ, 86, разместите в последовательных адресах памяти, например, 8250, 8251, 8252, 8253.

В качестве входных параметров для выполнения программы необходи­мо иметь адрес первого слагаемого, например, 8250, записанный в регистрах H, L, и число слагаемых - в регистре С. Выходным параметром будет являться сумма, старший байт которой записан в регистре В, а младший байт - в аккумуляторе.


Таблица 1.3 – Программа PRG 2 сложения массива однобайтных чисел

Адрес

Код

команды

Метка Мнемоника Комментарий

8200

8201

8202

21

50

82

PRG 2: LXI H,8250 Загрузить в регистры HL, адрес первого слагаемого

8203

8204

0E

04

MVI C, 04 Загрузить в регистр С количество слагаемых
8205 AF XRA A Очистить аккумулятор
8206 47 MOV B, A Очистить регистр В
8207 86 M1: ADD M Прибавить к содержимому аккумулятора число из массива слагаемых

8208

8209

820А

D2

0D

82

INC M2 Если переноса нет, то идти на М2

820В

820С

04

B7

INR B

ORA A

Увеличить содержимое регистра В на I

Очистить флаг переноса

820D 23 M2: INX H Указать на следующий адрес слагаемого
820E 0D DCR C Уменьшить содержимое регистра С на I

820F

8210

8211

C2

07

82

INZ Если не все слагаемые, то идти на MI
8212 FF RST 7 Прервать выполнение программы

Выполнение программы с именем PRG 2 начинается с команды загрузки регистровой пары HL, 16-битным числом 8250 (адрес первого слагаемого). После выполнения второй команды (адреса 820З, 8204) в регистре С запишется число 4 (число слагаемых). Командами 8205 и 8206 производится обнуление регистров А, В и регистра признаков.

Командой 8207 с меткой MI начинается первый цикл этапа суммирования. В результате выполнения этой команды в регистр А заносится первое слагаемое (число 31) по адресу 8250, записанное в регистровой паре HL.

Так как переполнения аккумулятора нет, по команде 8208 осуществляется переход на метку М2 (адрес команды 820С), и к содержимому регистровой пары HL прибавляется I. Теперь здесь записан адрес 8251 второго слагаемого.

После выполнения команды 820Е число слагаемых (содержимое регистра С) становится равным 3 и по команде 820F осуществляется переход на MI- начало следующего цикла этапа суммирования.

Во втором цикле в регистр А записывается сумма DC чисел 31 и АВ, флаг переноса не устанавливается, уменьшается число слагаемых регистра С до 2.

В третьем цикле в аккумулятор записывается 62 (младший байт суммы чисел DC и 86) и устанавливается флаг переноса С. По команде 8208 осуществляется переход по адресу 820В и в регистр В записывается I. Содержимое регистровой пары HL равно 8253, содержимое регистра С – I.

В четвертом цикле после выполнения команды 8207 в аккумулятор записывается 56, флаг переноса установлен, содержимое регистра В равно 2.

По команде 820(Е) содержимое регистра С становится равным 0, и ко­манда 820F передает управление адресу 8212 - конец выполнения програм­мы.

1.5 Вычитание одинаковых по длине чисел

Рассмотрите программу получения разности двух чисел X и Y, имеющих одинаковую длину. Листинг программы приведен в табл. 1.4.

Входными параметрами программы будут являться: длина чисел в байтах, записанная в регистре В, адрес младшего байта вычитаемого - в регистровой паре HL, адрес младшего байта уменьшаемого - в регистровой паре DE . Результат вычисления заносится в область памяти, отведенную под вычитаемое.

Положим X = А304 и Y = 7E2I,

B области памяти записывается по адресам

8250 - 04 (младший байт уменьшаемого);

8251 - A3 (старший байт уменьшаемого);

8252 - 21 (младший байт вычитаемого);

8253 – 7E (старший байт вычитаемого).

В регистре B записано 2 - длина чисел X и Y в байтах.

Таблица 1.4 – Программа PRG 3 вычитание чисел

Адрес

Код

команды

Метка Мнемоника Комментарий

8200

8201

06

02

PRG 3: MVI B, 02 Загрузить счетчик длины числа

8202

8203

8204

I I

50

82

LXI D, X Загрузить в регистры D, E адрес младшего байта уменьшаемого

8205

8206

8207

21

52

C2

LXI M, V Загрузить в регистры H, L адрес младшего байта вычитаемого
8208 AF XRA A Очистить аккумулятор
8209 IA M1: LDAX D Загрузить в аккумулятор уменьшаемое
820A 9E SBB M Вычесть из содержимого аккумулятора вычитаемое
820В 77 MOV M, A Записать разность на место вычитаемого
820C I3 INX D Указать на следующий байт уменьшаемого
820D 23 INX H Указать на следующий байт вычитаемого
820E 05 DCR B Уменьшить содержимое счетчика длины числа

820F

8210

8211

02

09

82

INZ M1 Если не последний (старший) байт, то идти на MI
8212 FF RST 7 Прервать выполнение программы

Обратите внимание на то, что по адресу 820А записана команда SBB. Она отличается от аналогичной команда SUB М тем, что из содержимого аккумулятора вычитается не только число, записанное в ячейке М по адресу, хранящемуся в регистровой паре HL, но и значение займа. Итоговое значение займа в результате выполнения операции фиксируется в разряде переноса регистра признаков.

1.6 Сложение многобайтовых десятичных чисел

В табл. 1.5 приведен листинг программы сложения чисел, представляемых в МП БИС КР580ИК80 в виде двоично-десятичных чисел. Так как такое представление чисел требует от ЭВМ преобразования данных, в программу необходимо ввести оператор DAA, который выполняет коррекцию результата операции по следующим правилам:

если значение младших 4 бит аккумулятора больше девяти или если признак дополнительного переноса АС равен I, то к содержимому аккумулятора добавляется число 6;

если значение старших 4 бит аккумулятора больше девяти или если признак переноса С равен I, то к содержимому старших 4 бит аккумулятора добавляется число 6.

Заметьте, что в предлагаемой программе, как и в предыдущей, рассматриваются числа с длиной больше машинного слова. Поэтому операции с такими числами МП БИС проводят по байтам, начиная с младших байтов.

Рассмотрите программу с именем PRG 4 для слагаемого Х=3045, размещенного побайтно в ячейках памяти 8050 и 8051, и слагаемого Y = 2071 - в ячейки памяти 8052 и 8053. Результат сложения размещается в ячейках, отведенных для второго слагаемого.

После выполнения программы вызовите последовательно ячейки 8053 и 8052 и запишите их содержимое. Это результат решения. Он должен быть равен десятичному числу 5116.


Таблица 1.5 - Программа PRG 4 сложения двух десятичных чисел

Адрес

Код

команды

Метка Мнемоника Комментарий

8200

8201

8202

21

50

82

PRG 4: LXI H, X Загрузить в регистры младшие два разряда числа Х

8203

8204

8205

I I

52

80

LXI D, Y Загрузить в регистры младшие два разряда числа Y
8206 AF XRA A Очистить аккумулятор

8207

8208

0E

02

MVI C, 02 Загрузить счетчик числа байтов
8209 IA M1: LDAX D Загрузить в аккумулятор два разряда числа Y
820A 8E ADC M Прибавить к содержимому аккумулятора два разряда числа Х с учетом переноса
820В 27 DAA Преобразовать результат в десятичный код
820C 12 STAX D Передать результат в ячейку памяти, адресуемой регистровой парой DE
820D 13 INX D Указать на адрес следующих двух разрядов числе Y
820E 23 INX H Указать на адрес следующих двух разрядов числе Х
820F OD DCR C Уменьшить содержимое счетчика числа байтов

8210

8211

8212

C2

09

82

INZ M1 Если не последний (старший) байт, то идти на MI
8213 FF RST 7 Прервать выполнение программы

2 ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

2.1 Выполним программу получения суммы двух чисел

 X=A+B, имеющих одинаковую длину. Листинг программы приведен в таблице 2.1.

A=          B=

Результат сложения заносится в область памяти, отведенную под второе слагаемое.

В области памяти записывается по адресам

8250 – 87 (младший байт первого слагаемого)

8251 – 35 (старший байт первого слагаемого)

8252 – 87 (младший байт второго слагаемого)

8253 – 02 (старший байт второго слагаемого)

Таблица 2.1 – Программа сложения массива однобайтных чисел

Адрес

Код

команды

Метка Мнемоника Комментарий

8200

8201

8202

21

50

82

PRG 1: LXI H, X Загрузить в регистры младшие два разряда числа А

8203

8204

8205

11

52

80

LXI D, Y Загрузить в регистры младшие два разряда числа В
8206 AF XRA A Очистить аккумулятор

8207

8208

OE

02

MVI C, 02 Загрузить счетчик числа байтов
8209 1A M1: LDAX D Загрузить в аккумулятор два разряда числа А
820А 8E ADC M Прибавить к содержимому акумулятора два разряда числа В с учетом переноса
820В 27 DAA Преобразовать результат в десятичный код
820C 12 STAX D Передать результат в ячейку памяти, адресуемой регистровой парой DE
820D 13 INX D Указать на адрес следующих двух разрядов числа В
820E 23 INX H Указать на адрес следующих двух разрядов числа А
820F OD DCR C Уменьшить содержимое счетчика числа байтов

8210

8211

8212

C2

09

82

INZ M1 Если не последний (старший) байт, то идти на МI
8213 E7 RST 7 Прервать выполнение программы

2.2 Выполним программу получения разности двух чисел C и D

Листинг программы приведен в таблице 2.2.

Входными параметрами программы будут являться: длина чисел в байтах, записанная в регистре В, адрес младшего байта вычитаемого – в регистровой паре HL, адрес младшего байта уменьшаемого – в регистровой паре DE. Результат вычисления заносится в область памяти, отведенную под вычитаемое. C=, D=. В регистре В записано 2 – длина чисел C и D в байтах. В области памяти записывается по адресам

8250 – Е1 (младший байт уменьшаемого);

8251 – 37 (старший байт уменьшаемого);

8252 – 75 (младший байт вычитаемого);

8253 – 08 (старший байт вычитаемого);

В регистре В записано 2 – длина чисел C и D в байтах.

Таблица 1.4 – Программа PRG 2 вычитание чисел

Адрес

Код

команды

Метка Мнемоника Комментарий

8200

8201

06

02

PRG 2: MVI B, 02 Загрузить счетчик длины числа

8202

8203

8204

I I

50

82

LXI D, X Загрузить в регистры D, E адрес младшего байта уменьшаемого

8205

8206

8207

21

52

C2

LXI M, V Загрузить в регистры H, L адрес младшего байта вычитаемого
8208 AF XRA A Очистить аккумулятор
8209 IA M1: LDAX D Загрузить в аккумулятор уменьшаемое
820A 9E SBB M Вычесть из содержимого аккумулятора вычитаемое
820В 77 MOV M, A Записать разность на место вычитаемого
820C I3 INX D Указать на следующий байт уменьшаемого
820D 23 INX H Указать на следующий байт вычитаемого
820E 05 DCR B Уменьшить содержимое счетчика длины числа

820F

8210

8211

02

09

82

INZ M1 Если не последний (старший) байт, то идти на MI
8212 Е7 RST 7 Прервать выполнение программы

ВЫВОД

В ходе лабораторной работы рассмотрели особенности выполнения простейших арифметических операций над целыми числами без знака на микропроцессорных установках МИКРОЛАБ КР580ИК80 и ЭЛЕКТРОНИКА -580, познакомились с программированием в машинных кодах и мнемокодах, научились пользоваться средствами управления и клавиатурой устройств.


Еще из раздела Информатика, программирование:


 Это интересно
 Реклама
 Поиск рефератов
 
 Афоризм
Ищу выход из Интернета…
 Гороскоп
Гороскопы
 Счётчики
bigmir)net TOP 100