Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика Долгошеев 338.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
124.97 Кб
Скачать

3 Выбор или разработка алгоритма решения задачи

Этот этап является особенно важным, т.к. тщательно проработанный алгоритм является необходимым условием эффективной работы над программой.

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

4 Проектирование структуры программы

Здесь составляется блок-схема алгоритма, определяются те части алгоритма, которые целесообразно оформить в виде подпрограмм. Также определяется способ хранения информации: набор простых переменных, массив и др.

В виду не слишком большого объема команд, необходимых для реализации описанного в разделе 3 алгоритма, программа может быть реализована в виде линейной программы без подпрограмм

Вход

LDA 6000h

ANI 1

MOV B,A

LDA 6001h

ANI 1

ANA B

MOV B,A

LDA 6000h

ADI 0

1

1

RRC

ADD B

MOV B,A

LDA 6001h

ADI 0

RRC

ADD B

STA 6002h

Конец

5 Кодирование

На этом этапе осуществляется запись алгоритма на языке программирования. В том случае, если алгоритм, структура программы и структура данных тщательно продуманы и корректно записаны, то затраты времени на кодирование уменьшаются, а вероятность ошибок на этом этапе снижается.

Ниже приведен исходный код программы на языке Ассемблера для микропроцессора К580. Каждая строка кода снабжена комментарием.

;Адрес начала программы байт 6003

ORG 6003h

;Загрузка в аккумулятор числа X1 из ячейки 6000h

LDA 6000h

;Операция И аккумулятора и значения 1 для выделения младшего разряда,

:если число нечетное, аккумулятор будет содержать 1

ANI 1

;Запомнить аккумулятор в регистре B

MOV B,A

;Загрузка в аккумулятор числа X2 из ячейки 6001h

LDA 6001h

;Операция И аккумулятора и значения 1 для выделения младшего разряда,

:если число нечетное, аккумулятор будет содержать 1

ANI 1

;Логическое сложение аккумулятор с регистром B, который будет содержать

;1, только в том случае, если оба числа нечетные

ANA B

;Запомнить аккумулятор в регистре B

MOV B,A

;Загрузка в аккумулятор числа X1 из ячейки 6000h

LDA 6000h

;Сброс признака С (перенос)

ADI 0

;Сдвиг вправо на 1, в аккумуляторе получится X1/2

RRC

;Добавление к X1/2 1, если X1 и X2 нечетные, иначе добавится 0

ADD B

;Запомнить аккумулятор в регистре B

MOV B,A

;Загрузка в аккумулятор числа X2 из ячейки 6001h

LDA 6001h

;Сброс признака С (перенос)

ADI 0

;Сдвиг вправо на 1, в аккумуляторе получится X2/2

RRC

;Добавление к X2/2 X1/2

ADD B

;Запись среднего арифметического в ячейку 6002h

STA 6002h

;Останов работы программы

HLT