Группа команд арифметических операций

Таблица 2. Группа команд передачи данных

Группа команд пересылки данных

Таблица 1. Команды, модифицирующие флаги результата

Команды Флаги   Команды Флаги
ADD C, OV, AC CLR C C = 0
ADDC C, OV, AC CPL C C = ¬C
SUBB C, OV, AC ANL C, b C
MUL C = 0, OV ANL C, /b C
DIV C = 0, OV ORL C, b C
DA C ORL C, /b C
RRC C MOV C, b C
RLC C CJNE C
SETB C C = 1    

Большую часть команд данной группы (табл. 2) составляют команды передачи и обмена байтов. Команды пересылки бит представлены в группе команд битовых операций. Все команды данной группы не модифицируют флаги результата, за исключением команд загрузки PSW и аккумулятора (флаг паритета).

Аккумулятор. Обращение к аккумулятору может быть выполнено в MCS-51 с использованием неявной и прямой адресации. В зависимости от способа адресации аккумулятора применяется одно из символических имен: A или ACC (прямой адрес). При прямой адресации обращение к аккумулятору производится как к одному из SFR, и его адрес указывается во втором байте команды.

Использование неявной адресации аккумулятора предпочтительнее, однако не всегда возможно, например при обращении к отдельным битам аккумулятора.

Обращение к внешней памяти данных. При использовании команд

MOVX @Ri обеспечивается доступ к 256 байтам внешней памяти данных.

Существует также режим обращения к расширенной ВПД, когда для доступа используется 16-битный адрес, хранящийся в ретистре-указателе данных (DPTR). Команды MOVX @DPTR обеспечивают доступ к 65 536 байтам ВПД.

Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор из регистра (n = 0 - 7) MOV A, Rn 11101rrr       (A) = (Rn)
Пересылка в аккумулятор прямоадресуемого байта MOV A, ad         (A) = (ad)
Пересылка в аккумулятор байта из РДП (i = 0, 1) MOV A, @Ri 1110011i       (A) = ((Ri))
Загрузка в аккумулятор константы MOV A, #d         (A) = #d
Пересылка в регистр из аккумулятора MOV Rn, A 11111rrr       (Rn) = (A)
Пересылка в регистр прямоадресуемого байта MOV Rn, ad 10101rrr       (Rn) = (ad)
Загрузка в регистр константы MOV Rn, #d 01111rrr       (Rn) = #d
Пересылка по прямому адресу аккумулятора MOV ad, A         (ad) = (A)
Пересылка по прямому адресу регистра MOV ad, Rn 10001rrr       (ad) = (Rn)
Пересылка прямоадресуемого байта по прямому адресу MOV add, ads         (add) = (ads)
Пересылка байта из РДП по прямому адресу MOV ad, @Ri 1000011i       (ad) = ((Ri))
Пересылка по прямому адресу константы MOV ad, #d         (ad) = #d
Пересылка в РДП из аккумулятора MOV @Ri, A 1111011i       ((Ri)) = (A)
Пересылка в РДП прямоадресуемого байта MOV @Ri, ad 0110011i       ((Ri)) = (ad)
Пересылка в РДП константы MOV @Ri, #d 0111011i       ((Ri)) = #d
Загрузка указателя данных MOV DPTR, #d16         (DPTR) = #d16
Пересылка в аккумулятор байта из ПП MOVC A, @A + DPTR         (A) = ((A) + (DPTR))
Пересылка в аккумулятор байта из ПП MOVC A, @A + PC         (PC) = (PC) + 1 (A) = ((A) + (PC))
Пересылка в аккумулятор байта из ВПД MOVX A, @Ri 1110001i       (A) = ((Ri))
Пересылка в аккумулятор байта из расширенной ВПД MOVX A, @DPTR         (A) = ((DPTR))
Пересылка в ВПД из аккумулятора MOVX @Ri, A 1111001i       ((Ri)) = (A)
Пересылка в расширенную ВПД из аккумулятора MOVX @DPTR, A         ((DPTR)) = (A)
Загрузка в стек PUSH ad         (SP) = (SP) + 1 ((SP)) = (ad)
Извлечение из стека POP ad         (ad) = (SP) (SP) = (SP) - 1
Обмен аккумулятора с регистром XCH A, Rn 11001rrr       (A) <-> (Rn)
Обмен аккумулятора с прямоадресуемым байтом XCH A, ad         (A) <-> (ad)
Обмен аккумулятора с байтом из РДП XCH A, @Ri 1100011i       (A) <-> ((Ri))
Обмен младшей тетрады аккумулятора с младшей тетрадой байта РДП XCHD A, @Ri 1101011i       (A0-3) <-> ((Ri) 0-3)

Данную группу образуют 24 команды (табл.3), выполняющие операции сложения, десятичной коррекции, инкремента/декремента байтов. Дополнительно введены команды вычитания, умножения и деления байтов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: