Блок регистров специальных функций
Символ | Наименование | Адрес |
*ACC | Аккумулятор | 0E0H |
* B | Регистр-расширитель аккумулятора | 0F0H |
* PSW | Слово состояния программы | 0D0H |
SP | Регистр-указатель стека | 81H |
DPTR | Регистр-указатель данных (DPH) (DPL) | 83H |
82H | ||
* P0 | Порт 0 | 80H |
* P1 | Порт 1 | 90H |
* P2 | Порт 2 | 0A0H |
* P3 | Порт 3 | 0B0H |
* IP | Регистр приоритетов | 0B8H |
* IE | Регистр маски прерываний | 0A8H |
TMOD | Регистр режима таймера/счетчика | 89H |
* TCON | Регистр управления/статус таймера | 88H |
TH0 | Таймер 0 (старший байт) | 8CH |
TL0 | Таймер 0 (младший байт) | 8AH |
TH1 | Таймер 1 (старший байт) | 8DH |
TL1 | Таймер 1 (младший байт) | 8BH |
* SCON | Регистр управления приемопередатчиком | 98H |
SBUF | Буфер приемопередатчика | 99H |
PCON | Регистр управления мощностью | 87H |
Примечание. Регистры, имена которых отмечены знаком (*), допускают адресацию отдельных бит. |
Формат слова состояния программы (ССП)
Символ | Позиция | Имя и назначение | ||
C | PSW.7 | Флаг переноса. Устанавливается и сбрасывается аппаратурными средствами или программой при выполнении арифметических и логических операций | ||
AC | PSW.6 | Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратурными средствами при выполнении команд сложения и вычитания и сигнализирует о переносе или заем в бите 3 | ||
F0 | PSW.5 | Флаг 0. Может быть установлен, сброшен или проверен программой как флаг, специфицируемый пользователем | ||
RS1 RS0 | PSW.4 PSW.3 | Выбор банка регистров. Устанавливается и сбрасывается программой для выбора рабочего банка регистров (см. примечание) | ||
OV | PSW.2 | Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций | ||
_ | PSW.1 | Не используется | ||
P | PSW.0 | Флаг паритета. Устанавливается и сбрасывается аппаратуры в каждом цикле команды и фиксирует нечетное/четное число единичных бит в аккумуляторе, т.е. выполняет контроль по четности | ||
Примечание. | RS1 | RS0 | Банк | Границы адресов |
00H-07H | ||||
08H-0FH | ||||
10H-17H | ||||
18H-1FH |
Группа команд передачи данных
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Пересылка в аккумулятор из регистра (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) |
Группа команд арифметических операций
Название команды | Мнемокод | КОП | Т | Б | Ц | Операция |
Сложение аккумулятора с регистром (n = 0 - 7) | ADD A, Rn | 00101rrr | (A) = (A) + (Rn) | |||
Сложение аккумулятора с прямоадресуемым байтом | ADD A, ad | (A) = (A) + (ad) | ||||
Сложение аккумулятора с байтом из РПД (i = 0, 1) | ADD A, @Ri | 0010011i | (A) = (A) + ((Ri)) | |||
Сложение аккумулятора с константой | ADD A, #d | (A) = (A) + #d | ||||
Сложение аккумулятора с регистром и переносом | ADDC A, Rn | 00111rrr | (A) = (A) + (Rn) + (C) | |||
Сложение аккумулятора с прямоадресуемым байтом и переносом | ADDC A, ad | (A) = (A) + (ad) + (C) | ||||
Сложение аккумулятора с байтом из РПД и переносом | ADDC A, @Ri | 0011011i | (A) = (A) + ((Ri)) + (C) | |||
Сложение аккумулятора с константой и переносом | ADDC A, #d | (A) = (A) + #d + (C) | ||||
Десятичная коррекция аккумулятора | DA A | Если (A0-3) > 9 \/ ((AC) = 1), то (A0-3) = (A0-3) + 6, затем если (A4-7) > 9 \/ ((C) = 1), то (A4-7) = (A4-7) + 6 | ||||
Вычитание из аккумулятора регистра и заема | SUBB A, Rn | 10011rrr | (A) = (A) - (C) - (Rn) | |||
Вычитание из аккумулятора прямоадресуемого байта и заема | SUBB A, ad | (A) = (A) - (C) - ((ad)) | ||||
Вычитание из аккумулятора байта РПД и заема | SUBB A, @Ri | 1001011i | (A) = (A) - (C) - ((Ri)) | |||
Вычитание из аккумулятора константы и заема | SUBB A, #d | (A) = (A) - (C) - #d | ||||
Инкремент аккумулятора | INC A | (A) = (A) + 1 | ||||
Инкремент регистра | INC Rn | 00001rrr | (Rn) = (Rn) + 1 | |||
Инкремент прямоадресуемого байта | INC ad | (ad) = (ad) + 1 | ||||
Инкремент байта в РПД | INC @Ri | 0000011i | ((Ri)) = ((Ri)) +1 | |||
Инкремент указателя данных | INC DPTR | (DPTR) = (DPTR) + 1 | ||||
Декремент аккумулятора | DEC A | (A) = (A) - 1 | ||||
Декремент регистра | DEC Rn | 00011rrr | (Rn) = (Rn) - 1 | |||
Декремент прямоадресуемого байта | DEC ad | (ad) = (ad) - 1 | ||||
Декремент байта в РПД | DEC @Ri | 0001011i | ((Ri)) = ((Ri)) -1 | |||
Умножение аккумуллятора на регистр B | MUL AB | (B)(A) = (A)*(B) | ||||
Деление аккумулятора на регистр B | DIV AB | (A).(B) = (A)/(B) |