Студопедия — Команды пересылки данных
Студопедия Главная Случайная страница Обратная связь

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

Команды пересылки данных






 

Эта группа представлена 28 командами, их краткое описание приведено в табл. 19, где также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Основная команда группы MOV (Mov e – перемещение) осуществляет пересылку данных в пределах адресного пространства РПД и РСФ, с различными способами адресации, и команды MOVX (чтение/запись байта из внешней памяти данных) и MOVC (чтение байт из памяти программ). На рис.52 показаны варианты пересылки данных между различными сегментами адресного пространства МК51 с учетом всех способов адресации, которые отражены в табл. 19 [5].

 

Рис. 52 Граф перемещения данных в пределах адресного пространства МК51

 

Как видно, центральное место занимает аккумулятор А, на который замыкается большинство пересылок данных, хотя некоторые из пересылок осуществляются и без участия аккумулятора. Большинство пересылок двухсторонние, т.е. в поле операнда можно менять местами операнд приемник и операнд источник данных. Исключение составляют пересылка непосредственного операнда и чтение данных из памяти программ.

Команда XCH (E xch ange - обмен) используется для обмена операндами между аккумулятором и ячейкой РПД с различными вариантами адресации, а команда XCHD – обмен младшими тетрадами (биты 0 – 3) с косвенной адресацией.

 

Таблица 19

Название команды Мнемокод КОП Т Б Ц Операция
Пересылка в аккумулятор из регистра (n=0÷7) MOV A, Rn E8 - EF       (A) (Rn)
Пересылка в аккумулятор прямо-адресуемого байта MOV A, ad E5       (A) (ad)
Пересылка в аккумулятор байта из РПД (i=0,1) MOV A, @Ri E6 - E7       (A) ((Ri))
Загрузка в аккумулятор константы MOV A, #d         (A) #d
Пересылка в регистр из аккумулятора MOV Rn, A F8 – FF       (Rn) (A)
Пересылка в регистр прямо-адресуемого байта MOV Rn, ad A8 – AF       (Rn) (ad)
Загрузка в регистр константы MOV Rn, #d 78 – 7F       (Rn) #d
Пересылка по прямому адресу аккумулятора MOV ad, A F5       (ad) (A)
Пересылка по прямому адресу регистра MOV ad, Rn 88 – 8F       (ad) (Rn)
Пересылка прямоадресуемого байта по прямому адресу MOV add, ads         (add) (ads)
Пересылка байта из РПД по прямому адресу MOV ad, @Ri 86 – 87       (ad) ((Ri))
Пересылка по прямому адресу константы MOV ad, #d         (ad) #d
Пересылка в РПД из аккумулятора MOV @Ri, A F6 – F7       ((Ri)) (A)
Пересылка в РПД прямо-адресуемого байта MOV @Ri, ad 66 – 67       ((Ri)) (ad)
Пересылка в РПД константы MOV @Ri, #d 76 – 77       ((Ri)) #d
Загрузка указателя данных MOV DPTR, #d16         (DPTR) #d16
Пересылка в аккумулятор байта из ПП MOVC A, @A+DPTR         ((A) +(DPTR))

Продолжение табл.19

Пересылка в аккумулятор байта из ПП MOVC A, @A+PC         (PC) (PC)+1, (A) ((A)+(PC))
Пересылка в аккумулятор байта из ВПД MOVX A, @Ri E2 – E3       (A) ((Ri))
Пересылка в аккумулятор байта из расширенной ВПД MOVX A,@DPTR E0       (A) ((DPTR))
Пересылка в ВПД из аккумулятора MOVX @Ri, A F2 – F3       ((Ri)) (A)
Пересылка в расширенную ВПД из аккумулятора MOVX @DPTR,A F0       ((DPTR)) (A)
Загрузка в стек PUSH ad C0       (SP) (SP) + 1, ((SP)) (ad)
Извлечение из стека POP ad D0       (ad) (SP), (SP) (SP) - 1
Обмен аккумулятора с регистром XCH A, Rn C8 – CF       (A) ↔ (Rn)
Обмен аккумулятора с прямо-адресуемым байтом XCH A, ad C5       (A) ↔ (ad)
Обмен аккумулятора с байтом из РПД XCH A, @Ri C6 –C7       (A) ↔ ((Ri))
Обмен младших тетрад аккумулятора и байта РПД XCHD A, @Ri D6 – D7       (A0…3) ↔((Ri)0…3)

 

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека.

