Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Система команд мк-51






Http: //www.gaw.ru/html.cgi/txt/doc/micros/mcs51/asm/start.htm

 

СИСТЕМА КОМАНД МК-51

Система команд ОМЭВМ предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реального времени. Реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных.

Команда АСАLL < addr 11>

Команда “абсолютный вызов подпрограммы” вызывает безусловно подпрограмму, размещенную по указанному адресу. При этом счетчик команд увеличивается на 2 для получения адреса следующей команды, после чего полученное 16-битное значение РС помещается в стек(сначала следует младший байт), и содержимое указателя стека также увеличивается на 2. Адрес перехода получается с помощью конкатенации старших бит увеличенного содержимого счетчика команд, битов старшего байта команды и младшего байта команды.

 

Ассемблер: АСАLL< метка>  
Код: А10 А9 А8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0  
Время: 2 цикла  
Алгоритм:   (pc): =(pc)+2 (sp): =(sp)+1 ((sp): =(pc[7-0]) (sp): =(sp)+1 ((sp)): =(pc([15-8]) (pc[10-0]): =A10A9A8 II A7A6A5A4A3A2A1A0,     II-знак конкатенации (сцепление)
Пример: ACALL MT1 до выполнения команды ACALL: (sp)=07H метка МТ1 соответствует адресу: 0345H, то есть (pc)=0345H расположена по адресу 028DH, т.е. (рс)=028DH после выполнения команды: (sp)=09H, (pc)=0345H, ОЗУ [08]=8FH, ОЗУ[09]=02H.
       

 

Команда ADD A, < байт источник>

Эта команда складывает содержимое аккумулятора А с содержимым байта-источника, оставляя результат в аккумуляторе. При появлении переносов из разрядов 7 и3, устанавливаются флаги переноса (С) и дополнительного переноса (АС) соответственно, в противном случае эти флаги сбрасываются. При сложении целых чисел без знака флаг переноса “С” указывает на выполнение переполнения. Флаг переполнения (OV) устанавливается, если есть пернос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет - из бита 6, в противном случае флаг (OV) сбрасывается. При сложении целых чисел со знаком флаг (OV) указывает на отрицательную величину, полученную при суммировании двух положительных операндов или на положительную сумму для двух отрицательных операндов.

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

1) регистровый;

2) косвенно-регистровый;

3) прямой;

4) непосредственный.

 

1) Ассемблер: ADD A., Rn n=0-7
Код: 0 0 1 0 1 r r r r r r =000-111
Время: 1 цикл  
Алгоритм:     Пример: (A): =(A)+(Rn), C: =X, OV: =X, AC: =X   ADD A, R6   n=0-7 X=(0 или 1) (A)=C3H, R6=AAH (A)=6DH, (R6)=AAH, (AC)=0 (C)=1, (OV)=1
2) Ассемблер ADD A, @Ri i=0, 1
Код: 0 0 1 0 0 1 1 i i=0, 1
Время: 1 цикл  
Алгоритм:   Пример:   (A): =(A)+((Ri)), C: =X, OV: =X, AC: =X,     ADD A, @R1 i=0, 1 X=0 или 1 (A)=95H, (R1)=31H, (ОЗУ[31])=4CH (A)=E1H, (ОЗУ[31])=4CH, (C)=0, (OV)=0, (AC)=1
3) Ассемблер: ADD A, < direct>  
Код: 0 0 1 0 0 1 0 1 direct address
Время: 1 цикл  
Алгоритм:   Пример: (A): =(A)+(direct) C: =X, OV: =X, AC: =X   ADD A, 90H   X=0 или 1 (A)=77H, (ОЗУ[90])=FFH, (A)=76H, (ОЗУ[90])=FFH, (C)=1, (OV)=0, (AC)=1
4) Ассемблер: ADD A, < #data>  
Код: 0 0 1 0 0 1 0 0 #data
Время: 1 цикл  
Алгоритм:   Пример: (A): =(A)+#data C: =X, OV: =X, AC: =X   ADD A, #0D3H   X=0 или 1 (A)=09H, (A)=DCH, (C)=0, (OV)=0, (AC)=0

 

Команда ADDC A, < байт-источник>

