НАСТАВИТЬ ИСПОЛНЕНИЕ ПРОГРАММЫ, НАПИСАННОЙ НА ЯЗЫКЕ АССЕМБЛЕР, ДЛЯ МК-51, КОТОРАЯ ОБРАБАТЫВАЕТ ДАННЫЕ В ЯЧЕЙКЕ ПАМЯТИ

  • 43
НАСТАВИТЬ ИСПОЛНЕНИЕ ПРОГРАММЫ, НАПИСАННОЙ НА ЯЗЫКЕ АССЕМБЛЕР, ДЛЯ МК-51, КОТОРАЯ ОБРАБАТЫВАЕТ ДАННЫЕ В ЯЧЕЙКЕ ПАМЯТИ С АДРЕСОМ 09H ПОСРЕДСТВОМ СЛЕДУЮЩИХ ДЕЙСТВИЙ: - В СЛУЧАЕ, ЕСЛИ ПЕРВЫЙ РАЗРЯД ЯЧЕЙКИ СОДЕРЖИТ ЗНАЧЕНИЕ 1, ЭТО ЗНАЧЕНИЕ ВОЗВОДИТСЯ В КВАДРАТ И ЗАПИСЫВАЕТСЯ В РЕГИСТРЫ БАНКА 0 – В R0 СТАРШИЙ БАЙТ И В R1 – МЛАДШИЙ БАЙТ. В ИНОМ СЛУЧАЕ ЗНАЧЕНИЕ ЗАПИСЫВАЕТСЯ В РЕГИСТР R4 БАНКА.
Shura
13
Для наставления исполнения программы на языке ассемблера для МК-51, представленной задачей, приведу подробное пошаговое решение.

Перед началом выполнения программы необходимо установить все необходимые регистры, а именно R0 и R1 в банк регистров 0, и R4 в банк регистров 4. Этот шаг я опущу, так как он не входит в задачу.

1. Загрузка значения из ячейки памяти с адресом 09H в аккумулятор (ACC).
MOV A, 09H

2. Проверка значения первого разряда ячейки памяти.
MOV C, A ; Копирование значения ячейки памяти в регистр C
ANL C, #01H ; Проверка первого разряда на значение 1
JZ ELSE ; Если либо ноль, то переход к ELSE-блоку

3. Возведение значения в квадрат и запись результата в регистры банка 0.
MOV R0, C ; Сохранение значения первого разряда в R0
MUL AB ; Умножение значения в аккумуляторе на себя
MOV R1, ACC ; Сохранение старшего байта результата умножения в R1
MOV R0, B ; Сохранение младшего байта результата умножения в R0
JMP ENDIF ; Завершение выполнения программы

4. Обработка значения, если первый разряд ячейки содержит значение, отличное от 1.
ELSE:
MOV R4, C ; Сохранение значения ячейки памяти в R4

5. Завершение выполнения программы.
ENDIF:
NOP ; Пустая операция для завершения программы

Вот и всё! Это последовательность действий, которые нужно выполнить для настройки программы на указанном языке ассемблера.