Файл: Конспект лекций (дополнительный, обновленный).doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 28.12.2024

Просмотров: 1995

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Таблица 13.1. Типовая система команд.

Группа команд

Условное бозначение

Описание команды

Команды пересылки

Данных

1. MOV r1,r2

(r1)  (r2)

2. MOV r,M

(r)  [BC]

3. MOV M,r

[BC]  (r)

4. LDI r,data

(r)  КОНСТАНТА

5. LDI M,data

[BC]  КОНСТАНТА

6. LDRP rp,data16

(rp)  КОНСТАНТА

7. LDS A,addr

(A)  [АДРЕС ЯП]

8. LDX A,rp

(A)  [РЕГ.ПАРА]

9. STS addr,A

[АДРЕС ЯП]  (A)

10. STX rp,A

[РЕГ.ПАРА]  (A)

11. PUSH r

[SP]  (r)

12. POP r

(r)  [SP]

13. IN A,port

(A)  [АДРЕС ПОРТА]

14. OUT port,A

[АДРЕС ПОРТА]  (A)

Команды выполнения арифметических операций

1. ADD A,r

(A)  (A) + (r)

2. ADC A,r

(A)  (A) + (r) + (СF)

3. ADD A,M

(A)  (A) + [BC]

4. ADC A,M

(A)  (A) + [BC] + (СF)

5. ADDI A,data

(A)  (A) + КОНСТАНТА

6. ADCI A,data

(A)  (A) + КОНСТАНТА + (СF)

7. SUB A,r

(A)  (A) - (r)

8. SBC A,r

(A)  (A) - (r) - (СF)

9. SUB A,M

(A)  (A) – [BC]

10. SBC A,M

(A)  (A) – [BC] - (СF)

11. SUBI A,data

(A)  (A) – КОНСТАНТА

12. SBCI A,data

(A)  (A) – КОНСТАНТА - (СF)

13. MUL A,B

(B)15-8 (А)7-0  (А) х (B)

14. DIV A,B

(A)15-8 (B)7-0  (А) / (B)

15. DA A

Десятичная коррекция сложения

16. INC r

(r)  (r) + 1

17. DEC r

(r)  (r) – 1

18. INC M

[BC]  [BC] + 1

19. DEC M

[BC]  [BC] – 1

20. INRP rp

(rp)  (rp) + 1

21. DCRP rp

(rp)  (rp) – 1

Команды выполнения логических операций

1. AND A,r

(A)  (A)  (r)

2. AND A,M

(A)  (A)  [BC]

3. ANDI A,data

(A)  (A)  КОНСТАНТА

4. OR A,r

(A)  (A)  (r)

5. OR A,M

(A)  (A)  [BC]

6. ORI A,data

(A)  (A)  КОНСТАНТА

7. XOR A,r

(A)  (A)  (r)

8. XOR A,M

(A)  (A)  [BC]

9. XORI A,data

(A)  (A)  КОНСТАНТА

10. CMP A,r

(A) – (r)

11. CMP A,M

(A) – [BC]

12. CMPI A,data

(A) – КОНСТАНТА

13. CM A

(A)  ()

14. RLC A

(ai+1)  (ai)

(a0)  (CF)

(CF)  (an)

15. RRC A

(ai)  (ai+1)

(an)  (CF)

(CF)  (a0)

16. RAL A

(ai+1)  (ai)

(a0)  (an)

(CF)  (an)

17. RAR A

(ai)  (ai+1)

(an)  (a0)

(CF)  (a0)

18. SAL A

(ai+1)  (ai)

(a0)  0

(CF)  (an)

19. SAR A

(ai)  (ai+1)

(an)  (an)

(CF)  (a0)

Команды передачи управления

1. JMP addr

(PC)  АДРЕС ПЕРЕХОДА

2. J-CON addr

(PC)  АДРЕС ПЕРЕХОДА

3. CALL addr

[SP]  (PC)

(PC)  АДРЕС ПОДПРОГРАММЫ

4. RET

(PC)  [SP]

Команды специальные

1. EI

Разрешить прерывание

2. DI

Запретить прерывание

3. NOP

(PC)  (PC) + 1

4. HLT

Останов



13.9.1. Команды пересылки данных.

Команды данной группы служат для загрузки и пересылки двоичных кодов между различными устройствами хранения, которыми являются ячейки памяти, порты и регистры МП. Следует отметить, что команды пересылки данных обычно не воздействуют на флаги, поскольку по командам этой группы не выполняются какие-либо вычисления в АЛУ.

1. Команда MOV r1,r2. Эта команда регистровой адресации содержимое регистра r2 переписывает в регистр r1, причем содержимое регистра r2 сохраняется. В качестве регистров могут быть использованы внутренние регистры общего назначения. Например, после выполнения команды MOV C,А данные из аккумулятора А будут переписаны в регистр С. Содержимое аккумулятора не изменится.

2. Команда MOV r,M. Данная команда имеет косвенную адресацию и выполняет пересылку содержимого ячейки памяти M, адрес которой определяется текущим содержимым регистра-указателя адреса (в нашем случае регистровой пары BC) во внутренний регистр общего назначения r. Для того, чтобы обратиться к ячейке памяти с конкретным адресом, ранее в программе необходимо в регистр-указатель адреса загрузить этот адрес или сформировать его каким-либо вычислением. Например, по команде МОV С,M данные из ячейки памяти M пересылаются в регистр C.

