Разработка алгоритма и программы на ассемблере

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Введение

 

Для полноценного функционирования электронного средства существует необходимость в решение различных не сложных арифметических и логических функций, но огромное количество таких задач представляет собой очень трудоемкий и длительный процесс и его целесообразно выполнять с помощью микропроцессорной техники. Решению одной из таких задач посвящена данная курсовая работа. В которой будет разработана программа по вычислению функции на языке программирования ассемблер для микропроцессора Кр580ВМ80.

В ходе решения данной задачи нам необходимо подробно изучить микропроцессорную технику на примере однокристальной микро-ЭВМ Кр580ВМ80. Освоить приёмы программирования на языке низкого уровня - ассемблер. Затем произвести детальный анализ технического задания и найти пути решения в виде наиболее привлекательного с точки зрения рациональности алгоритма программы. Составить всю необходимую документацию к данной программе.

 

1. Анализ технического задания

 

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

Исходные данные

1.Функция ;

.Тип микропроцессора КР580ВМ80;

.Рабочая частота - 2 МГц;

.Исходные числа целые, положительные, 4-х байтовые, двоичные;

.Специальное требование - минимизировать объем памяти программы.

Рассмотрим основные ресурсы с точки зрения программирования, которые предоставляют МП КР580ВМ80. Данный МП представляет собой однокристальный 8-разрядный микропроцессор и включает в себя три основные части: АЛУ, банк регистров, схему управления. Взаимосвязь между различными блоками осуществляется с помощью внутренней 8-разрядной шины данных. МП имеет внешнюю 8-и разрядную, двунаправленную шину данных с тремя логическими состояниями и 16-разрядную однонаправленную шину адреса с тремя логическими состояниями.

Такая 16-разрядная шина адреса позволяет адресовать 216 = 65536 ячеек памяти.

АЛУ МП представляет собой 8-разрядное комбинационное логическое устройство, предназначенное для выполнения арифметических и логических операций. Один из операндов, поступающих на АЛУ, всегда размещается в аккумуляторе, в аккумулятор помещается и результат операции. АЛУ данного МП выполняет только простейшие операции (сложение, вычитание, сдвиг и.т.д.), более сложные операции реализуются программно.

Все регистры МП Кр580ВМ80 можно разделить по назначению на две группы: регистры общего назначения (РОН) и специальные регистры.

МП имеет 8 регистров общего назначения. Из них регистры W и Z программно недоступны и предназначены для внутренних пересылок информации в МП, в частности для хранения двух и трехбайтовых команд. Регистры В,С,D,E,Н,L программно доступны и предназначены для хранения операндов и промежуточных результатов вычислений. Использование этих регистров в программе позволяет сократить время выполнения программы и её объём. Эти регистры могут использоваться как отдельно (как 8-разрядные регистры), так и в парах НL, BC, DE, при этом они используются для хранения 16-разрядных операндов и адресов. Пара регистров НL может использоваться для хранения адреса ячейки памяти (М) при обращении к ней как к регистру.

К специальным регистрам относятся: счетчик команд, указатель стека, регистр адреса, аккумулятор, регистр признаков.

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

Счетчик команд Рс представляет собой 16-ти разрядный регистр, содержащий адрес выполняемой команды.

Указатель стека Sр - 16-разрядный регистр, предназначенный для хранения адреса вершины стека. Стек располагается в оперативной памяти. Поэтому при разбивке адресного пространства необходимо в ОЗУ выделить область для стека.

Регистр состояния (регистр признаков) предназначен для хранения информации о результате операции.

Также МП содержит схема десятичной коррекции предназначена для автоматической коррекции результата операции сложения при представлении операндов, в двоично-десятичном коде.

Система команд МП включает команды пересылки, инкремента и декремента, команды арифметических и логических операций, сдвига, передачи управления, ввода-вывода и несколько дополнительных команд.

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

По заданию входными числами х1, х2, являются целые, положительные, 4-х байтные, двоичные числа. 4-х байтное двоичное число может принимать значения от 0 до 232-1 (FFFFFFFF16).

Максимальное значения функция достигает при минимальном значении знаменателя, то есть при х1=1 и равно (1+232-1+232-1)/(41) =2147483647 (7FFFFFFF16). Таким образом, для хранения результата в двоичном виде необходимо четыре байта.

Для хранения результата сложения х1, х2 и x необходимо пять байт, так как 232-1+232-1+232-1=12884901885 (2FFFFFFFD16).

Для хранения результата умножения 4 на х1 необходимо также пять байт, так как 4232-1=17179869180 (3FFFFFFFC16).

Отметим, что областью допустимых значений, удовлетворяющей данной функции, является выражение >.

Проанализируем заданную математическую функцию. Она содержит три арифметических действия, поэтому программу можно логически разделить на три составляющих.

В первую очередь следует найти сумму . В своём составе МП Кр580ВМ80 имеет байтовое АЛУ с фиксированным набором команд. В этом перечне присутствует команда сложения. Так как разрядность процессора равна восьми, а переменные состоят из нескольких байт слож