Пусть в памяти программ расположена таблица Х однобайтных чисел начиная с адреса 500h. Используя команду сдвига влево подсчитать количество bit = 1 в объявленных данных в каждой единице данных с i = 5 по j = 3 бит включительно (i>j). Результат подсчета для каждого элемента сохранять в массиве Y начиная с адреса 50h. В качестве массива данных взять строку ‘Фамилия_студента’ = ’Petrov’.
Организовать циклически бегущий bit = 1 в количестве bits = 2 порту Pn =3 вправо. Программа должна начинаться с адреса 100h.
org 0h
jmp start
org 100h; начало программы
start:
;обработка массива
mov dptr,#500h; адрес массива в памяти программ
mov r3,#0; индекс текущего элемента
mov r0,#50; адрес выходного массива
mov r2,#6; число элементов заданного массива
cycle:
mov a,r3; задаем индекс извлекаемого элемента
movc a,@a+dptr; извлекаем текущий элемент для обработки
rl a; подвигаем к краю первый
rl a; обрабатываемый бит
mov r4,#0; число найденных битов
mov r5,#3; число обрабатываемых битов
bits:
rlc a; выдвигаем в CY обрабатываемый бит
jnc next_bit; анализируем его, если бит не равен 1, то к следующему биту
|
|
inc r4; найден еще бит равный 1
next_bit:
djnz r5,bits; если обработаны не все биты, то повторить обработку
mov @r0,4; сохранить результат обработки элемента массива
inc r0; переход к следующему элементу выходного массива
inc r3; переход к следующему обрабатываемому элементу заданного массива
djnz r2,cycle
;формирование бега битов
mov a,#11000000b; начальное состояние порта
beg:
mov p3,a; показать состояние в порту
rr a; подготовить следующее состояние
jmp beg
jmp $
org 500h
mas: db 'Petrov'; заданный массив
end
Контрольный просчет задания
Входные данные для программы
Данные | P | e | t | |||||||||||||||||||||
Данные (h) | 50h | 65h | 74h | |||||||||||||||||||||
Номер бита | ||||||||||||||||||||||||
Значение бита | ||||||||||||||||||||||||
Данные задачи | х | х | х | х | х | х | х | х | х | х | х | х | х | х | х | |||||||||
Результат |
Данные | r | o | v | |||||||||||||||||||||
Данные (h) | 72h | 6Fh | 76h | |||||||||||||||||||||
Номер бита | ||||||||||||||||||||||||
Значение бита | ||||||||||||||||||||||||
Данные задачи | х | х | х | х | х | х | х | х | х | х | х | х | х | х | х | |||||||||
Результат |