3. Команда MOV M,r. Данная команда выполняет обратное действие по отношению к предыдущей команде, т.е. содержимое внутреннего регистра микропроцессора заносит в косвенно адресуемую ячейку памяти.

4. Команда LDI r, data является командой с непосредственной адресацией данных. Эта команда обеспечивает загрузку любого внутреннего регистра r микропроцессора операндом в виде константы data. Например, по команде LDI B,150 в регистр В загружается двоичный код десятичного числа 150.

5. Команда LDI M, data аналогична предыдущей, но загружает константой косвенно адресуемую ячейку памяти M.

6. Команда LDRP rp,data16 выполняет загрузку регистровой пары или иного адресного регистра шестнадцатиразрядной двоичной константой. В качестве адресных регистров могут использоваться в команде указатель стека SP, регистр-указатель адреса косвенно адресуемой ячейки памяти, индексные регистры и иные регистры, кроме счетчика команд. Например, с учетом принятых нами соглашений, команда LDRP ВC,8000 определяет адрес косвенно адресуемой ячейки памяти M путем занесения в регистровую пару BC двоичного кода десятичного числа 8000.


7. Команда LDS A,addr является командой прямой адресации данных и обеспечивает загрузку аккумулятора содержимым ячейки памяти, адрес которой addr указывается в команде в явном виде числом или меткой, под которой понимается числовое значение.

8. Команда LDX A,rp выполняет загрузку аккумулятора содержимым косвенно адресуемой ячейки памяти, адрес которой указывается регистровой парой rp или регистром-указателем адреса. Данная команда имеет косвенную адресацию данных.

9. Команда STS addr,A аналогична команде LDS A,addr, но выполняет обратную пересылку, т.е. содержимое аккумулятора пересылает в прямо адресуемую ячейку памяти.

10. Команда STX rp,A сохраняет аккумулятор в косвенно адресуемой ячейке памяти, адрес которой определяется содержимым регистровой пары rp или регистром-указателем адреса.

11. Команда PUSH r является командой со стековой адресацией. Она заносит в стековую ячейку памяти содержимое указанного в команде регистра r. Каждая запись в стек изменяет указатель стека SP на единицу.

12. Команда POP r выполняет обратное действие, т.е. выгружает из стека последнее записанное в него значение и размещает его в регистре r. Каждая выгрузка из стека изменяет содержимое указателя стека SP на единицу с противополжным по знаку приращением по отношению к команде PUSH r.

13. Команда IN A,port реализует ввод данных из порта ввода и запись введенного значения в аккумулятор. Эта команда является командой прямой адресации данных и выполняет обращение к порту по явному адресу, записанному в виде числа или условной метки с числовым значением port.

14. Команда OUT port,A выполняет обратную пересылку, т.е. данные из аккумулятора выводит в порт вывода по адресу port.


13.9.2. Команды выполнения арифметических операций.

С помощью команд выполнения арифметических действий производится совместная обработка двух двоичных кодов по правилам двоичной арифметики, а также операции отрицательного или положительного приращения содержимого регистров или ячеек памяти. Команды этой группы обычно воздействуют на все флаги или большую их часть.

1. Команда АDD А,r способом регистровой адресации выполняет арифметическое сложение содержимого аккумулятора с содержимым одного из регистров общего назначения. Результат выполнения команды помещается в аккумулятор. Например, команда АDD A,A удваивает содержимое аккумулятора. Размещение одного из операндов и результата арифметических и логических команд в аккумуляторе характерно для многих восьмиразрядных микропроцессоров и микроконтроллеров. Связано это с дефицитом разрядов однобайтового формата кода операции этих команд для кодирования различных регистров-источников обоих операндов.

2. Команда ADС A,r является командой сложения содержимого аккумулятора с содержимым регистра общего назначения, учитывающей при этом флаг переноса СF. Если при ранее выполненной команде флаг переноса был установлен в единицу, то к полученному результату арифметически будет прибавлена единица. В противном случае, прибавление единицы не произойдет. Результат данной команды также размещается в аккумуляторе. С помощью данной команды можно поэтапно складывать двоичные коды с разрядностью, превышающей разрядность АЛУ микропроцессора, без потери переносов единиц из младших байтов в старшие.

3. Команда АDD А,M арифметически прибавляет к содержимому аккумулятора содержимое косвенно адресуемой ячейки памяти. Адрес ячейки памяти M указывается регистровой парой (в нашем случае BC) или специальным регистром-указателем адреса.

4. Команда ADС A,M аналогично предыдущей команде выполняет сложение аккумулятора с косвенно адресуемой ячейкой памяти M, но с учетом значения флага переноса CF.

5. Команда ADDI A,data является командой с непосредственной адресацией данных и осуществляет сложение содержимого аккумулятора с явно указанным в команде в виде константы значением операнда data. Результат команды будет также размещен в аккумуляторе.

6. Команда ADCI A,data выполняет арифметическое сложение аккумулятора с непосредственно указанным в команде значением операнда data, учитывая при этом значение ранее установленного флага переноса CF.