Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shamr_voprosy.docx
Скачиваний:
6
Добавлен:
26.06.2024
Размер:
161.73 Кб
Скачать

Вариант 24. Для каждого из регистров r0, r3 и регистра-расширителя в последовательно выдать в порты информацию о содержимом регистров:

  • Р0 - прямое значение байта;

  • Р1 - инверсное значение байта;

  • P2 - количество нолей в байте;

  • Р3.0 - флаг контроля на четность.

ORG 0h ; Начальный адрес программы

START:

MOV A, R0 ; Загрузка значения из регистра R0 в аккумулятор A

MOV P0, A ; Вывод значения аккумулятора A в порт P0

CPL A ; Инвертирование значения аккумулятора A

MOV P1, A ; Вывод инверсного значения аккумулятора A в порт P1

MOV A, R0 ; Загрузка значения из регистра R0 в аккумулятор A

MOV R1, #0 ; Инициализация регистра R1

COUNT_ZEROS:

JNB ACC.0, SKIP_INCREMENT ; Если младший бит аккумулятора A равен 0, перейти к SKIP_INCREMENT

INC R1 ; Увеличение значения в регистре R1

SKIP_INCREMENT:

RRC A ; Сдвиг значения в аккумуляторе A вправо через флаг переноса (циклический сдвиг)

DJNZ R0, COUNT_ZEROS ; Уменьшение значения в регистре R0 и проверка на ноль, если не равно нулю, перейти к COUNT_ZEROS

MOV P2, R1 ; Вывод значения регистра R1 (количество нулей) в порт P2

JB P, PARITY_CHECK ; Если флаг переноса (P) установлен, перейти к PARITY_CHECK

CLR C ; Очистка флага переноса (C)

SJMP SKIP_PARITY_CHECK ; Пропустить блок проверки на четность

PARITY_CHECK:

SETB C ; Установка флага переноса (C)

SKIP_PARITY_CHECK:

MOV P3.0, C ; Запись значения флага переноса (C) в бит P3.0

; Здесь можно продолжить выполнение других инструкций или завершить программу

END:

SJMP EXIT ; Бесконечный цикл, чтобы программа не завершалась случайно

END

Вариант 25. В каждый из портов р0÷р2 поступают данные от двух четырехразрядных датчиков. Выдать в порт р3 сумму шести датчиков, подключенных к портам р0÷р2.

ORG 0h ; Начальный адрес программы

START:

MOV A, P0 ; Загрузка значения из порта P0 в аккумулятор A

ADD A, P1 ; Сложение значения из порта P1 с аккумулятором A

ADD A, P2 ; Сложение значения из порта P2 с аккумулятором A

MOV P3, A ; Вывод суммы шести датчиков в порт P3

; Здесь можно продолжить выполнение других инструкций или завершить программу

EXIT:

SJMP EXIT; Здесь можно разместить код для завершения программы

END

Вариант 26. Записать в регистры r3, r7 и регистр-расширитель в произведение их старшей и младшей тетрады соответственно.

ORG 0h ; Начальный адрес программы

START:

MOV A, R3 ; Загрузка значения из регистра R3 в аккумулятор A

SWAP A ; Меняем местами старшую и младшую тетрады аккумулятора A

MOV R3, A ; Сохраняем произведение старшей и младшей тетрады в регистр R3

MOV A, R7 ; Загрузка значения из регистра R7 в аккумулятор A

SWAP A ; Меняем местами старшую и младшую тетрады аккумулятора A

MOV R7, A ; Сохраняем произведение старшей и младшей тетрады в регистр R7

MOV A, B ; Загрузка значения из регистра-расширителя B в аккумулятор A

SWAP A ; Меняем местами старшую и младшую тетрады аккумулятора A

MOV B, A ; Сохраняем произведение старшей и младшей тетрады в регистр-расширитель B

; Здесь можно продолжить выполнение других инструкций или завершить программу

EXIT:

SJMP EXIT ; Бесконечный цикл, чтобы программа не завершалась случайно

END