Основы микропроцессорной техники. Конспект лекций
Лекция 8. Команды обмена данными
Эти команды позволяют обмениваться данными между аккумулятором и регистрами либо ЯП области DSEG.
Имеются следующие команды.
1. XCH A,Rп; (A)(Rп).
2. XCH A,dir; (A)(dir).
3. XCH A,@Ri; (A)((Ri)).
4. XCHD A,@Ri; (A3-A0)((Ri)3-0).
5. SWAP A; (A7-A4)(A3-A0).
Команды арифметических операций
Имеются следующие команды: сложение, вычитание, умножение, деление, инкремент, декремент, сравнение чисел.
Команда «Сложение»
1. ADD A,Rп; A(A)+(Rп).
2. ADD A,dir; A(A)+(dir).
3. ADD A,@Ri; A(A)+((Ri)).
4. ADD A,#data; A(A)+data.
При сложении многобайтовых числе учитывается еще и флаг переноса (C).
1. ADDC A,Rп; A(A)+(Rп)+(C).
2. ADDC A,dir; A(A)+(dir)+(C).
3. ADDC A,@Ri; A(A)+((Ri))+(C).
4. ADDC A,#data; A(A)+data+(C).
При сложении старших байтов используется команда ADDC, а при сложении младших байтов – ADD.
Команда «Вычитание»
1. SUBB A,Rп; A(A)-(Rп)-(C).
2. ADDC A,dir; A(A)-(dir)-(C).
3. ADDC A,@Ri; A(A)-((Ri))-(C).
4. ADDC A,#data; A(A)-data-(C).
CLR C; C=0. (По этой команде флаг С устанавливается равным 0).
Команда «Инкремент»
1. INC A; A=(A)+1.
2. INC Rп; Rп=(Rп)+1.
3. INC dir; dir=(dir)+1.
4. INC @Ri; ((Ri))=((Ri))+1.
5. INC DPTR; DPTR=(DPTR)+1.
Команда «Декремент»
1. DEC A; A=(A)-1.
2. DEC Rп; Rп=(Rп)-1.
3. DEC dir; dir=(dir)-1.
4. DEC @Ri; ((Ri))=((Ri))-1.
5. DEC DPTR; DPTR=(DPTR)-1.
Команда «Умножение»
MUL AB; BA=(A)*(B);
В регистре помещается старший байт(B=СБ); в аккумуляторе – младший байт (A=МБ).
Команда «Деление»
DIV AB; AB=(A)/(B).
A= частное, В=остаток.
Команды логических операций
Включают следующие операции: сложение, умножение, исключающее ИЛИ, отрицание.
Команда «Логическое умножение» (И)
1. ANL A,Rп; A(A)AND(Rп).
2. ANL A,dir; A(A)AND(dir).
3. ANL A,@Ri; A(A)AND((Ri)).
4. ANL A,#data; A(A)ANDdata.
5. ANL dir, A; dir=(dir)AND(A).
6. ANL dir,#data; dir=(dir)ANDdata.
Пример.
A=10101100=ACH
R3=11011011=DBH
A=10001000=88H
Команда «Логическое сложение» (ИЛИ)
1. ORL A,Rп; A(A)OR(Rп).
2. ORL A,dir; A(A)OR(dir).
3. ORL A,@Ri; A(A)OR((Ri)).
4. ORL A,#data; A(A)ORdata.
5. ORL dir, A; dir=(dir)OR(A).
6. ORL dir,#data; dir=(dir)ORdata.
Пример.
(2FH)=11011010=DAH
(BCH)=10111100=BCH
)2FH)=11111110=FEH
Команда «Исключающее ИЛИ»
1. 1. ORL A,Rп; A(A)XOR(Rп).
2. ORL A,dir; A(A)XOR(dir).
3. ORL A,@Ri; A(A)XOR((Ri)).
4. ORL A,#data; A(A)XORdata.
5. ORL dir, A; dir=(dir)XOR(A).
6. ORL dir,#data; dir=(dir)XORdata.
Пример.
A=11100011=E3H
(5FH)=01011011=5BH
A=10111000=B8H
Операция «Отрицание»
CLR A; A=0 – сброс аккумулятора
CPL A; ANOT( ) – Отрицание(инверсия) содержимого аккумулятора
.
Пример.
A=11011010=DAH
=00100101=25H
Циклические сдвиги
При этой операции содержимое аккумулятора (двоичное число) смещается вправо или влево на один разряд.
Существует два типов сдвига:
а) сдвиг с использованием флага С;
б) сдвиг без использования флага С.
Циклический сдвиг влево (умножение двоичного числа на 2)
RL A; A7A6…A0A7.
Циклический сдвиг влево через флаг переноса С
RLС A; СA7A6…A0С.
Циклический сдвиг вправо
RR A; A7A6..A0A7.
Циклический сдвиг влево через флаг переноса С
RRC A; CA7A6..A0C.
Обмен аккумулятора с регистром |
XCH A, Rn |
(A) ↔ (Rn) |
Обмен аккумулятора с прямоадресуемым байтом |
XCH A, dir |
(A) ↔ (dir) |
Обмен аккумулятора с байтом из РПД |
XCH A, @Ri |
(A) ↔ ((Ri)) |
Обмен младших тетрад аккумулятора и байта РПД |
XCHD A, @Ri |
(A0…3) ↔((Ri)0…3) |
Арифметические операции.
Название команды |
Мнемокод |
Операция |
Сложение аккумулятора с регистром (n=0÷7) |
ADD A, Rn |
(A) (A) + (Rn) |
Сложение аккумулятора с прямоадресуемым байтом |
ADD A, dir |
(A) (A) + (dir) |
Сложение аккумулятора с байтом из РПД (i = 0,1) |
ADD A, @Ri |
(A) (A) + ((Ri)) |
Сложение аккумулятора с константой |
ADD A, #d |
(A) (A) + #d |
Сложение аккумулятора с регистром и переносом |
ADDC A, Rn |
(A) (A) + (Rn) + (C) |
Сложение аккумулятора с прямоадресуемым байтом и переносом |
ADDC A, dir |
(A) (A) + (dir) + (C) |
Сложение аккумулятора с байтом из РПД и переносом |
ADDC A, @Ri |
(A) (A) + ((Ri)) + (C) |
Сложение аккумулятора с константой и переносом |
ADDC A, #data |
(A) (A) + # data + (C) |
Вычитание из аккумулятора регистра и заёма |
SUBB A, Rn |
(A) (A) - (C) - (Rn) |
Вычитание из аккумулятора прямоадресуемого байта и заема |
SUBB A, dir |
(A) (A) - (C) - ((dir)) |
Вычитание из аккумулятора байта РПД и заема |
SUBB А, @Ri |
(A) (A) - (C) - ((Ri)) |
Вычитание из аккумулятора константы и заема |
SUBB А, d |
(A) (A) - (C) - #d |
Инкремент аккумулятора |
INC А |
(A) (A) + 1 |
Название команды |
Мнемокод |
Операция |
Инкремент регистра |
INC Rn |
(Rn) (Rn) + 1 |
Инкремент прямоадресуемого байта |
INC dir |
(dir) (dir) + 1 |
Инкремент байта в РПД |
INC @Ri |
((Ri)) ((Ri)) + 1 |
Инкремент указателя данных |
INC DPTR |
(DPTR ) (DPTR) + 1 |
Декремент аккумулятора |
DEC A |
(A) (A) – 1 |
Декремент регистра |
DEC Rn |
(Rn) (Rn) – 1 |
Декремент прямоадресуемого байта |
DEC dir |
(dir) (dir) – 1 |
Декремент байта в РПД |
DEC @Ri |
((Ri)) ((Ri)) - 1 |
Умножение аккумулятора на регистр В |
MUL AB |
(B)(A) (A)*(В) |
Деление аккумулятора на регистр В |
DIV AB |
(B).(A) (A)/(В) |
Логические операции
Название команды |
Мнемокод |
Операция |
Логическое И аккумулятора и регистра |
ANL A, Rn |
(A) (A) AND (Rn) |
Логическое И аккумулятора и прямоадресуемого байта |
ANL A, dir |
(A) (A) AND (dir) |
Логическое И аккумулятора и байта из РПД |
ANL A, @Ri |
(A) (A) AND ((Ri)) |
Логическое И аккумулятора и константы |
ANL A, #data |
(A) (A) AND #data |
Логическое И прямоадресуемого байта и аккумулятора |
ANL dir, A |
(dir) (dir) AND (A) |
Логическое И прямоадресуемого байта и константы |
ANL dir, #data |
(dir) (dir) AND #data |
Логическое ИЛИ аккумулятора и регистра |
ORL A, Rn |
(A) (A) OR (Rn) |
Логическое ИЛИ аккумулятора и прямоадресуемого байта |
ORL A, dir |
(A) (A) OR (dir) |
Логическое ИЛИ аккумулятора и байта из РПД |
ORL A, @Ri |
(A) (A) OR ((Ri)) |
Логическое ИЛИ аккумулятора и константы |
ORL A, #data |
(A) (A) OR #data |
Логическое ИЛИ прямоадресуемого байта и аккумулятора |
ORL dir, A |
(dir) (dir) OR (A) |
Логическое ИЛИ прямоадресуемого байта и константы |
ORL dir, #data |
(ad) (dir) OR #data |
Исключающее ИЛИ аккумулятора и регистра |
XRL A, Rn |
(A) (A) XOR (Rn) |
Исключающее ИЛИ аккумулятора и прямоадресуемого байта |
XRL A, dir |
(A) (A) XOR (dir) |
Исключающее ИЛИ аккумулятора и байта из РПД |
XRL A, @Ri |
(A) (A) XOR ((Ri)) |
Исключающее ИЛИ аккумулятора и константы |
XRL A, #data |
(A) (A) XOR #data |
Исключающее ИЛИ прямоадресуемого байта и аккумулятора |
XRL dir, A |
(dir) (dir) XOR (A) |
Исключающее ИЛИ прямоадресуемого байта и константы |
XRLdir, #data |
(ad) (dir) XOR #data |
Сброс аккумулятора |
CLR A |
(A) 0 |
Инверсия аккумулятора |
CPL A |
(A) NOT(A) |
Сдвиг аккумулятора влево циклический |
RL A |
(An+1) (An), n=0÷6, (A0) (A7) |
Сдвиг аккумулятора влево через перенос |
RLC A |
(An+1) (An), n=0÷6 (A0) (C), (C) (A7) |
Сдвиг аккумулятора вправо циклический |
RR A |
(An) (An+1), n=0÷6, (A7) (A0) |
Сдвиг аккумулятора вправо через перенос |
RRC A |
(An) (An+1), n=0÷6 (A7) (C), (C) (A0) |
Обмен местами тетрад в аккумуляторе |
SWAP A |
(A0…3) ↔ (A4…7) |