Группа команд - пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой

MOV A, PSW, которая преобразуется ассемблером к виду

MOV А, 0D0h (E5 D0),где Е5 – код операции, а D0 – операнд (адрес PSW).

Кроме того, следует отметить, что в микроЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации:

А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

4.2.4.2. Команды арифметических операций

 

В данную группу входят 24 команды, краткое описание которых приведено в табл. 20. Из нее следует, что микро-ЭВМ выполняет достаточно широкий набор команд для организации обработки целочисленных данных, включая команды умножения и деления. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

 

Таблица 20

Название команды Мнемокод КОП Т Б Ц Операция
Сложение аккумулятора с регистром (n=0÷7) ADD A, Rn 28 – 2F       (A) (A) + (Rn)
Сложение аккумулятора с прямо- адресуемым байтом ADD A, ad         (A) (A) + (ad)
Сложение аккумулятора с байтом из РПД (i = 0,1) ADD A, @Ri 26 –27       (A) (A) + ((Ri))
Сложение аккумулятора с константой ADD A, #d         (A) (A) + #d
Сложение аккумулятора с регистром и переносом ADDC A, Rn 38 – 3F       (A) (A) + (Rn) + (C)
Сложение аккумулятора с прямо-адресуемым байтом и переносом ADDC A, ad         (A) (A) + (ad) + (C)
Сложение аккумулятора с байтом из РПД и переносом ADDC A, @Ri 36 – 37       (A) (A) + ((Ri)) + (C)
Сложение аккумулятора с константой и переносом ADDC A, #d         (A) (A) + # d + (C)
Вычитание из аккумулятора регистра и займа SUBB A, Rn 98 – 9F       (A) (A) - (C) - (Rn)
Вычитание из аккумулятора прямо-адресуемого байта и займа SUBB A, ad         (A) (A) - (C) - ((ad))
Вычитание из аккумулятора байта РПД и займа SUBB А, @Ri 96 –97       (A) (A) - (C) - ((Ri))
Вычитание из аккумулятора константы и займа SUBB А,#d         (A) (A) - (C) - #d
Инкремент аккумулятора INC А         (A) (A) + 1
Инкремент регистра INC Rn 08 – 0F       (Rn) (Rn) + 1
Инкремент прямоадресуемого байта INC ad         (ad) (ad) + 1
Инкремент байта в РПД INC @Ri 06- 07       ((Ri)) ((Ri)) + 1
Инкремент указателя данных INC DPTR A3       (DPTR) (DPTR) + 1
Декремент аккумулятора DEC A         (A) (A) – 1
Декремент регистра DEC Rn 18 – 1F       (Rn) (Rn) – 1
Декремент прямоадресуемого байта DEC ad         (ad) (ad) – 1

Продолжение табл.20

Декремент байта в РПД DEC @Ri 16 – 17       ((Ri)) ((Ri)) - 1
Умножение аккумулятора на регистр В MUL AB A4       (B)(A) (A)×(В)
Деление аккумулятора на регистр В DIV AB         (B).(A) (A)/(В)
Десятичная коррекция аккумулятора DA A D4       Если (А0…3)>9 или ((AC)=1),то(А0…3) (А0…З) + 6, затем если (А4…7) >9 или ((С)=1), то (А4…7) (А4…7)+ 6

 

Команда ADD (Add ition - добавление) выполняет сложение двух операндов (один из операндов находится в аккумуляторе, а второй адресуется разными способами) без учета бита переноса С в предыдущей операции, команда ADDC (Add ition with C arry) – с учетом бита переноса С.

Команда SUBB (Sub straction with B orrow – вычитание c займом) осуществляет вычитание из операнда в аккумуляторе второго операнда с разными способами адресации, с учетом займа.

Результат операций сложения и вычитания остается в аккумуляторе.

Команда INC (Inc rement – увеличение на единицу) осуществляет операцию инкремента операнда, представленного различными вариантами адресации.

Команда DEC (Dec rement – уменьшение на единицу) осуществляет операцию декремента операнда, представленного различными вариантами адресации.

Операции INC и DEC применимы к аккумулятору, прямоадресуемому регистру, прямо- или косвенно адресуемой ячейке памяти. Кроме того, операция INC применима к содержимому 16- разрядного регистра указателя DPTR.

