Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АТП с ответами.doc
Скачиваний:
5
Добавлен:
08.11.2019
Размер:
150.53 Кб
Скачать

Inc dptr ; установка указателя на след. Элемент

cjne A,#Const,L1 ; если элемент не равен константе идти на L1

add A,R1 ; вычисление

mov R1,A ; двухбайтовой

mov A,#0 ; суммы

addc A,R3 ; равных константе

mov R3,A ; элементов

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall SummEq1000 ; вызов подпрограммы

12. В последовательных ячейках ОЗУ хранится массив из тысячи целых положительных чисел. Составить подпрограмму, определяющую число элементов массива, попадающих в диапазон, границы которого заданы в двух произвольных ячейках памяти. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

NumDiapazon1000: mov R1,#0 ; обнуление счетчиков mov R3,#0 ; элементов попадающих в диапазон

mov R2,#10 ; загрузка счетчиков

L2: mov R3,#100 ; на 1000 элементов

L3: movx A,@DPTR ; чтение элемента массива

Inc dptr ; установка указателя на след. Элемент

mov R4,A ; временное сохранение

clr c ; сравнение

subb A,R5 ; с минимумом

jc L1 ; если меньше минимума идти на L1

mov A,R6 ; временное сохранение

clr c ; сравнение

subb A,R4 ; с максимумом

jc L1 ; если больше максимума идти на L1

inc R1 ; инкремент

cjne R1,#0,L1 ; двухбайтового счетчика

inc R3 ; элементов из диапазона

L1: djnz R3,L3 ; обработка счетчиков цикла

djnz R2,L2

ret ; возврат из подпрограммы

Пример вызова:

mov DPTR,#Massive ; загрузка в указатель адреса начала массива

acall NumDiapazon1000 ; вызов подпрограммы

13. К порту ввода МПС подключен цифровой восьмиразрядный датчик температуры со шкалой

0-500 С. Предложить фрагмент принципиальной (функциональной) электрической схемы

МПС . Составить программу на Ассемблере, принимающую в квитируемом режиме информацию с датчика и подсчитывающую, сколько измерений будет сделано до получения сигнала, соответствующего значению 400 С .

Характеристика датчика

Код Температура С

0 0

255  500

(255/500)*400=204 400

mov R1,#0 ; обнуляем счетчик Next: clr P1.0 ; установка сигнала готовности

L1: jnb P1.1,L1 ;ожидание синхроимпульса

mov A,P2 ;прием байта

setb P1.0 ; снятие сигнала готовности

L2: jb P1.1,L2 ;ожидание конца синхроимпульса

cjne A,#204, IncCountt ; проверка принятого байта на равенство 400

sjmp Exit ; конец работы

IncCount: inc R1 ; инкремент счетчика

sjmp Next ; работаем дальше

Exit:

14. Составить подпрограмму на Ассемблере, подсчитывающую число единичных битов в массиве из ста элементов, хранящимся в последовательных ячейках ОЗУ. Определить механизм передачи параметров в подпрограмму, привести пример вызова разработанной подпрограммы.

NumSetBit100: mov R1,#0 ; обнуление счетчиков mov R3,#0 ; единичных битов

mov R2,#100 ; загрузка счетчика на 100 элементов

L3: movx A,@DPTR ; чтение элемента массива