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

Программирование арифметических задач на Ассемблере для микропроцессора К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 вычитание чисел





d>

Мнемоника













































































Адрес


Код


команды


Метка


Комментарий


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, познакомились с программированием в машинных кодах и мнемокодах, научились пользоваться средствами управления и клавиатурой устройств.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:3591
Символов:33145
Размер:64.74 Кб.