Ответы на вопросы (953577), страница 17
Текст из файла (страница 17)
Группа состоит из 12 команд, краткое описание которых приведено в таблице. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (/\) и ИЛИ (\/). В качестве "логического" аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Сброс переноса | CLR С | 11000011 | 1 | 1 | 1 | (C) 0 |
Сброс бита | CLR bit | 11000010 | 4 | 2 | 1 | (b) 0 |
Установка переноса | SETB С | 11010011 | 1 | 1 | 1 | (C) 1 |
Установка бита | SETB bit | 11010010 | 4 | 2 | 1 | (b) 1 |
Инверсия переноса | CPL С | 10110011 | 1 | 1 | 1 | (C) NOT(C) |
Инверсия бита | CPL bit | 10110010 | 4 | 2 | 1 | (b) NOT(b) |
Логическое И бита и переноса | ANL С, bit | 10000010 | 4 | 2 | 2 | (C) (C) AND (b) |
Логическое И инверсии бита и переноса | ANL С, /bit | 10110000 | 4 | 2 | 2 | (C) (C) AND (NOT(b)) |
Логическое ИЛИ бита и переноса | ORL С, bit | 01110010 | 4 | 2 | 2 | (C) (C) OR (b) |
Логическое ИЛИ инверсии бита и переноса | ORL С, /bit | 10100000 | 4 | 2 | 2 | (C) (C) OR (NOT(b)) |
Пересылка бита в перенос | MOV С, bit | 10100010 | 4 | 2 | 1 | (C) (b) |
Пересылка переноса в бит | MOV bit, С | 10010010 | 4 | 2 | 2 | (b) (C) |
Команды передачи управления микроконтроллера 8051.
Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм.
В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Длинный переход в полном объеме ПП | LJMP ad16 | 00000010 | 12 | 3 | 2 | (PC) ad16 |
Абсолютный переход внутри страницы в 2 Кб | AJMP ad11 | a10a9a800001 | 6 | 2 | 2 | (PC) (PC) + 2, (PC0-10) ad11 |
Короткий относительный переход внутри | SJMP rel | 10000000 | 5 | 2 | 2 | (PC) (PC) + 2, (PC) (PC) +rel |
Косвенный относительный переход | JMP @A+DPTR | 01110011 | 1 | 1 | 2 | (PC) (A) + (DPTR) |
Переход, если аккумулятор равен нулю | JZ rel | 01100000 | 5 | 2 | 2 | (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel |
Переход, если аккумулятор не равен нулю | JNZ rel | 01110000 | 5 | 2 | 2 | (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel |
Переход, если перенос равен единице | JC rel | 01000000 | 5 | 2 | 2 | (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel |
Переход, если перенос равен нулю | JNC rel | 01010000 | 5 | 2 | 2 | (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel |
Переход, если бит равен единице | JB bit, rel | 00100000 | 11 | 3 | 2 | (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel |
Переход, если бит равен нулю | JNB bit, rel | 00110000 | 11 | 3 | 2 | (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel |
Переход, если бит установлен, с последующим сбросом бита | JBC bit, rel | 00010000 | 11 | 3 | 2 | (PC) (PC) + 3, если (b)=1, |
Декремент регистра и переход, если не нуль | DJNZ Rn, rel | 11011rrr | 5 | 2 | 2 | (PC) (PC) + 2, (Rn) (Rn) - 1, если (Rn) ≠ 0, то (PC) (PC) + rel |
Декремент прямоадресуемого байта и переход, если не нуль | DJNZ ad, rel | 11010101 | 8 | 3 | 2 | (PC) (PC) + 2, (ad) (ad) - 1, |
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно | CJNE A, ad, rel | 10110101 | 8 | 3 | 2 | (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel,если (A) < (ad), то (C) 1, иначе (C) 0 |
Сравнение аккумулятора с константой и | CJNE A, #d, rel | 10110100 | 10 | 3 | 2 | (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel,если (A) < #d, то (C) 1, иначе (С) 0 |
Сравнение регистра с константой и переход, если не равно | CJNE Rn, #d, rel | 10111rrr | 10 | 3 | 2 | (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel,если (Rn) < #d, то (C) 1, иначе (С) 0 |
Сравнение байта в РПД с константой и переход, если не равно | CJNE @Ri,#d,rel | 1011011i | 10 | 3 | 2 | (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel,если ((Ri)) < #d, то (C) 1, иначе (C) 0 |
Длинный вызов подпрограммы | LCALL adl6 | 00010010 | 12 | 3 | 2 | (PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC) ad16 |
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб | ACALL ad11 | a10a9a810001 | 6 | 2 | 2 | (PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC0-10) ad11 |
Возврат из подпрограммы | RET | 00100010 | 1 | 1 | 2 | (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1 |
Возврат из подпрограммы обработки | RETI | 00110010 | 1 | 1 | 2 | (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1 |
Пустая операция | NOP | 00000000 | 1 | 1 | 1 | (PC) (PC) + 1 |
Команда безусловного перехода LJMP (L – long – длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т. е. команда обеспечивает переход в любую точку памяти программ.
Действие команды AJMP (А – absolute – абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.
В отличие от предыдущих команд, в команде SJMP (S – short – короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения reI рассматривается как число со знаком, а, следовательно, переход возможен в пределах – 128...+127 байт относительно адреса команды, следующей за командой SJMP.