Таблица 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), выполняющие операции сложения, десятичной коррекции, инкремента/декремента байтов. Дополнительно введены команды вычитания, умножения и деления байтов.
|
|