Эта команда (“сложение с переносом”) одновременно складывает содержимое байта-источника, флаг переноса и содержимое аккумулятора А, оставляя результат в аккумуляторе. При этом флаги переноса и дополнительного переноса устанавливаются, если есть перенос из бита 7 или бита 3, и сбрасывается в противном случае. При сложении целых чисел без знака флаг переноса указывает на переполнение. Флаг переполнения (OV) устанавливается если имеется перенос бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет -из бита 6, в противном случае (OV) сбрасывается. При сложении целых чисел со знаком (OV) указывает на отрицательную величину, полученную при суммировании двух положительных операндов или на положительную сумму от двух отрицательных операндов.

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

1) регистровый;

2) косвенно-регистровый;

3) прямой;

4) непосредственный.

5)

1) Ассемблер: ADDС A., Rn n=0-7
Код: 0 0 1 1 1 r r r r r r =000-111
Время: 1 цикл  
Алгоритм:   Пример: (A): =(A)+(Rn)+(С), C: =X, OV: =X, AC: =X     ADDС A, R3   n=0-7 X=(0 или 1) (A)=B2H, R3=99H, (C)=1 (A)=4CH, (R3)=99H, (AC)=0 (C)=1, (OV)=1
2) Ассемблер ADDC A, @Ri i=0, 1
Код: 0 0 1 1 0 1 1 i i=0, 1
Время: 1 цикл  
Алгоритм:   Пример:   (A): =(A)+((Ri))+(C), C: =X, OV: =X, AC: =X,   ADDC A, @R0 i=0, 1 X=0 или 1 (A)=D5H, (R0)=3AH, (ОЗУ[3A])=1AH, (C)=1 (A)=F0H, (ОЗУ[3A])=1AH, (C)=0, (OV)=0, (AC)=1
3) Ассемблер: ADDC A, < direct>  
Код: 0 0 1 1 0 1 0 1 direct address
Время: 1 цикл  
Алгоритм:   Пример: (A): =(A)+(direct)+(C) C: =X, OV: =X, AC: =X   ADDC A, 80H   X=0 или 1 (A)=11H, (ОЗУ[80])=DFH, (C)=1 (A)=F1H, (C)=1, (OV)=0, (AC)=1
4) Ассемблер: ADDC A, < #data>  
Код: 0 0 1 1 0 1 0 0 #data
Время: 1 цикл  
Алгоритм:   Пример: (A): =(A)+(direct)+(C) C: =X, OV: =X, AC: =X   ADDC A, #55H   X=0 или 1 (A)=55H, (C)=1 (A)=AAH, (C)=0, (OV)=1, (AC)=0

 

Команда AJMP < addr11>

Команда “абсолютный переход.” передает управление по указанному адресу, который получается при конкатенации пяти старших бит счетчика команд PC (после увеличения его на два), 7-5 битов кода операции и второго байта команды. Адрес перехода должен находится внутри одной страницы объемом 2 Кбайт памяти программы, определяемой пятью старшими битами счетчика команд.

 

Ассемблер AJMP < метка>  
Код А10 А9 А8 0 0 0 0 1 А7 А6 А5 А4 А3 А2 А1 А0  
Время 2 Цикла  
Пример: AJMP MT2 (PC)=028FH Метке МТ2 соответствует адрес 034АН (PC)=034AH

 

Команда ANL < байт назначения>, < байт источник>

Команда логическое “И” для переменных-байтов выполняют операцию логическое и над битами указанных переменных и помещает результат в байт назначения. Эта операция не влияет на состояние флагов.

Два операнда обеспечивают следующие комбинации шести режимов адресации:

· Байтом назначения является аккумулятор (А):

1) Регистровый;

2) Прямой;

3) Косвенно-регистровый;

4) Непосредственный;

· Байтом назначения является прямой адрес (Direct):

5) Прямой аккумуляторный;

6) Непосредственный (Байт-источник равен константе).

 

1) Ассемблер: ANL A, Rn где n=0-7
Код 01011 rrr где rrr=000-111
Время 1 цикл  
Пример   (A)=FEH, (R2)=C5H
  ANL A, R2 (A)=C4H, (R2)=C5H
2) Ассемблер: ANL A, < direct>  
Код 01010101 direct adres  
Время 1 цикл  
Пример   (A)=A3H, (PSW)=86H
  ANL A, PSW (A)=82H, (PSW)=86H
