Состав семейства MCS-51

Автор работы: Пользователь скрыл имя, 11 Апреля 2011 в 12:22, реферат

Краткое описание

В настоящее время среди всех 8-разрядных микроконтроллеров - семейство MCS-51 является несомненным чемпионом по количеству разновидностей и количеству компаний, выпускающих его модификации. Оно получило свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии n-МОП.

Содержимое работы - 1 файл

MSC51.doc

— 589.00 Кб (Скачать файл)

C=1           C=0 

4) Первый операнд  - неявная, второй операнд - непосредственная. 

Пример: ADD A, #38h 

Количество байт: 2

Количество циклов: 1

Действие команды:

(PC) = (PC) + 2

(A) = (A) + (date 8)

Машинный код:

0 0 1 0 0 1 0 0

i i i i i i i i 

Пример:

адрес   команда   исходный текст

0014    2564      ADD A, #38h 

Действие команды:

до команды    после команды

PC=0014       PC=0016

A=95          A=CD

C=1           C=0 

ADDC A, <байт-источник> - сложение с учетом переноса. 

Описание: складывает содержимое аккумулятора А с содержимым байта-источника, к получившемуся  результату прибавляется значение флага  переноса. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается  при переносе из 7го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника:

регистровая; 

Пример: ADDC A, R3 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) + (C) + (Rn) , n=0, : ,7 

Машинный код: 0 0 1 1 1 r r r

косвенно-регистровая; 

Пример: ADDC A, @R0 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) + (C) + ((Ri)) , i=0,1 

Машинный код: 0 0 1 1 0 1 1 i

прямая; 

Пример: ADDC A, 30h 

Количество байт: 2 

Количество циклов: 1 

Действие команды: (PC) = (PC) + 2 

(A) = (A) + (C) + (direct) 

Машинный код: 

0 0 1 1 0 1 0 1 

d d d d d d d d

непосредственная. 

Пример: ADDC A, #100 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) + (C) + (date 8) 

Машинный код: 

0 0 1 1 0 1 0 0 

i i i i i i i i 

AJMP <addr 11> - абсолютный  переход в пределах 2K-байтной  страницы. 

Описание: передает управление команде, размещенной по указанному адресу <addr 11>. Команда  увеличивает содержимое счетчика команд на 2 и затем заменяет младший байт счетчика команд на содержимое второго байта команды. Три младших бита старшего байта заменяются тремя старшими битами первого байта команды. Т.к. в команде используется 11- разрядный адрес, то адрес перехода должен начинаться в пределах той же 2K-байтной страницы памяти программ. 

Пример: AJMP 1024 

Количество байт: 2 

Количество циклов: 2 

Действие команды: 

(PC) = (PC) + 2 

(PC10-0) = адрес  метки 

Машинный код: 

a10 a9 a8 0 0 0 0 1 

a7 a6 a5 a4 a3 a2 a1 a0 

ANL <байт приемник>,<байт  источник> - команда "логическое  И" для байтовых переменных. 

Описание: выполняет  операцию побитового "логического  И" над указанными переменными и помещает результат в байт приемник. Команда не воздействует на флаги. 

Для команды ANL с  аккумулятором в качестве байта  назначения разрешены следующие  режимы адресации байта - источника:

регистровая; 

Пример: ANL A, R3 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) & (Rn) , n=0,1,2,3,4,5,6,7 

Машинный код: 0 1 0 1 1 r r r

косвенно-регистровая; 

Пример: ANL A, @R0 

Количество байт: 1 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 1 

(A) = (A) & ((Ri)) , i=0,1 

Машинный код: 0 1 0 1 0 1 1 i

прямая; 

Пример: ANL A, 30h 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) & (direct) 

Машинный код: 

0 1 0 1 0 1 0 1 

d d d d d d d d

непосредственная. 

Пример: ANL A, #100 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(A) = (A) & (date 8) 

Машинный код: 

0 1 0 1 0 1 0 0 

i i i i i i i i 

Для команды ANL с  произвольным адресом ячейки внутренней памяти данных в качестве байта назначения разрешены следующие режимы адресации  байта - источника:

прямая; 

Пример: ANL 30h,A 

Количество байт: 2 

Количество циклов: 1 

Действие команды: 

(PC) = (PC) + 2 

(direct) = (A) & (direct) 

Машинный код: 

0 1 0 1 0 0 1 0 

d d d d d d d d

непосредственная. 

Пример: ANL direct, #100 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

(direct) = (A) & (date 8) 

Машинный код: 

0 1 0 1 0 0 1 1 

d d d d d d d d 

i i i i i i i i 

Примечание: при  выполнении команды ANL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! 

ANL C,<бит источника> - "логическое И" битовой переменной и флага переноса C. 

Описание: Если бит источника равен 0, то происходит сброс флага переноса, в противном  случае флаг переноса не изменяет текущего значения. На остальные флаги команда  не воздействует.

прямая; 

Пример: ANL С, 20h 

Количество байт: 2 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 2 

(C) = (C) & (bit) 

Машинный код: 

0 1 0 1 0 0 1 0 

b b b b b b b b 

Знак '/' перед  операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, при этом сам бит источника не изменяется. 

CJNE <байт назначения>,<байт  источника>,<смещение> - сравнение  и переход, если не равно. 

Описание: сравнивает значения первых двух операндов и  выполняет переход, если операнды не равны. Если значение байта назначения без учета знака меньше байта источника без учета знака, то флаг переноса C устанавливается в '1', иначе сбрасывается в '0'. Ни один из операндов после выполнения команды не изменяется. Новое значение программного счетчика при переходе вычисляется суммирование содержимого программного счетчика со вторым операндом (третьим байтом команды). Перед выполнением суммирования в программный счетчик заносится адрес первого байта следующей команды. Суммирование производится с учетом знака третьего байта команды, представленного в дополнительном коде. 

Первые два  операнда допускают четыре вида адресации:

байт назначения - аккумулятор

прямая; 

Пример: CJNE A, 30h, 15; direct=30h, rel=15 

Количество байт: 3 

Количество циклов: 2 

Действие команды: 

(PC) = (PC) + 3 

IF (A) < > (direct) THEN 

(PC) = (PC) + rel 

IF (A) < (direct) THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 0 1 

d d d d d d d d 

R e l A d r e s

непосредственная. 

Пример: CJNE A, #100, -78; data=100, rel=-78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF (A) < > data THEN 

(PC) = (PC) + rel 

IF (A) < data THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 0 0 

i i i i i i i i 

R e l A d r e s

байт назначения - ячейка ОЗУ с косвенно-регистровой или регистровой адресацией

непосредственная  к регистровой 

Пример: CJNE R5, #100, 78; Rn=R5 data=100, rel=78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF (Rn) < > data THEN 

(PC) = (PC) + rel 

IF (Rn) < data THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 1 r r r 

i i i i i i i i 

R e l A d r e s

непосредственная  к косвенно - регистровой 

Пример: CJNE @R0, #100, 78; Ri=R0 data=100, rel=78 

Количество байт: 3 

Количество циклов: 2 

Действие команды: (PC) = (PC) + 3 

IF ((Ri)) < > data, i=0,1 THEN 

(PC) = (PC) + rel 

IF ((Ri)) < data, i=0,1 THEN 

(C) = 1 

ELSE 

(C) = 0 

Машинный код: 

1 0 1 1 0 1 1 i 

i i i i i i i i 

R e l A d r e s 

CLR A - сброс аккумулятора 

Описание: сбрасывает (записывает '0' во все биты аккумулятора). Команда не изменяет содержимое флагов. 

Информация о работе Состав семейства MCS-51