Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_8н.docx
Скачиваний:
1
Добавлен:
30.08.2019
Размер:
43.32 Кб
Скачать

Основы микропроцессорной техники. Конспект лекций

Лекция 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; ANOT( ) – Отрицание(инверсия) содержимого аккумулятора

.

Пример.

A=11011010=DAH

=00100101=25H

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

При этой операции содержимое аккумулятора (двоичное число) смещается вправо или влево на один разряд.

Существует два типов сдвига:

а) сдвиг с использованием флага С;

б) сдвиг без использования флага С.

Циклический сдвиг влево (умножение двоичного числа на 2)

RL A; A7A6…A0A7.

Циклический сдвиг влево через флаг переноса С

RLС A; СA7A6…A0С.

Циклический сдвиг вправо

RR A; A7A6..A0A7.

Циклический сдвиг влево через флаг переноса С

RRC A; CA7A6..A0C.

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

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)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]