3) Ассемблер ANL A, @Ri где i=0, 1  
Код   где i=0, 1
Время 1 Цикл  
Пример ANL a, @R0 (A)=BCH, (ОЗУ[35])=47H, (R0)=35H (A)=04H, (ОЗУ[35])=47H
4) Ассемблер ANL A, #data  
Код 01010100 #data8  
Время 1 цикл  
Пример   (A)=36H
  ANL A, #0DDH (A)=14H
5) Ассемблер ANL < direct>, A  
Код 0 1 0 1 0 0 1 0 DIRECT ADDRESS
Время 1 цикл  
Пример   ANL P2, A (A)=55H, (P2)=AAh (P2)=00h, A=55h
6) Ассемблер ANL < direct>, #data  
Код 0 1 0 1 0 0 1 1 direct adress #data8
Время 2 цикла  
Пример   ANL P1, #73h (P1)=FFh (P1)=73h

Примечание. Если команда ANL применяется для изменения содержимого порта, то значение, используемое в качестве данных порта, будет считываться из “Защелки” порта, а не с выводов БИС.

Команда ANL C, < бит источника>

Команда “логическое “И” для переменных-битов”, выполняет операцию логического “И” над указанными битами. Если бит-источник равен " 0", то происходит сброс флага переноса, в противном случае флаг переноса не изменяет текущего значения. " /" перед операндом в языке ассемблера указывает на то, что в качестве значения используется логическое отрицание адресуемого бита, однако сам бит источника при этом не изменяется. На другие флаги эта команда не влияет.

Для операнда-источника разрешена только прямая адресация к битам.

 

1) Ассемблер: ANL C, < bit>  
Код:   bit address
Время: 2 цикла  
Пример:   ; (С)=1, P1[0]=0
  ANL C, P1.0 ; (C)=0, P1[0]=0
2) Ассемблер: ANL C, < /bit>  
Код:   bit address
Время: 2 цикла  
Пример:   ; (С)=1, (AC)=0
  ANL C, /AC ; (С)=1, (AC)=0

 

Команда CJNE < байт назначения>, < байт источник>, < смещение>

Команда " сравнение и переход, если не равно" сравнивает значения первых двух операндов и выполняет ветвление, если операнды не равны. Адрес перехода (ветвления) вычисляется при помощи сложения значения (со знаком), указанного в последнем байте команды, с содержимым счетчика команд после увеличения его на три.

Флаг переноса " С" устанавливается в " 1", если значение целого без знака < байта назначения> меньше, чем значение целого без знака < байта источника>, в противном случае перенос сбрасывается (если значения операндов равны, флаг переноса сбрасывается). Эта команда не оказывает влияния на операнды.

Операнды, стоящие в команде, обеспечивают комбинации четырех режимов адресации:

— если байтом назначения является аккумулятор:

1) прямой

2) непосредственный,

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

3) непосредственный к регистровому

4) непосредственный к косвенно-регистровому

 

1) Ассемблер: CJNE A, < direct>, метка>  
Код:   direct address rel8
Время: 2 цикла  
Пример:   ; (A)=97h, (P2)=F0h, (C)=0
    MT3: CJNE A, P2, MT3 ...................... CLR A     ; (A)=97h, (P2)=F0h, (C)=1 ; Адрес, соответствующий метке МТ3 вычисляется, как ; (PC): =(PC)+3+(rel8)
2) Ассемблер: CJNE A, #data, < метка>  
Код:   #data8 rel8
Время: 2 цикла  
Пример:   ; (A)=FCh, C=1
  CJNE A, #0BFh, MT4  
  MT4: ........................ INC A   ; (A)=FDh, C=0 ; (PC): =(PC)+3+(rel8)
3) Ассемблер: CJNE Rn, #data, < метка> ; где n=0–7
Код: 10111 rrr #data8 rel8
Время: 2 цикла  
Пример:   ; (R7)=80H, (C)=0
  CJNE A, #81h, MT5  
  MT5: ........................ NOP   ; (R7)=80H, (C)=1, ; (PC): =(PC)+3+(rel8)
4) Ассемблер: CJNE @Ri, #data, < метка> ; где i=0, 1
Код: 1011011i #data8 rel8
Время: 2 цикла  
Пример:   ; (R0)=41h, (C)=1, (ОЗУ[41])=57h
  CJNE @R0, #29, MT6  
  ...  
MT6: DEC R0   ; (ОЗУ[41])=57H, (C)=0 ; (PC): =(PC)+3+(rel8)

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.