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

Вариант 18. В впд, начиная с адреса 100h, находится массив из 10 элементов. Получить в регистре r3 число элементов, равных 55h. Счет прервать, если число элементов превысит 3.

ORG 0 ; Установка начального адреса

MOV R3, #0 ; Инициализация регистра R3 для хранения счетчика элементов, равных 55h

MOV R7, #3 ; Инициализация регистра R7 для хранения значения ограничения счетчика

MOV R0, #100h ; Установка начального адреса массива

MOV R1, #10 ; Установка количества элементов массива

COUNT_LOOP:

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

MOV B, #55h ; Загрузка значения 55h в регистр B

SUBB A, B ; Вычитание значения 55h из аккумулятора A

JNZ NOT_EQUAL ; Переход, если результат не равен 0

INC R3 ; Увеличение счетчика элементов, равных 55h

MOV A, R3

MOV B, R7

CJNE A, B, CHECK_LIMIT ; Проверка, достигло ли количество элементов значения ограничения

SJMP EXIT ; Прерывание программы, если количество элементов превысило ограничение

NOT_EQUAL:

INC R0 ; Увеличение указателя на следующий элемент массива

DJNZ R1, COUNT_LOOP ; Повторение цикла для следующего элемента массива, если есть еще элементы

CHECK_LIMIT:

SJMP EXIT ; Прерывание программы, если количество элементов не превысило ограничение

EXIT:

SJMP EXIT ; Бесконечный цикл для завершения программы

END ; Конец программы

Вариант 19. Для функции 15Х+85 найти первое значение аргумента, при котором младший байт функции равен 155.

ORG 0 ; Установка начального адреса

MOV R0, #1 ; Установка начального значения аргумента X

MOV R1, #0 ; Инициализация регистра R1 для хранения младшего байта функции

CHECK_LOOP:

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

MOV R2, #15 ; Загрузка значения 15 в регистр R2

MOV R3, #85 ; Загрузка значения 85 в регистр R3

MUL AB ; Умножение значения аргумента X на 15

ADD A, R3 ; Добавление значения 85 к результату умножения

MOV R1, A ; Сохранение младшего байта функции в регистре R1

INC R0 ; Увеличение значения аргумента X

CJNE R1, #155, CHECK_LOOP; Проверка, равен ли младший байт функции 155

SJMP EXIT

EXIT:

SJMP EXIT

END ; Конец программы

Вариант 20. В впд с адреса 300h находится массив из 15 чисел. Элементами массива являются числа 10, 20, 30 и 180. Подсчитать и сохранить в регистрах r4 - r7 количество повторений каждого элемента.

ORG 0 ; Установка начального адреса

MOV R4, #0 ; Инициализация регистра R4 для хранения количества повторений числа 10

MOV R5, #0 ; Инициализация регистра R5 для хранения количества повторений числа 20

MOV R6, #0 ; Инициализация регистра R6 для хранения количества повторений числа 30

MOV R7, #0 ; Инициализация регистра R7 для хранения количества повторений числа 180

MOV R1, #0 ; Инициализация индекса массива

MOV R2, #15 ; Установка количества элементов в массиве

COUNT_LOOP:

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

CJNE A, #10, NOT_TEN ; Проверка, является ли элемент числом 10

INC R4 ; Увеличение счетчика повторений числа 10

SJMP NEXT_ELEMENT ; Переход к следующему элементу массива

NOT_TEN:

CJNE A, #20, NOT_TWENTY ; Проверка, является ли элемент числом 20

INC R5 ; Увеличение счетчика повторений числа 20

SJMP NEXT_ELEMENT ; Переход к следующему элементу массива

NOT_TWENTY:

CJNE A, #30, NOT_THIRTY ; Проверка, является ли элемент числом 30

INC R6 ; Увеличение счетчика повторений числа 30

SJMP NEXT_ELEMENT ; Переход к следующему элементу массива

NOT_THIRTY:

CJNE A, #180, NOT_ONE_EIGHTY ; Проверка, является ли элемент числом 180

INC R7 ; Увеличение счетчика повторений числа 180

SJMP NEXT_ELEMENT ; Переход к следующему элементу массива

NOT_ONE_EIGHTY:

; Обработка случая, когда элемент не соответствует числу 180

; Можно добавить соответствующую логику или просто пропустить

SJMP NEXT_ELEMENT ; Переход к следующему элементу массива

NEXT_ELEMENT:

INC R1 ; Увеличение индекса массива

DJNZ R2, COUNT_LOOP ; Повторение цикла для следующего элемента

EXIT:

SJMP EXIT

END ; Конец программы