КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Основные методы проектирования микропроцессорных устройств
Таблица 2
Арифметические команды В наборе команд микроконтроллера имеются следующие арифметические операции: · сложение ADD, · сложение с учетом флага переноса ADDC, · инкрементирование (увеличение на 1) INC, · декрементирование (уменьшение на 1) DEC, · десятичная коррекция DA, Действия производятся над целыми числами без знака. Команды сложения ADD позволяют сформировать перенос в следующий разряд. Команды сложения с учётом знака переноса позволяют выполнять многобайтное сложение. Вычитание может быть реализовано переводом одного из операндов в дополнительный код с последующим выполнением операции суммирования. Более сложные операции такие как умножение или деление могут быть реализованы только программным способом.
Логические команды. Система команд микроконтроллера позволяет реализовать логические операции: · И (ANL ANLD), · ИЛИ (ORL ORLD), · ИСКЛЮЧАЮЩЕЕ ИЛИ (XRL). · сброс и инвертирование всех восьми разрядов аккумулятора (CPL A; CLR A); · сброс и инвертирование флагов микроконтроллера (CLR C; CLR F0; CLR F1; CPL C; CPL F0; CPL F1); · циклический сдвиг влево и вправо с учетом переноса и без (RR A; RRC A; RL A; RLC A); · обмен местами старшей и младшей тетрад внутри аккумулятора (SWAP A). Команды пересылки данных. Как было рассмотрено ранее, арифметические и логические команды могут быть выполнены только над содержимым регистра аккумулятора, поэтому исключительно важное значение в системе команд приобретают команды пересылки данных. С помощью этих команд можно скопировать содержимое любой ячейки памяти в регистр-аккумулятор или наоборот скопировать содержимое аккумулятора в любую ячейку памяти. Так как в микроконтроллере присутствует три независимых области памяти, то для обращения к ним введены различные команды: · обмен данными во внутреннем ОЗУ: MOV, XCH · обмен данными из внешней памяти данных: MOVX · копирование данных из памяти программ: MOVP · обмен данными параллельных портов IN, OUTL, MOVD Примеры использования команд пересылки данных: Любая ячейка 256- байтового блока внутреннего ОЗУ данных может быть выбрана с использованием косвенно-регистровой адресации через регистры указатели R0 и R1 (выбранного банка рабочих регистров): MOV A, @R0;Скопировать число из ячейки памяти с адресом, хранящемся в R0, в аккумулятор MOV @R1, A;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1Таблицы символов (кодов), записанные в ПЗУ программы могут быть скопированы в аккумулятор с помощью команд передачи данных с косвенной адресацией: MOVP A, @A;Скопировать символ из текущей страницы памяти программ в аккумулятор MOVP3 A, @A;Скопировать символ из третьей страницы памяти программ в аккумуляторЯчейка адресного пространства 256 байт внешнего ОЗУ также может быть выбрана с использованием косвенно-регистровой адресации через регистры R0 или R1: MOVX A, @R0;Скопировать число из внешней ячейки памяти с адресом,;хранящемся в R0, в аккумулятор MOVX @R1, A;Скопировать число из аккумулятора, в ячейку памяти с адресом, хранящемся в R1Содержимое аккумулятора может быть обменено с содержимым рабочих регистров выбранного банка: Для работы с параллельными портами используется отдельные команды пересылки данных IN и OUTL: IN A, P0;Скопировать число из порта P0, в аккумулятор OUTL P1, A;Скопировать число из аккумулятора, в порт P1Команды ветвления и передачи управления. Команды ветвления позволяют реализовывать условные операторы и операторы циклов. В микроконтроллерах семейства MCS-48 доступны следующие команды: · безусловный переход: JMP · Вызов и возврат из подпрограммы: CALL, RET, RETR · проверка содержимого аккумулятора: JZ, JNZ, JMPP, JB0... JB7 · проверка флага переноса С: JC, JNC · проверка сигнала на ножке T0: JT0, JNT0 · проверка сигнала на ножке T1: JT1, JNT1 · проверка сигнала на ножке INT: JNI · Проверка состояния флагов пользователя JF0, JF1 Команды безусловных переходов и вызовов подпрограмм позволяют осуществить переход в любую точку адресного пространства памяти программ в пределах страницы 2 Кбайт. Примеры команд: JMP Metka;Переход к команде, расположенной по адресу обозначенному меткой ‘Metka’ CALL Podprogramma;Вызов подпрограммы по адресу, обозначенному меткой ‘Podprogramma’В системе команд имеются команды условных переходов. Эти команды позволяют осуществлять переход в пределах страницы 256 байт. Примеры использования команд условного перехода: JB5 TstNxtUsl;Если в 6 бите аккумулятора нулевое значение,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’JNZ A, #5, TstNxtUsl;Если в аккумуляторе содержится нулевое значение,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’Команды проверки содержимого аккумулятора и флага переноса C могут быть использованы для реализации проверки различных условий: MOV A, 34;Если в переменной, хранящейся в ячейке внутренней памяти 34 JB7 TstNxtUsl;число меньше нуля,CALL Podprogramma;то вызвать подпрограмму, обозначенную меткой ‘Podprogramma’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JZ TstNxtUsl;занесено число 5,CALL Podpr5;то вызвать подпрограмму, обозначенную меткой ‘Podpr5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JNС TstNxtUsl;занесено число, меньшее 5,CALL PodprLT5;то вызвать подпрограмму, обозначенную меткой ‘PodprLT5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -6;хранящейся в ячейке внутренней памяти 34JC TstNxtUsl;занесено число, большее 5,CALL PodprGT5;то вызвать подпрограмму, обозначенную меткой ‘PodprGT5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -5;хранящейся в ячейке внутренней памяти 34JC TstNxtUsl;занесено число, большее или равное 5,CALL PodprGE5;то вызвать подпрограмму, обозначенную меткой ‘PodprGE5’;---------------------------------------------------------------------------------MOV A, 34;Если в переменной, ADD A, -6;хранящейся в ячейке внутренней памяти 34 JNC TstNxtUsl;занесено число, меньшее или равное 5,CALL PodprLE5;то вызвать подпрограмму, обозначенную меткой ‘PodprLE5’Косвенный переход JMPP @A в системе команд микроконтроллера обеспечивает ветвление программы по содержимому аккумулятора А. Это позволяет реализовывать операцию перехода по заданному коду, эквивалентное оператору case в языке программирования pascal, но намного быстрее (за два машинных цикла). Пример реализации команды выбора варианта: Команды управления режимами работы микроконтроллера. Команды управления микроконтроллером позволяют: · запускать и останавливать таймер/счётчик (STRT CNT STRT T, STOP TCNT), · разрешать и запрещать прерывания (EN I, EN TCNTI, DIS I, DIS TCNTI), · выбирать рабочий банк регистров (SEL RB0, SEL RB1), · выбирать страницы памяти программ (SEL MB0, SEL MB1), · разрешать выдачу синхросигнала на ножке T0 (ENT0 CLC). Способы адресации операндов. Наибольшее количество видов адресации используется в командах пересылки данных. При определении способа адресации операндов в команде необходимо учитывать, что адресация для каждого операнда команды своя. В общем случае адресация определяется для каждого операнда отдельно. Неявная адресация При неявной адресации регистр источник или регистр приёмник подразумевается в самом коде операции. Например: RR A;сдвиг содержимого аккумулятора вправо DA A;десятичная коррекция аккумулятораРегистровая адресация используется для обращения к восьми рабочим регистрам выбранного банка рабочих регистров. Номер регистра записывается в трех младших битах команды. Например: MOV A, R7;Во втором операнде использована регистровая адресация (в первом операнде неявная адресация)Косвенно-регистровая адресация используется для обращения к ячейкам внутреннего ОЗУ данных. В качестве регистров-указателей используются регистры R0, R1 выбранного банка регистров. Примеры использования косвенно-регистровой адресации: MOV A, @R0;Косвенно-регистровая адресация использована во втором операнде MOV @R1, A;Косвенно-регистровая адресация использована в первом операндеКосвенно - регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров- указателей R0 и R1 (рабочего банка рабочих регистров) выбирается ячейка из блока 256 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2. Например: Косвенно- регистровая адресация по содержимому аккумулятора А упрощает просмотр таблиц, записанных в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому содержимым аккумулятора А, например: MOVP3 A, @AНепосредственная адресация позволяет выбрать из адресного пространства памяти программ константы, явно указанные в команде, например: MOV A, #11h;помещает в аккумулятор число 11h MOV R5, #48;помещает в регистр R5 число 48Описание машинных команд. ADD A, <байт-источник> - сложение. Описание: складывает содержимое аккумулятора А с содержимым байта- источника. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7 го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3 го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника: · регистровая; Пример: ADD A, R7 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + (Rn), n=0,1,2,3,4,5,6,7 Машинный код: 0 1 1 0 1 r r r· косвенно-регистровая; Пример: ADD A, @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + ((Ri)), i=0,1 Машинный код: 0 1 1 0 0 0 0 i· непосредственная. Пример: ADD A, #38h Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (A) + (date 8) Машинный код: 0 0 0 0 0 0 1 1i i i i i i i iADDC A, <байт-источник> - сложение с учетом переноса. Описание: складывает содержимое аккумулятора А с содержимым байта-источника, к получившемуся результату прибавляется значение флага переноса. Результат операции помещается в аккумулятор. Флаг переноса C устанавливается при переносе из 7 го разряда. Флаг вспомогательного переноса AC устанавливается при переносе из 3 го разряда. При сложении знаковых чисел флаг переполнения OV устанавливается при превышении максимального положительного числа или при получении числа меньшего минимально возможного. Для команды сложения разрешены следующие режимы адресации байта - источника: · регистровая; Пример: ADDC A, R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + (C) + (Rn), n=0,:,7 Машинный код: 0 1 1 1 1 r r r· косвенно-регистровая; Пример: ADDC A, @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + (C) + ((Ri)), i=0,1 Машинный код: 0 1 1 1 0 0 0 i· непосредственная. Пример: ADDC A, #100 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (A) + (C) + (date 8) Машинный код: 0 0 0 1 0 0 1 1i i i i i i i iANL <байт приемник>,<байт источник> - команда "логическое И" для байтовых переменных. Описание: выполняет операцию побитового "логического И" над указанными переменными и помещает результат в байт приемник. Команда не воздействует на флаги. Для команды 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 0 0 i· непосредственная. Пример: ANL A, #100 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (A) & (date 8) Машинный код: 0 1 0 1 0 0 1 1i i i i i i i iДля команды ANL возможна работа с портами и шиной данный в качестве приёмника информации. При этом источник информации использует непосредственную адресацию: Пример: ANL BUS, #00010010B Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (BUS) = (BUS) & (direct) Машинный код: 1 0 0 1 1 0 0 0d d d d d d d dПример: P1, #10000000b Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (Pp) = (Pp) & (date 8), pp=1,2 Машинный код: 1 0 0 1 1 0 p pd d d d d d d dПримечание: при выполнении команды ANL над содержимым внешнего порта используется значение из внутреннего регистра, а не данные, присутствующие на выводах микросхемы! ANLD P, A - "логическое И" порта внешней микросхемы расширителя портов и аккумулятора A. Описание: выполняет операцию побитового "логического И" над содержимым порта внешней микросхемы расширителя портов и аккумулятора. Результат помещается в порт. Команда не воздействует на флаги. При этом как источник, так и приемник информации использует неявную адресацию: Пример: ANLD P6, A Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (Pp) = (Pp) & (A), pp=4,5,6,7 Машинный код: 1 0 0 1 1 1 p p CALL <addr 11> - вызов подпрограммы. Описание: вызывает подпрограмму, размещенную по указанному адресу <addr 11>. Команда увеличивает содержимое счетчика команд на 2 и затем помещает полученный результат в стек. Кроме программного счетчика в стеке сохраняется содержимое регистра флагов PSW. После это содержимое указателя стека SP увеличивается на 1. Команда не воздействует на флаги. Пример: CALL 311h Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 ((SP)) = (PC), (PSW4-7) (SP) = (SP) + 1 (PC10-0) = адрес подпрограммы (метки) Машинный код: a10 a9 a8 1 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0CLR A - сброс аккумулятора Описание: сбрасывает (записывает '0' во все биты аккумулятора). Команда не изменяет содержимое флагов. Команда использует неявную адресацию: Пример: CLR A;Записывает в аккумулятор число 00h Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = 0 Машинный код: 0 0 1 0 0 1 1 1CLR C - сбрасывает флаг переноса в нулевое значение. Описание: сбрасывает (записывает '0') в флаг переноса. Команда использует неявную адресацию: Пример: CLR C;Записывает во флаг переноса '0' Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (C) = 0 Машинный код: 1 0 0 1 0 1 1 1CLR F0 - сбрасывает флаг пользователя F0 в нулевое значение. Описание: сбрасывает (записывает '0') в флаг пользователя F0. Команда использует неявную адресацию: Пример: CLR F0;Записывает во флаг пользователя F0 '0' Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (F0) = 0 Машинный код: 1 0 0 0 0 1 0 1CLR F1 - сбрасывает флаг пользователя F1 в нулевое значение. Описание: сбрасывает (записывает '0') в флаг пользователя F1. Команда использует неявную адресацию: Пример: CLR F1;Записывает во флаг пользователя F0 '0' Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (F1) = 0 Машинный код: 1 0 1 0 0 1 0 1CPL A - каждый бит аккумулятора инвертируется. Описание: каждый бит аккумулятора инвертируется, т.е. если в каком-либо из восьми бит аккумулятора записана '1', то в этот бит записывается '0' и наоборот. Пример: CPL A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = not(A) Машинный код: 0 0 1 1 0 1 1 1CPL C - инвертируется флаг переноса 'C'. Описание: флаг переноса 'C' инвертируется, т.е. если флаг переноса 'C' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию: Пример: CPL C Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (C) = not(C) Машинный код: 1 0 1 0 0 1 1 1CPL F0 - инвертируется флаг пользователя F0 в нулевое значение. Описание: флаг пользователя 'F0' инвертируется, т.е. если флаг пользователя 'F0' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию: Пример: CLR F0;Инвертирует флаг пользователя F0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (F0) = 0 Машинный код: 1 0 0 0 0 1 0 1CPL F1 - инвертируется флаг пользователя F1 в нулевое значение. Описание: флаг пользователя 'F1' инвертируется, т.е. если флаг пользователя 'F1' содержит '1', то в него записывается '0' и наоборот. Команда использует неявную адресацию: Пример: CLR F1;Инвертирует флаг пользователя F0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (F1) = 0 Машинный код: 1 0 1 0 0 1 0 1DA A - десятичная коррекция аккумулятора при сложении двоично-десятичных чисел. Описание: команда десятичной коррекции позволяет вести сложение чисел, представленных в упакованном двоично-десятичном коде. Команда применяется после инструкций ADD или ADDC. Инструкции (команды) ADD или ADDC позволяют суммировать сразу две тетрады, расположенные в одном байте. Если биты аккумулятора с 0 по 3 содержат число большее 9 (xxxx1010:xxxx1111) или флаг вспомогательного переноса AC содержит '1', то к аккумулятору прибавляется число 6 для того, чтобы получить правильную двоично-десятичную цифру в младшей тетраде. Если старшие биты аккумулятора (с 4 по 7) содержат число большее 9 (1010xxxx:1111xxxx) или флаг переноса C содержит '1', то к аккумулятору прибавляется число 60h для того, чтобы получить правильную двоично-десятичную цифру в старшей тетраде. Если в результате операции DA A возникнет перенос, то флаг переноса C будет установлен в 1. Единичный флаг переноса после операции DA A означает, что результат суммирования больше 100 и этим можно воспользоваться для суммирования многоразрядных двоично-десятичных чисел. Команда десятичной коррекции не воздействует на флаг переполнения OV. Примечание: команда DA A не может преобразовать двоичное число из аккумулятора в двоично-десятичный вид или правильно скорректировать двоично-десятичное вычитание. Пример: DA A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 IF [[(A3-0) > 9] or [(AC) = 1]] THEN (A3-0) = (A3-0) + 6 AND IF [[(A7-4) > 9] or [(C) = 1]] THEN (A7-4) = (A7-4) + 6 Машинный код: 0 1 0 1 0 1 1 1DEC <байт> - производит вычитание 1 из указанного операнда. Описание: операнд уменьшается на 1. Если первоначально в ячейке было записано значение 00h, то в нее заносится значение 0FFh. Команда не воздействует на флаги. Для команды DEC разрешены следующие режимы адресации: · неявная. Пример: DEC A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) - 1 Машинный код: 0 0 0 0 0 1 1 1· регистровая; Пример: DEC R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7 Машинный код: 1 1 0 0 1 r r rDIS I - запрет внешнего прерывания. Описание: запрещает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Запретить прерывания от внешней ножки INT Машинный код: 0 0 0 1 0 1 0 1DIS TCNTI - запрет прерывания от таймера/счётчика. Описание: запрещает прерывание выполнения программы по переполнению таймера/счётчика. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Запретить прерывания по переполнению таймера/счётчика Машинный код: 0 0 1 1 0 1 0 1DJNZ Rn,<адрес> - вычитание 1 из указанной ячейки и переход, если результат не равен 0. Описание: вычитание 1 из указанной во втором байте команды ячейки памяти и переход к вычисляемому по второму байту команды адресу, если результат вычитания не равен 0. Если первоначально в ячейке памяти содержится '0', то в результате выполнения операции туда будет записано число '0FFH'. Команда не воздействует на флаги. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Для команды DJNZ используется регистровая адресация: Пример: LABEL1: DJNZ R3,LABEL1; Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (Rn) = (Rn) - 1, n=0,1,2,3,4,5,6,7 IF (Rn) < > 0, THEN (PC0..7) = Address Машинный код: 1 1 1 0 1 r r rA d d r e s sEN I - разрешение внешнего прерывания. Описание: разрешает прерывание выполнения программы по сигналу низкого уровня на внешней ножке INT. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Разрешить прерывания от внешней ножки INT Машинный код: 0 0 0 0 0 1 0 1EN TCNTI - разрешение прерываний от таймера/счётчика. Описание: разрешает прерывание выполнения программы по переполнению таймера/счётчика. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Разрешить прерывания от таймера/счётчика Машинный код: 0 0 1 0 0 1 0 1ENT0 CLK - разрешение выдачи синхросигнала на вывод T0. Описание: разрешает выдачу синхросигнала на вывод микросхемы T0. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Разрешить выдачу синхросигнала на вывод T0 Машинный код: 0 1 1 1 0 1 0 1IN Pp - пересылка данных из порта в аккумулятор. Описание: копирует данные на выводах микросхемы в аккумулятор. Команда не воздействует на флаги и использует неявную адресацию. Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (Pp), p=1,2 Машинный код: 0 0 0 0 1 0 p pINC <байт> - производит прибавление 1 к указанному операнду. Описание: ячейка памяти адрес, которой указан во втором байте команды увеличивается на 1. Если первоначально в ячейке было записано значение 0FFh, то в нее заносится значение 00h. Команда не воздействует на флаги. Для команды INC разрешены следующие режимы адресации байта - источника: · неявная. Пример: INC A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) + 1 Машинный код: 0 0 0 1 0 1 1 1· регистровая; Пример: INC R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (Rn) = (Rn) + 1, n=0,1,2,3,4,5,6,7 Машинный код: 0 0 0 1 1 r r r· косвенно-регистровая; Пример: INC @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 ((Ri)) = ((Ri)) + 1, i=0,1 Машинный код: 0 0 0 1 0 0 0 iJB0 <адрес> - переход если нулевой бит аккумулятора установлен. Описание: Если нулевой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB0 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.0) = 1 THEN (PC0..7) = Address Машинный код: 0 0 0 1 0 0 1 0A d d r e s sJB1 <адрес> - переход если первый бит аккумулятора установлен. Описание: Если первый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB1 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.1) = 1 THEN (PC0..7) = Address Машинный код: 0 0 1 1 0 0 1 0A d d r e s sJB2 <адрес> - переход если второй бит аккумулятора установлен. Описание: Если второй бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB2 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.2) = 1 THEN (PC0..7) = Address Машинный код: 0 1 0 1 0 0 1 0A d d r e s sJB3 <адрес> - переход если третий бит аккумулятора установлен. Описание: Если третий бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB3 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.3) = 1 THEN (PC0..7) = Address Машинный код: 0 1 1 1 0 0 1 0A d d r e s sJB4 <адрес> - переход если четвёртый бит аккумулятора установлен. Описание: Если четвёртый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB4 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.4) = 1 THEN (PC0..7) = Address Машинный код: 1 0 0 1 0 0 1 0A d d r e s sJB5 <адрес> - переход если пятый бит аккумулятора установлен. Описание: Если пятый бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB5 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.5) = 1 THEN (PC0..7) = Address Машинный код: 1 0 1 1 0 0 1 0A d d r e s sJB6 <адрес> - переход если шестой бит аккумулятора установлен. Описание: Если шестой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB6 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.6) = 1 THEN (PC0..7) = Address Машинный код: 1 1 0 1 0 0 1 0A d d r e s sJB7 <адрес> - переход если седьмой бит аккумулятора установлен. Описание: Если седьмой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JB7 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (ACC.7) = 1 THEN (PC0..7) = Address Машинный код: 1 1 1 1 0 0 1 0A d d r e s sJC <адрес> - переход, если бит переноса установлен. Описание: Если бит переноса равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JС LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (С) = 1 THEN (PC0..7) = Address Машинный код: 1 1 1 1 0 1 1 0A d d r e s sJF0 <адрес> - переход, если бит переноса установлен. Описание: Если флаг пользователя F0 равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JF0 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (F0) = 1 THEN (PC0..7) = Address Машинный код: 1 0 1 1 0 1 1 0A d d r e s sJF1 <адрес> - переход, если бит переноса установлен. Описание: Если флаг пользователя F1 равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JF0 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (F1) = 1 THEN (PC0..7) = Address Машинный код: 0 1 1 1 0 1 1 0A d d r e s sJMP <addr 11> - переход на метку. Описание: осуществляет переход на метку, размещенную по указанному адресу <addr 11>. Команда не воздействует на флаги. Пример: JMP 311h Количество байт: 2 Количество циклов: 2 Действие команды: (PC10-0) = адрес метки Машинный код: a10 a9 a8 0 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0JMPP @A - косвенный переход в текущей странице. Описание: осуществляет переход на адрес, содержащийся в ячейке памяти программ на которую указывает содержимое аккумулятора. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с содержимым аккумулятора. Таким образом осуществляется переход в пределах страницы размером в 256 байт. Команда не воздействует на флаги и не изменяет содержимое аккумулятора. Пример: JMPP @A Количество байт: 1 Количество циклов: 2 Действие команды: (PC7-0) = ((A)) Машинный код: a10 a9 a8 0 0 1 0 0a7 a6 a5 a4 a3 a2 a1 a0JNC <адрес> - переход, если бит переноса сброшен. Описание: Если бит переноса равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JNС LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (С) = 0 THEN (PC0..7) = Address Машинный код: 1 1 1 0 0 1 1 0A d d r e s sОписание машинных команд (продолжение). JNI <адрес> - переход, если сигнал на ножке запроса прерывания равен нулю. Описание: Если на ножке запроса прерывания сигнал равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JNI LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (INT) = 0 THEN (PC0..7) = Address Машинный код: 1 0 0 0 0 1 1 0A d d r e s sJNT0 <адрес> - переход, если сигнал ножке микроконтроллера T0 равен нулю. Описание: Если на ножке микроконтроллера T0 сигнал равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JNT0 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (T0) = 0 THEN (PC0..7) = Address Машинный код: 0 0 1 0 0 1 1 0A d d r e s sJNT1 <адрес> - переход, если бит переноса сброшен. Описание: Если на ножке микроконтроллера T1 сигнал равен нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги. Пример: JNT1 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (T1) = 0 THEN (PC0..7) = Address Машинный код: 0 1 0 0 0 1 1 0A d d r e s sJNZ <адрес> - переход, если содержимое аккумулятора не равно нулю. Описание: Если любой бит аккумулятора равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое аккумулятора. Пример: JNZ LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (A) <> 0 THEN (PC0..7) = Address Машинный код: 1 0 0 1 0 1 1 0A d d r e s sJTF <адрес> - переход, если содержимое аккумулятора не равно нулю. Описание: Если флаг переполнения таймера установлен, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги. Пример: JTF LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (A) <> 0 THEN (PC0..7) = Address Машинный код: 0 0 0 1 0 1 1 0A d d r e s sJT0 <адрес> - переход, если бит переноса сброшен. Описание: Если на ножке микроконтроллера T0 сигнал равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JT0 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (T0) = 1 THEN (PC0..7) = Address Машинный код: 0 0 1 1 0 1 1 0A d d r e s sJT1 <адрес> - переход, если бит переноса сброшен. Описание: Если на ножке микроконтроллера T1 сигнал равен единице, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое проверяемого бита. Пример: JT1 LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (T1) = 1 THEN (PC0..7) = Address Машинный код: 0 1 0 1 0 1 1 0A d d r e s sJZ <адрес> - переход, если содержимое аккумулятора не равно нулю. Описание: Если все биты аккумулятора равны нулю, то производится переход к указанному во втором байте команды адресу. В противном случае выполняется следующая команда. Новое значение программного счетчика при переходе вычисляется соединением содержимого старших бит программного счетчика с вторым операндом (вторым байтом команды). Таким образом осуществляется переход в пределах страницы размером в 256 байт. Если команда окажется на границе двух страниц, то переход осуществляется в пределах страницы, где расположен второй байт команды. Команда не воздействует на флаги и не изменяет содержимое аккумулятора. Пример: JZ LABEL1 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 IF (A) = 0 THEN (PC0..7) = Address Машинный код: 1 1 0 0 0 1 1 0A d d r e s sMOV <приемник>,<источник> - скопировать байтовую переменную. Описание: переменная, указанная во втором операнде, копируется в ячейку, указываемую первым операндом. Байт источник не изменяется. Другие регистры и флаги не изменяются. Для каждого операнда используется свой вид адресации. Команда допускает следующие виды адресации: первый операнд - неявная, второй операнд - неявная адресация; Пример: MOV A, PSW Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (PSW) Машинный код: 1 1 0 0 0 1 1 1Пример: MOV A, T Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (T) Машинный код: 0 1 0 0 0 0 1 0Пример: MOV PSW, A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (PSW) = (A) Машинный код: 1 1 0 1 0 1 1 1Пример: MOV T, A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (T) = (A) Машинный код: 0 1 1 0 0 0 1 0первый операнд - неявная, второй операнд - регистровая адресация; Пример: MOV A, R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (Rn), n=0,1,2,3,4,5,6,7 Машинный код: 1 1 1 1 1 r r rпервый операнд - неявная, второй операнд - косвенно-регистровая адресация; Пример: MOV A, @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = ((Ri)), i=0,1 Машинный код: 1 1 1 1 0 0 0 iпервый операнд - неявная, второй операнд - непосредственная адресация; Пример: MOV A, #38h Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (data 8) Машинный код: 0 0 1 0 0 0 1 1i i i i i i i iпервый операнд - регистровая, второй операнд - неявная адресация; Пример: MOV R3, A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (Rn) = (A), n=0,1,2,3,4,5,6,7 Машинный код: 1 0 1 0 1 r r rпервый операнд - неявная, второй операнд - непосредственная адресация; Пример: MOV R3, #38h Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (Rn) = (data 8), n=0,1,2,3,4,5,6,7 Машинный код: 1 0 1 1 1 r r ri i i i i i i iпервый операнд - косвенно-регистровая, второй операнд - неявная адресация; Пример: MOV @R0, A Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 ((Ri)) = (A), i=0,1 Машинный код: 1 0 1 0 0 0 0 iпервый операнд - косвенно-регистровая, второй операнд - непосредственная адресация; Пример: MOV @R0, #80 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 ((Rn)) = (data 8), n=0,1,2,3,4,5,6,7 Машинный код: 1 0 1 1 0 0 0 ii i i i i i i iMOVD A,<источник> - считать порт микросхемы расширителя портов. Описание: содержимое порта расширителя портов копируется в младшую тетраду аккумулятора. Старшая тетрада обнуляется. Команда не воздействует на флаги. В обоих операндах используется неявная адресация. Пример: MOVD A, P4 Количество байт: 2 Количество циклов: 1 Действие команды: (PC) = (PC) + 2 (A) = (Pp), p=4,5,6,7 Машинный код: 0 0 0 0 1 1 p pMOVP A, @A - переслать байт из текущей страницы памяти программ в аккумулятор. Описание: загружает аккумулятор константой из памяти программ. Адрес считываемого байта задаётся исходным содержимым аккумулятора. Команда не воздействует на флаги. Пример: MOVP A, @A Количество байт: 1 Количество циклов: 2 Действие команды: (PC0..PC7) = (A) (A) = ((PC)) Машинный код: 1 0 1 0 0 0 1 1MOVP3 A, @A - переслать байт из третьей страницы памяти программ в аккумулятор. Описание: загружает аккумулятор константой из памяти программ. Адрес считываемого байта задаётся исходным содержимым аккумулятора. Команда не воздействует на флаги. Пример: MOVP3 A, @A Количество байт: 1 Количество циклов: 2 Действие команды: (PC0..PC7) = (A) (PC8..PC11) = 0011 (A) = ((PC)) Машинный код: 1 1 1 0 0 0 1 1MOVX <приемник>,<источник> - переслать байтовую переменную во внешнюю память (из внешней памяти) Описание: пересылает данные между аккумулятором и байтом внешней памяти. В первом случае регистр R0 или R1 текущего банка регистров обеспечивает 8- битный адрес, который мультиплексируется с данными на выводах порта P0. первый операнд - неявная, второй операнд - косвенно-регистровая адресация; Пример: MOVX A, @R1;Скопировать данные из внешней памяти данных в аккумулятор Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 (A) = ((Ri)), i=0,1 Машинный код: 1 0 0 0 0 0 0 iпервый операнд - косвенно-регистровая, второй операнд - неявная адресация; Пример: MOVX @R0, A;Скопировать данные из аккумулятора во внешнюю память Количество байт: 1 Количество циклов: 2 Действие команды: (PC) = (PC) + 1 ((Ri)) = (A), i=0,1 Машинный код: 1 0 0 1 0 0 0 iNOP - нет операции Описание: Кроме программного счетчика не изменяет ни одного регистра, на флаги не воздействует. Пример: NOP Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 Машинный код: 0 0 0 0 0 0 0 0ORL <приемник>,<источник> - "логическое ИЛИ" для байтовых переменных Описание: выполняет операцию побитового "логического ИЛИ" между указанными переменными. Результат сохраняется в приемнике. Команда не воздействует на флаги. Для команды ORL с аккумулятором в качестве байта назначения разрешены следующие режимы адресации байта - источника: первый операнд - неявная, второй операнд - регистровая адресация; Пример: ORL A, R3 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) V (Rn), n=0,1,2,3,4,5,6,7 Машинный код: 0 1 0 0 1 r r rпервый операнд - неявная, второй операнд - косвенно-регистровая адресация; Пример: ORL A, @R0 Количество байт: 1 Количество циклов: 1 Действие команды: (PC) = (PC) + 1 (A) = (A) V ((Ri)), i=0,1 Машинный код: 0 1 0 0 0 0 0 iпервый операнд - неявная, второй операнд - непосредственная адресация; Пример: ORL A, #100 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (A) = (A) V (date 8) Машинный код: 0 1 0 0 0 0 1 1i i i i i i i iПример: ORL BUS, #100 Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (BUS) = (BUS) V (date 8) Машинный код: 1 0 0 1 1 0 0 0i i i i i i i iПример: ORL P1, #10010000b Количество байт: 2 Количество циклов: 2 Действие команды: (PC) = (PC) + 2 (Pp) = (Pp) V (date 8)
Дата добавления: 2013-12-13; Просмотров: 491; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |