Логическая группа команд
Арифметическая группа команд
Сложение
Прибавляет к содержимому аккумулятора содержимое второго операнда. Результат записывается в аккумулятор. Изменяет состояние разрядов 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