Разработка алгоритма и программы на ассемблере
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Введение
Для полноценного функционирования электронного средства существует необходимость в решение различных не сложных арифметических и логических функций, но огромное количество таких задач представляет собой очень трудоемкий и длительный процесс и его целесообразно выполнять с помощью микропроцессорной техники. Решению одной из таких задач посвящена данная курсовая работа. В которой будет разработана программа по вычислению функции на языке программирования ассемблер для микропроцессора Кр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 имеет байтовое АЛУ с фиксированным набором команд. В этом перечне присутствует команда сложения. Так как разрядность процессора равна восьми, а переменные состоят из нескольких байт слож