- •I. Задание на курсовой проект
- •1. Тематика курсового проекта
- •2. Задание и общие требования к выполнению
- •II. Методические указания к выполнению курсового проекта
- •1. Требования к блок-схеме алгоритма
- •2. Составление блок-схемы алгоритма и программы
- •3. Пример выполнения курсового проекта
- •3.1. Общая постановка задачи
- •3.2. Распределение памяти
- •3.3. Составление структурной схемы алгоритма решения задачи и программ
- •Программы вычислений на языке ассемблера и в машинных кодах
- •3.4. Замечания к примеру курсового проекта
- •Задание на курсовой проект Тема проекта: «Микропроцессорное устройство обработки информации
- •Основные директивы ассемблера
- •Основные приемы программирования
- •1. Организация счета
- •2. Организация временной задержки
- •3. Сложение и вычитание чисел
- •4. Умножение и деление
- •5. Организация массивов, очередей и стеков
- •5.1. Массивы
- •5.2. Очередь
- •5.3. Стек
- •6. Подпрограммы
- •Ассемблирование вручную
3. Сложение и вычитание чисел
Сначала рассмотрим выполнение этих операций над числами без знаков, что соответствует, например, операциям над кодами и положительными числами.
Если операнды являются однобайтовыми числами, то их сложение и вычитание осуществляется командами ADD R и SUB R. При выполнении команды сложения возможно переполнение разрядной сетки, о чем свидетельствует значение флага переноса С. Особенностью выполнения команды вычитания является то, что ее результат представлен в дополнительном коде. Напомним, что при положительном числе дополнительный код совпадает с прямым, а при отрицательном он равен дополнению данного числа до 2n. Для двоичных отрицательных чисел дополнительный код вычисляют путем инверсии всех разрядов прямого кода с последующим добавлением единицы.
Если прямой код числа содержится в аккумуляторе, то переход к дополнительному коду осуществляется с помощью команд инверсии CMA и инкремента (сложения с единицей) INR A. Обратный переход от дополнительного кода числа к прямому осуществляют аналогичным образом — с помощью команд декремента (вычитания единицы) DCR A и инверсии CMA.
Если хотя бы один из операндов занимает более n разрядов (где n — разрядность МП), то говорят, что вычисления производятся с повышенной точностью. В МП серии КР580 для сложения двухбайтовых слов предусмотрена команда DAD RP. В общем же случае сложение и вычитание многобайтовых слов осуществляется путем многократного использования команд ADC R и SBBR.
Рассмотрим теперь выполнение операций сложения и вычитания чисел со знаками. Знак числа принято размещать в старшем разряде старшего байта. В МП серии КР580 значение старшего разряда дублируется во флаге знака S, если результат выполнения команды влияет на этот знак. Положительным числам соответствует S=0, а отрицательным — S=1. При обработке чисел со знаками непосредственно сложению и вычитанию предшествует анализ знаков операндов.
О наличии переполнения разрядной сетки, которое может произойти при сложении как двух положительных, так и двух отрицательных чисел, свидетельствует факт неравнозначности Значений флагов переноса и знака. Если же складываются числа разных знаков, то переполнение не может произойти, а значение флага переноса игнорируется.
4. Умножение и деление
Умножение чисел в МП реализуется с помощью команд суммирования и сдвига. Для получения к сумме частичных произведений добавляется , если очередной разряд 1, после чего осуществляется сдвиг ; указанная процедура повторяется для каждого разряда . При этом анализ можно начинать со старших разрядов и соответственно сдвигать влево, либо наоборот.
Знак обычно формируют независимо от описанной процедуры умножения на основе анализа знаков сомножителей, а при осуществлении умножения используют прямые коды сомножителей без знака. В этом случае необходимо учитывать, что освобождающиеся разряды при сдвигах должны заполняться нулями.
Деление двоичных чисел основывается на последовательном вычитании делителя из разрядов делимого и остатка от деления. Таким образом, деление реализуется с помощью операций сдвига, вычитания и анализа результата вычитания. По аналогии с умножением здесь целесообразно осуществлять деление чисел без знаков, а знак частного определять отдельно на основе анализа знаков операндов. Перед выполнением деления необходимо убедиться, что делитель не равен нулю.
Рассмотренные варианты выполнения арифметических действий с помощью МП подразумевают представление чисел в форме с фиксированной запятой (точкой). Обработку данных с плавающей запятой выполняют путем раздельной обработки порядков и мантисс чисел на основе рассмотренных алгоритмов выполнения операций над числами, представленными в форме с фиксированной запятой. Следует отметить, что программы реализации арифметических операций над числами, представленными в форме с плавающей запятой, достаточно сложны и их выполнение занимает большое время, в результате чего такие программы редко применяются в МПК КР580.