Команда MUL (Mul tiply - умножение) осуществляет операцию умножения двух операндов, один из которых находится в аккумуляторе А, а второй - в регистре В. Результат перемножения представляет двухбайтовый операнд, старший байт которого находится в регистре В, младший – в регистре А: (B)(A) (A)×(В).

Команда DIV (Div ide - деление) осуществляет операцию умножения двух операндов, один из которых находится в аккумуляторе А, а второй в регистре В. Результат перемножения представляет двухбайтовый операнд, старший байт которого находится в регистре А, младший – в регистре В: (B)(A) (A)/(В).

Команда DA (D ecimal correction of the A ccumulator) – десятичная коррекция аккумулятора осуществляет десятичную коррекцию операнда в аккумуляторе, при преобразовании двоичных данных в двоично-десятичные.

 

4.2.4.3. Команды логических операций

 

В группе 25 команд, их краткое описание приведено в табл. 21. Данные команды позволяют выполнить операции над операндами: логическое И (/\), логическое ИЛИ (\/), исключающее ИЛИ ((+)), инверсию (NOT), сброс в нулевое значение и сдвиг. В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица 21

Название команды Мнемокод КОП Т Б Ц Операция
Логическое И аккумулятора и регистра ANL A, Rn 58 – 5F       (A) (A) AND (Rn)
Логическое И аккумулятора и прямоадресуемого байта ANL A, ad         (A) (A) AND (ad)
Логическое И аккумулятора и байта из РПД ANL A, @Ri 56 – 57       (A) (A) AND ((Ri))
Логическое И аккумулятора и константы ANL A, #d         (A) (A) AND #d
Логическое И прямоадресуемого байта и аккумулятора ANL ad, A         (ad) (ad) AND (A)
Логическое И прямо-адресуемого байта и константы ANL ad, #d         (ad) (ad) AND #d
Логическое ИЛИ аккумулятора и регистра ORL A, Rn 48 – 4F       (A) (A) OR (Rn)
Логическое ИЛИ аккумулятора и прямо-адресуемого байта ORL A, ad         (A) (A) OR (ad)
Логическое ИЛИ аккумулятора и байта из РПД ORL A, @Ri 46 – 47       (A) (A) OR ((Ri))
Логическое ИЛИ аккумулятора и константы ORL A, #d         (A) (A) OR #d
Логическое ИЛИ прямоадресу- емого байта и аккумулятора ORL ad, A         (ad) (ad) OR (A)
Логическое ИЛИ прямо-адресуемого байта и константы ORL ad, #d         (ad) (ad) OR #d
Исключающее ИЛИ аккумулятора и регистра XRL A, Rn 68 – 6F       (A) (A) XOR (Rn)
Исключающее ИЛИ аккумулятора и прямоадресуемого байта XRL A, ad         (A) (A) XOR (ad)
Исключающее ИЛИ аккумулятора и байта из РПД XRL A, @Ri 66 – 67       (A) (A) XOR ((Ri))

Продолжение табл.21

Исключающее ИЛИ аккумулятора и константы XRL A, #d         (A) (A) XOR #d
Исключающее ИЛИ прямо-адресуемого байта и аккумулятора XRL ad, A         (ad) (ad) XOR (A)
Исключающее ИЛИ прямо-адресуемого байта и константы XRL ad, #d         (ad) (ad) XOR #d
Сброс аккумулятора CLR A E4       (A) 0
Инверсия аккумулятора CPL A F4       (A) NOT(A)
Сдвиг аккумулятора влево циклический RL A         (An+1) (An), n=0÷6, (A0) (A7)    
Сдвиг аккумулятора влево через перенос RLC A         (An+1) (An), n=0÷6 (A0) (C), (C) (A7)
Сдвиг аккумулятора вправо циклический RR A         (An) (An+1), n=0÷6, (A7) (A0)
Сдвиг аккумулятора вправо через перенос RRC A         (An) (An+1), n=0÷6 (A7) (C), (C) (A0)
Обмен местами тетрад в аккумуляторе SWAP A C4       (A0…3) ↔ (A4…7)

 

Команда ANL (AN D L ogic – логическое И) выполняет операцию логического умножения двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.

Команда ORL (OR L ogic – логическое ИЛИ) выполняет операцию логического сложения двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.

Команда XRLx clusive O R L ogic – исключительное ИЛИ) выполняет операцию логического сложения по модулю два (исключающее ИЛИ) двух операндов, один из которых находится в аккумуляторе, второй представлен различными вариантами адресации.

