Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПСУ новая 1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
5.62 Mб
Скачать

Система команд семейства mк-51

Всего в системе команд семейства MК-51 можно выделить 5 групп: команды арифметических операций, команды логических операций, команды пересылки данных, команды операций с битами и команды передачи управления.

• Команды операций с битами (табл. 5.10)

Эти команды устанавливают в «1» (SETB) или «0» (CLR) прямоадресуемый бит внутренней памяти данных, изменяют его значение на противоположное (CLR), выполняют операции AND и OR над флагом переноса С и прямоадресуемым битом (AND и ORL), осуществляют пересылку значения между флагом С и прямоадресуемым битом (MOV), осуществляют передачу управления по состоянию флага С или прямоадресуемого бита (JC, JNC, JB, JNB, JBC). Команды этой группы, выполняющие логические операции и осуществляющие пересылку значения бита. изменяют значение флага С регистра PSW. Остальные команды на флаги не действуют.

Таблица 5.10. Команды операций с битами

Название команды

Мнемокод

Т

Б

Ц

Операция

Сброс переноса

CLR C

1

1

1

(C)← 0

Сброс бита

CLR bit

4

2

1

(b)← 0

Установка переноса

SETB C

1

1

1

(C)←1

Установка бита

SETB bit

4

2

1

(b)←1

Инверсия переноса

CPL C

1

1

1

(C)← ( )

Инверсия бита

CPL bit

4

2

1

(b)← (b)

Логическое И бита и переноса

ANL C, bit

4

2

2

(C)← (C) (b)

Логическое И инверсии бита и переноса

ANL C, /bit

4

2

2

(C)← (C) ( )

Логическое ИЛИ бита и переноса

ORL C, bit

4

2

2

(C)← (C) (b)

Логическое ИЛИ инверсии бита и переноса

ORL C, /bit

4

2

2

(C)← (C) ( )

Пересылка бита в перенос

MOV C, bit

4

2

1

(C)← (b)

Пересылка переноса в бит

MOV bit, C

4

2

2

(b)← (C)

При выполнении некоторых операций изменяется значение флагов регистра PSW. Перечень этих команд приведён в табл. 5.11.

Таблица 5.11. Перечень команд, изменяющих флаги регистра PSW.

Команда

Флаг

Команда

Флаг

C

OV

AC

C

OV

AC

ADD

x

x

x

CLR C

0

ADDC

x

x

x

CPL C

SUBB

x

x

x

ANL C, b

x

MUL

0

x

ANL C ,/b

x

DIV

0

x

ORL C , b

x

DA

x

ORL C, /b

x

RRC

x

MOV C ,b

x

RLC

x

CJNE

x

SETB C

1

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

Передача управления может осуществляться безусловно или по условию, без возврата или с возвратом, в последнем случае для возврата необходимо хранить состояние процессора.

Система команд MК-51 кроме обычных «длинных» переходов с использованием 16-разрядного адреса унаследовала от семейства MК-48 команды передачи управления с «коротким» 11-разрядным адресом. Группа команд передачи управления включает четыре команды безусловного перехода без возврата («ультракороткая» SJMP, «короткая» AJMP, «длинная» LJMP и переход по значению A+DPTR в команде JMP), две команды безусловного перехода с возвратом («короткая» ACALL и «длинная» LCALL), восемь команд условного перехода без возврата. Имеются две команды возврата: из обычной подпрограммы команда RET и из подпрограммы обработки прерывания команда RETI.

Завершает эту группу и всю систему команд NOP- «нет операции». Команды передачи управления в регистре PSW значения флагов не изменяют, кроме команд условного перехода CJNE, влияющих на значение флага С.

Группа команд передачи управления представлена в таблице 5.12.

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

Осуществляют передачу данных между ячейками внутренней памяти данных (команды MOV), внешней памяти данных (команды MOVX) и аккумулятором. Существует две команды MOVC, позволяющие читать в аккумулятор содержимое памяти программ. К этой группе относятся парные команды PUSH и POP, осуществляющие загрузку и выгрузку содержимого прямоадресуемой ячейки в стек (из стека). Имеются четыре команды взаимного обмена информацией между ячейками внутренней памяти данных (XCH и XCHD). Команды пересылки данных (табл. 5.13) значения флагов в регистре PSW не изменяют.

• Арифметические команды (табл.5.14)

Обеспечивают выполнение операций сложения и вычитания (в том числе с учетом переноса) над целочисленными 8-разрядными операндами, инкремент и декремент регистров и ячеек внутренней памяти данных, двоично-десятичную коррекцию содержимого аккумулятора. Особенностью системы команд MК-51 является наличие в составе этой группы команд умножения и деления 8-разрядных целочисленных операндов. Получившийся 16-разрядный результат хранится в регистрах А и В. Результатом выполнения арифметических команд является, кроме нового содержимого аккумулятора, измененное значение регистра РSW.

• Логические команды и команды сдвига

Система команд МК51 содержит логические операции (табл. 5.15): AND (И), OR (ИЛИ), «исключающее ИЛИ», инверсия бит. В качестве операндов могут использоваться непосредственные данные и содержимое ячеек внутренней памяти данных. Выполнение некоторых логических команд влияет на значение флага С (перенос) регистра РSW.

Операции сдвигов (табл. 5.16) выполняются над содержимым аккумулятора. Сдвиг может быть выполнен вправо или влево, а также может быть осуществлена перестановка тетрад АСС.

Пример учебной программы, написанной на Ассемблере МК51

; Рассчитать (А+В)/С=D.

; Если D>10d, то результат записать в R7 и вывести FFH в порт Р3.

; Если D≤10d (d – десятичное число), то результат записать в ячейку 100d РПД

; и установить бит 20h РПД.

; Исходные данные: А в R2, В в ячейке 99d РПД, C в R3. Все числа не более 10d.

; d – десятичное число.

……. …….

MOV А, R2 ; Пересылка содержимого из R2 в аккумулятор.

ADD A, 63h ; Сложение ячейки 99 РПД и аккумулятора.

MOV B, R3 ; Пересылка содержимого R3 в регистр В.

DIV A, B ; Деление аккумулятора на В.

MOV R4, A ; Результат D записать в R4.

SUBB A, #Ah ; Вычитание 10d из аккумулятора.

JZ M1 ; Переход на метку М1 если аккумулятор равен нулю

; (D=10).

JC M1 ; Переход на метку М1 если результат D<10.

MOV R7, R4 ; Пересылка результата деления в R7.

MOV P3, #FFh ; Вывод FFh в порт Р3.

SJMP M2 ; Переход на метку М2.

M1: MOV 64h, R4 ; Пересылка результата D в ячейку 100d РПД.

SET 20h ; Установить бит 20h в РПД.

M2: ….. ……….