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

Вариант 4. Составить программу вычитания четырехбайтовых беззнаковых чисел. Первое число находится в рпд по адресу 30÷33h, второе – по адресу 38÷3Bh. Результат поместить на место первого операнда.

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

MOV R0, #30h ; Загрузка адреса первого операнда в R0

MOV R1, #38h ; Загрузка адреса второго операнда в R1

MOV A, @R1 ; Загрузка первого байта второго операнда в аккумулятор A

CLR C ; Сброс флага переноса

SUBB A, @R0 ; Вычитание первого байта второго операнда из первого байта первого операнда

MOV @R0, A ; Сохранение результата на место первого операнда

INC R0 ; Увеличение указателя на 1 байт для следующих операндов

INC R1

MOV A, @R1 ; Загрузка второго байта второго операнда в аккумулятор A

SUBB A, @R0 ; Вычитание второго байта второго операнда из второго байта первого операнда

MOV @R0, A ; Сохранение результата на место первого операнда

INC R0 ; Увеличение указателя на 1 байт для следующих операндов

INC R1

MOV A, @R1 ; Загрузка третьего байта второго операнда в аккумулятор A

SUBB A, @R0 ; Вычитание третьего байта второго операнда из третьего байта первого операнда

MOV @R0, A ; Сохранение результата на место первого операнда

INC R0 ; Увеличение указателя на 1 байт для следующих операндов

INC R1

MOV A, @R1 ; Загрузка четвертого байта второго операнда в аккумулятор A

SUBB A, @R0 ; Вычитание четвертого байта второго операнда из четвертого байта первого операнда

MOV @R0, A ; Сохранение результата на место первого операнда

EXIT:

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

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

Вариант 5. Массив чисел был архивирован и помещен в новый массив, в котором предыдущий элемент указывает число, а последующий – количество повторений этого числа в исходном массиве. В результирующем массиве описано 8 пар чисел. Найти сумму членов исходного массива. Результат разместить в регистрах R3, R4, R5.

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

MOV R2, #30h ; Загрузка адреса начала результирующего массива в R2

MOV R3, #0 ; Инициализация суммы членов исходного массива (нижний байт)

MOV R4, #0 ; Инициализация суммы членов исходного массива (средний байт)

MOV R5, #0 ; Инициализация суммы членов исходного массива (верхний байт)

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

ADD A, R3 ; Добавление числа к сумме (нижний байт)

MOV R3, A ; Сохранение суммы в R3

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R4 ; Добавление числа повторений к сумме (средний байт)

MOV R4, A ; Сохранение суммы в R4

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R3 ; Добавление числа к сумме (нижний байт)

MOV R3, A ; Сохранение суммы в R3

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R4 ; Добавление числа повторений к сумме (средний байт)

MOV R4, A ; Сохранение суммы в R4

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R3 ; Добавление числа к сумме (нижний байт)

MOV R3, A ; Сохранение суммы в R3

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R4 ; Добавление числа повторений к сумме (средний байт)

MOV R4, A ; Сохранение суммы в R4

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R3 ; Добавление числа к сумме (нижний байт)

MOV R3, A ; Сохранение суммы в R3

INC R2 ; Увеличение указателя на 1 байт для следующей пары чисел

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

ADD A, R4 ; Добавление числа повторений к сумме (средний байт)

MOV R4, A ; Сохранение суммы в R4

EXIT:

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

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

Вариант 6. Рассчитать 16 значений функции Y=250/Х (для Х, начинающегося с 10 с шагом 8). Результаты округлить до целого значения и разместить в РПД с адреса 40h.

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

MOV R0, #10 ; Загрузка начального значения Х в R0

MOV R1, #40h ; Загрузка адреса начала результата в R1

LOOP:

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

MOV B, R0 ; Инициализация регистра B для деления

DIV AB ; Выполнение деления 250 / Х (результат в AB)

ADD A, #0Fh ; Округление результата до ближайшего целого числа

RR A ; Сдвиг аккумулятора вправо на один разряд (удаление остатка)

MOV @R1, A ; Сохранение результата в РПД

INC R1 ; Увеличение указателя на 1 байт для следующего результата

MOV A, R0

ADD A, #8 ; Увеличение значения Х на шаг 8

MOV R0, A

DJNZ R7, LOOP ; Повторение цикла 16 раз

EXIT:

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

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

Вариант 7. Перевести однобайтовый шестнадцатеричный операнд в двоичнодесятичный упакованный формат. Исходный операнд находится в регистре R5. Результат разместить в регистрах R4 (число сотен) и R3 (десятки, единицы).

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

MOV A, R5 ; Загрузка шестнадцатеричного операнда в аккумулятор A

MOV R4, #0 ; Инициализация регистра R4 (число сотен)

MOV R3, #0 ; Инициализация регистра R3 (десятки, единицы)

ANL A, #0Fh ; Очистка старших разрядов операнда

MOV B, #10

DIV AB ; Выполнение деления операнда на 10 (результат в AB)

MOV R3, A ; Сохранение остатка (десятки, единицы) в R3

MOV R4, B ; Сохранение частного (число сотен) в R4

EXIT:

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

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