Операции ANL, ORL, XRL выполняются побитно, т.е.над двумя битами с одинаковыми индексами двух операндов, например:

Результат этих операций остается в аккумуляторе либо по прямому адресу первого операнда.

Команда RR (R otate to R ight - сдвиг вправо) - осуществляет сдвиг содержимого аккумулятора на один разряд вправо, при этом сдвигаемый младший бит D0 занимает место старшего бита D7 (рис.53, а).

Команда RL (R otate to L eft - сдвиг влево) - осуществляет сдвиг содержимого аккумулятора на один разряд влево, при этом сдвигаемый старший бит D7 занимает место младшего бита D0 (рис.53, б).

Рис.53. Сдвиг содержимого аккумулятора вправо (а) и влево (б)

 

Команда RRC (R otate to R ight through C arry – сдвиг вправо через перенос) - осуществляет сдвиг содержимого аккумулятора на один разряд вправо через перенос, при этом сдвигаемый младший бит D0 занимает место бита переноса СY, а бит переноса СY занимает место старшего бита D7 (рис.54, а).

Команда RLC (R otate to L eft through C arry – сдвиг влево через перенос) - осуществляет сдвиг содержимого аккумулятора на один разряд влево через перенос, при этом сдвигаемый старший бит D7 занимает место бита переноса СY, а бит переноса СY занимает место младшего бита D0 (рис.54, б).

 

Рис.54. Сдвиг содержимого аккумулятора через перенос

вправо (а) и влево (б)

 

Команда CLR (Cl ea r ing - очистка) – очистка аккумулятора (сброс битов аккумулятора в ноль).

Команда CPL (C om pl ement - дополнение) - выполняет инверсию битов аккумулятора (дополнение к предыдущему значению).

Команда SWAP (SWAP - обменивать) - меняет местами старшую и младшую тетрады байта в аккумуляторе, эта команда может интерпретироваться как циклический сдвиг байта на четыре разряда.

 

4.2.4.4. Команды операций над битами

 

Группа состоит из 12 команд, краткое описание которых приведено в табл. 22. Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (/\) и ИЛИ (\/). В таблице также указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица 22

Название команды Мнемокод КОП Т Б Ц Операция
Сброс переноса CLR С C3       (C) 0
Сброс бита CLR bit C2       (b) 0
Установка переноса SETB С D3       (C) 1
Установка бита SETB bit D2       (b) 1
Инверсия переноса CPL С B3       (C) NOT(C)
Инверсия бита CPL bit B2       (b) NOT(b)
Логическое И бита и переноса ANL С, bit         (C) (C) AND (b)
Логическое И инверсии бита и переноса ANL С, /bit B0       (C) (C) AND (NOT(b))
Логическое ИЛИ бита и переноса ORL С, bit         (C) (C) OR (b)
Логическое ИЛИ инверсии бита и переноса ORL С, /bit A0       (C) (C) OR (NOT(b))
Пересылка бита в перенос MOV С, bit A2       (C) (b)
Пересылка переноса в бит MOV bit, С         (b) (C)

 

В качестве "логического" аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С

(разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие прямую адресацию отдельных бит.

Команда CLR (Cl ea r ing - очистка) – обнуляет значение бита.

Команда CPL (C om pl ement - дополнение) – осуществляет инверсию значения бита (дополнение к предыдущему значению).

Команда SETB (Set B it – установить бит) – осуществляет установку значения бита в состояние лог.1.

Команда ANL (AN D L ogic – логическое И) выполняет операции логического умножения двух битов.

Команда ORL (OR L ogic – логическое ИЛИ) выполняет операцию логического сложения двух битов.

Команды ANL и ORL в качестве первого операнда используют битовый аккумулятор С, в качестве второго – прямоадресуемый бит.

Команда MOV производит пересылку прямоадресуемого бита в битовый аккумулятор С и обратно.

 

4.2.4.5. Команды передачи управления

 

Группа представлена командами безусловного и условного переходов, командами вызова подпрограмм и командами возврата из подпрограмм (табл.23). В таблице указаны тип команды (Т) в соответствии с таблицей, ее длина в байтах (Б) и время выполнения в машинных циклах (Ц).

Таблица 23

Название команды Мнемокод КОП Т Б Ц Операция
Длинный переход в полном объеме ПП LJMP ad16         (PC) ad16
Абсолютный переход внутри страницы в 2 Кб AJMP ad11 A10a9a8       (PC) (PC) + 2, (PC0-10) ad11
Короткий относительный переход внутри страницы в 256 байт SJMP rel         (PC) (PC) + 2, (PC) (PC) +rel
Косвенный относительный переход JMP @A+DPTR         (PC) (A) + (DPTR)
Переход, если аккумулятор равен нулю JZ rel         (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel
Переход, если аккумулятор не равен нулю JNZ rel         (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel
Переход, если перенос равен единице JC rel         (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel
Переход, если перенос равен нулю JNC rel         (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel
Переход, если бит равен единице JB bit, rel         (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel

 

 

Продолжение табл.23

Переход, если бит равен Нулю JNB bit, rel         (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel
Переход, если бит установлен, с последующим сбросом бита JBC bit, rel         (PC) (PC) + 3, если (b)=1, то (b) 0 и (PC) (PC) + rel
Декремент регистра и переход, если не нуль DJNZ Rn, rel D8 – DF       (PC) (PC) + 2, (Rn) (Rn) - 1, если (Rn) ≠ 0, то (PC) (PC) + rel
Декремент прямо-адресуемого байта и переход, если не нуль DJNZ ad, rel D5       (PC) (PC) + 2, (ad) (ad) - 1, если (ad) ≠ 0, то (PC) (PC) + rel
Сравнение аккумулятора с прямоадресуемым байтом и переход, если не равно CJNE A, ad, rel B5       (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel, если (A) < (ad), то (C) 1, иначе (C) 0
Сравнение аккумулятора с константой и переход, если не равно CJNE A, #d, rel B4       (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel, если (A) < #d, то (C) 1, иначе (С) 0
Сравнение регистра с константой и переход, если не равно CJNE Rn, #d, rel B8 – BF       (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel, если (Rn) < #d, то (C) 1, иначе (С) 0
Сравнение байта в РПД с константой и переход, если не равно CJNE @Ri,#d,rel B6 – B7       (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel, если ((Ri)) < #d, то (C) 1, иначе (C) 0
Длинный вызов подпрограммы LCALL adl6         (PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC) ad16
Абсолютный вызов подпрограммы в пределах страницы в 2 Кб ACALL ad11 A10a9a8       (PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC0-10) ad11
Возврат из подпрограммы RET         (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Возврат из подпрограммы обработки прерывания RETI         (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
Пустая операция NOP         (PC) (PC) + 1

 

Команды безусловного перехода:

LJMP ad16 (L ong J u mp - длинный переход) – длинный абсолютный переход по всему адресному пространству ПП. В трехбайтовой команде содержится полный 16-битный адрес перехода (ad16), позволяющий обращаться к любой ячейке памяти в пределах 64К. На практике редко возникает необходимость перехода в пределах всего адресного пространства и чаще используются укороченные команды перехода, занимающие меньше места в памяти.

AJMP ad11 (A bsolute J u mpабсолютный переход) – абсолютный переход в пределах одной страницы памяти программ размером 2048 байт. Такие команды содержат только 11 младших бит адреса перехода (ad11). Команды абсолютного перехода имеют формат 2 байта, при этом второй байт команды содержит 8 младших разрядов адреса (А7-А0), которые адресуют 256 байт памяти, а 3 старших разряда (А10-А8) находятся в первом байте вместе с кодом операции. Для изменения адреса перехода необходимо выбирать команду с другим кодом операции. Всего имеется 8 команд типа AJMP. При выполнении команды в вычисленном адресе следующей по порядку команды ((РС)= (PC) + 2) 11 младших бит заменяются на ad11 из тела команды абсолютного перехода.

SJMP rel (S hort J u mp – короткий переход) - относительный переход позволяет передать управление в пределах -128 ÷ +127 байт относительно адреса следующей команды (команды, следующей по порядку за командой относительного перехода). Формирование адреса относительного перехода (rel) осуществляется путем сложения базового адреса с адресом в поле операнда команды. В качестве базового адреса используется содержимое программного счетчика, а адрес в поле операнда команды представляет собой восьмиразрядное смещение rel (rel ative - относительный). Число rel интерпретируется командой как целое со знаком, представленное в дополнительном коде. Диапазон его представления -128 ÷ +127. При определении числа rel следует учесть, что программный счетчик указывает на следующую, подлежащую выполнению, команду. Относительный переход широко используется в командах передачи управления, так как по сравнению с абсолютными переходами они придают программе важное качество перемещаемости.

JMP @A + DPTR – косвенный переход по адресу, представляющим собой сумму содержимого аккумулятора A и регистра DPTR. Эта команда удобна тем, что предоставляет возможность организации перехода по адресу, вычисляемому самой программой и неизвестному при написании исходного текста программы. При этом в регистре DPTR находится постоянная часть адреса, в аккумуляторе – вычисляемая.

Команды условного перехода имеют структуру J ump(условие) bit, rel или J umр(условие), rel и позволяют осуществлять переход при выполнении следующих условий (переход если):

- JZ — аккумулятор содержит нулевое значение;

- JNZ — аккумулятор содержит не нулевое значение

- JC — бит переноса С установлен;

- JNC — бит переноса С не установлен;

- JB — прямоадресуемый бит равен 1

- JNB — прямоадресуемый бит равен 0;

- JBC — прямоадресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.

Все команды условного перехода содержат короткий относительный адрес, т. е. переход может осуществляться в пределах -128... +127 байт относительно следующей команды, аналогично команде SJMP.

Команды вызова подпрограмм и возврата из них:

LCALL ad16 – длинный вызов подпрограммы в пределах полного адресного пространства 64К. Трехбайтовая команда аналогичная команде LJMP.

ACALL ad11 – двухбайтовая команда вызова подпрограммы в пределах адресного пространства 2К. Как и для команды AJMP, имеется 8 команд типа ACALL.

RET – безадресная команда возврата из подпрограммы.

RETI - безадресная команда возврата из подпрограммы обработки прерывания.

Команды LCALL и ACALL в отличие от команд перехода (LJMP, AJMP) сохраняют в стеке адрес возврата в основную программу. Когда микроконтроллер принимает запрос на прерывание, он автоматически генерирует команду LCALL ad16, что автоматически обеспечивает запоминание адреса возврата в стеке. Команды RET и RETI извлекают адрес возврата из стека и помещают его в счетчик команд РС. Кроме того, команда RETI разрешает прерывания обслуженного уровня.

Команды организации программных циклов:

DJNZ (D ecrement J ump N ot Z ero – декремент и переход, если не ноль) – команда для организации программных циклов. Осуществляет декремент операнда, проверку результата на нулевое значение и переход, если результат не равен нулю. Операнд может быть представлен регистровым или прямым адресом. Переход осуществляется по относительному адресу (rel). Во многих случаях используется для организации программных задержек, например:

MOV R1,#N

M0: NOP

NOP

DJNZ R1,M0; Выход из цикла, если R1=0.

Время программной задержки будет определяться суммой времени выполнения всех команд, находящихся между меткой М0 и командой DJNZ (в данном случае 4 мкс), умноженной на число N, предварительно записанное в регистр R1.

CJNE (C ompare J ump N ot E qually – сравнение и переход, если на равно) – команда сравнения двух операндов, с последующим переходом по относительному адресу (rel), если результат сравнения не равен нулю. Первый операнд может быть представлен неявной, регистровой, косвенной регистровой адресацией. Второй операнд может быть непосредственным, либо с прямым адресом. Команда CJNE эффективно используется в процедурах ожидания какого-либо события. Например:

WAIT: CJNE A,P0,WAIT

будет выполняться до тех пор, пока на линиях порта Р0 не установится информация, совпадающая с содержимым аккумулятора А.

NOP (N ot Op eration – нет операции) – холостая команда, не выполняющая никаких действий, но занимающую во времени один машинный цикл (при fCLK=12 мГц время выполнения команды 1мкс).

Все команды данной группы, за исключением CJNE и JBC, не оказывают воздействия на флаги. Команда CJNE устанавливает флаг C, если первый операнд оказывается меньше второго. Команда JBC сбрасывает флаг C в случае перехода.







Дата добавления: 2015-08-12; просмотров: 1459. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Метод архитекторов Этот метод является наиболее часто используемым и может применяться в трех модификациях: способ с двумя точками схода, способ с одной точкой схода, способ вертикальной плоскости и опущенного плана...

Примеры задач для самостоятельного решения. 1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P   1.Спрос и предложение на обеды в студенческой столовой описываются уравнениями: QD = 2400 – 100P; QS = 1000 + 250P...

Дизартрии у детей Выделение клинических форм дизартрии у детей является в большой степени условным, так как у них крайне редко бывают локальные поражения мозга, с которыми связаны четко определенные синдромы двигательных нарушений...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия