Логическая группа команд

Арифметическая группа команд

Сложение

Прибавляет к содержимому аккумулятора содержимое второго операнда. Результат записывается в аккумулятор. Изменяет состояние разрядов C,OV, AC.

Формат команды

Add A,Rn Add A,@Rii=0,1 Add A,Direct Add A,#Data A=(A)+(Rn) A=(A)+((Ri)) (A)=(A)+(Direct) (A)=(A)+(#Data)

Сложение с переносом

Прибавляет к содержимому аккумулятора содержимое второго операнда и разряд С. Результат записывается в аккумулятор. Изменяет состояние разрядов C,OV, AC.

Формат команды

Addc A,Rn Addc A,@Rii=0,1 Addc A,Direct Addc A,#Data A=(A)+(Rn)+С A=(A)+((Ri))+С (A)=(A)+(Direct)+С (A)=(A)+(#Data)+С

Вычитание

Вычитает из содержимого аккумулятора содержимое второго операнда и разряд С. Результат записывается в аккумулятор. Изменяет состояние разрядов C,OV, AC.

Subb A,Rn Subb A,@Rii=0,1 Subb A,Direct Subb A,#Data A=(A)+(Rn) A=(A)+((Ri)) (A)=(A)+(Direct) (A)=(A)+(#Data)

Инкремент

Увеличивает на 1 содержимое указанного операнда. Состояние флагов не изменяет.

Inc A Inc Rn Inc Direct Inc @Rii=0,1 Inc Dptr (A)=(A)+1 (Rn)=(Rn)+1 (Direct)=(Direct)+1 ((Ri))=((Ri))+1 (Dptr)=(Dptr)+1

Декремент

Уменьшает на 1 содержимое указанного операнда. Состояние флагов не изменяет.

Dec A Dec Rn Dec Direct Dec @Rii=0,1 (A)=(A)-1 (Rn)=(Rn)-1 (Direct)=(Direct)-1 ((Ri))=((Ri))-1

Умножение

Перемножает содержимое регистров A и B. Результат записывается в регистр А (младшие разряды) и регистр B (старшие разряды). С=0. Если результат>255, то OV=1, иначе OV=0.

Mul AB (A)[7-0]=(A)*(B) (B)[15-8]=(A)*(B)

Деление

Делит беззнаковое содержимое аккумулятора на беззнаковое содержимое регистра B. Результат помещается в аккумулятор. В регистре B остаток. С=0, OV=0.

Div AB (A)=(A)/(B)

Логическое умножение

Выполняет операцию логического умножения (логическое и) над содержимым первого и второго операнда. Результат записывается в аккумулятор, регистр специального назначения или ячейку памяти. Состояние флагов не изменяет.

Anl A,Rn Anl A,Direct Anl A,@Rii=0,1 Anl A,#Data Anl Direct,A Anl Direct,#Data (A)=(A)AND(Rn) (A)=(A)AND (Direct) (A)=(A)AND((Ri)) (A)=(A) AND (#Data) (Direct)=(A)AND(Direct) (Direct)=(Direct) AND(#Data)

Логическое сложение

Выполняет операцию логического сложения (логическое или) над содержимым первого и второго операнда. Результат записывается в аккумулятор, регистр специального назначения или ячейку памяти. Состояние флагов не изменяет.

Orl A,Rn Orl A,Direct Orl A,@Rii=0,1 Orl A,#Data Orl Direct,A Orl Direct,#Data (A)=(A) OR (Rn) (A)=(A) OR (Direct) (A)=(A) OR ((Ri)) (A)=(A) OR (#Data) (Direct)=(A) OR (Direct) (Direct)=(Direct) OR (#Data)

Исключающее ИЛИ

Выполняет операцию «исключающее или» над содержимым первого и второго операнда. Результат записывается в аккумулятор, регистр специального назначения или ячейку памяти. Состояние флагов не изменяет.

Xrl A,Rn Xrl A,Direct Xrl A,@Rii=0,1 Xrl A,#Data Xrl Direct,A Xrl Direct,#Data (A)=(A) XOR (Rn) (A)=(A) XOR (Direct) (A)=(A) XOR ((Ri)) (A)=(A) XOR (#Data) (Direct)=(A) XOR (Direct) (Direct)=(Direct) XOR (#Data)

Циклический сдвиг

Циклический сдвиг содержимого аккумулятора. Состояние флагов не изменяет.

Rl A Rr A Сдвиг влево A[n+1]=A[n], n=0÷6, A[0]=A[7] Сдвиг вправо A[n]=A[n+1], n=0÷6, A[7]=A[0]

Арифметический сдвиг

Циклический сдвиг содержимого аккумулятора через разряд переноса. Состояние флагов OV,AC не изменяет.

 

Rlc A Rrc A Сдвиг влево A[n+1]=A[n], n=0,6, A[0]=С, С=A[7] Сдвиг вправо A[n]=A[n+1], n=0,6, A[7]=С, С=A[0]

Инверсия аккумулятора

Инвертирует содержимое аккумулятора. Состояние флагов не изменяет.

Cpl A (A)= NOT(A)

Обнуление аккумулятора

Обнуляет содержимое аккумулятора. Состояние флагов не изменяет.

Clr A (A)=0