- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
- •Inc dptr ; установка указателя на след. Элемент
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 ; чтение элемента массива
