|
Ввести в регистр R7 информацию из линий 0,1,3,4 и 7:
MOV A,P1; Ввод байта из порта 1
ANL A,#10011011B; Маскирование
MOV R7,A; Передача
2. Ввести в аккумулятор данные из порта 2 и выделить требуемые биты по маске, находящейся в R0:
MOV A,P2; Ввод из порта 2
ANL A,R0; Маскирование
Выполнить логический сдвиг влево двухбайтного слова,
расположенного в (R2) (A):
SHIF: RLC A; Сдвиг младшего байта
XCH A,R2; Обмен аккумулятора и расширителя
RLC A; Сдвиг старшего байта
XCH A,R2; Обмен
4. Выполнить арифметический сдвиг двухбайтного слова (R2) (A) вправо:
SHIF: SETB C; Установка флага переноса
XCH A,R2; Обмен байтами
B A.7,NO; Если R2.7 не равно 1, то сброс
CLR C; флага переноса
NO: RRCA; Сдвиг флага переноса в расширитель
XCH A,R2; Обмен
RRC A; Сдвиг младшего байта
5. Умножить аккумулятор на число 2 в степени Х, где Х – число не более 8, хранящееся в R2. Умножение на 2 заменяется арифметическим сдвигом влево аккумулятора и расширителя R1:
MOV R1,#0; Сброс R1
CLR C; Сброс флага переноса
L: RLC A; Арифметический сдвиг влево объединенного
XCH A,R1; 16-битного результата в
RLC A; регистровой паре (R1)(A)
XCH A,R1
DJNZ R2,L
6. Определить четность числа единиц в аккумуляторе:
CLR F0; Сброс F0
MOV R7,#9; Число повторов
L: RRC A; Пересылка бита А.0 в перенос
JNC N; Пропустить, если бит равен 0
CPL F0; Подсчет паритета
Дата добавления: 2015-07-11; просмотров: 100 | Нарушение авторских прав