Д. В. Андреев Программирование микроконтроллеров mcs-51
Вид материала | Учебное пособие |
ADD A,direct ADDC A,direct ANL A,direct ANL direct,A ANL direct,#data8 CJNE A,direct,addr |
- Руководитель магистерской программы по направлению «Телекоммуникации» профессор, 75.17kb.
- Методика испытания на радиационную стойкость микроконтроллеров с архитектурой mcs-51, 32.31kb.
- Лабораторный комплекс на основе внутрисхемного эмулятора микроконтроллеров стандарта, 78.16kb.
- Семейство mcs-51 фирмы Intel как представитель 8-разрядных микроконтроллеров. Обобщенная, 64.27kb.
- Лекция № " Система команд микроконтроллеров семейства mcs-51.", 76.63kb.
- Методическое обеспечение базовой лабораторной работы практикума «Изучение работы, 244.09kb.
- Нию сроков активного существования микроконтроллеров atmega128 в условиях дозовых воздействий, 11.73kb.
- Комплекс средств для создания программного обеспечения процессорных модулей, реализованных, 22.6kb.
- Ходимы для реализации в составе «систем на кристалле» блоков управления, спроектированных, 48.74kb.
- Дипломная работа, 704.98kb.
Команда "сложение" складывает содержимое аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм | Пример |
(A)(A)+((Ri)), где i{0,1} (С)x, (OV)=x, (AC)=x, где x{0,1} | ;(A)=95H, (R1)=31H, ;в РПД (31H)=4CH ADD A,@R1 ;(A)=0E1H, (C)=0, ;(AC)=1, (OV)=0, (31H)=4CH |
ADD A,direct | 0 0 1 0 0 1 0 1 | direct |
Команда "сложение" складывает содержимое аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
| Алгоритм | Пример | |||
---|---|---|---|---|---|
| (A)(A)+(direct) (С)x, (OV)=x, (AC)=x, где x{0,1} | ;(A)=77H, (P1)=0FFH ADD A,P1 ;(A)=76H, ;(AC)=1, (C)=1, (OV)=0 ;(P1)=0FFH | |||
ADD A,#data8 | 0 0 1 0 0 1 0 0 | data8 | |
Команда "сложение" складывает содержимое аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм | Пример |
(A)(A)+data8 (С)x, (OV)=x, (AC)=x, где x{0,1} | ;(A)=09H ADD A,#0D3H ;(A)=0DCH, ;(AC)=0, (C)=0, (OV)=0 |
ADDC A,Rn ;где n=0-7 | 0 0 1 1 1 r r r | где rrrB=000B-111B |
Команда "сложение с переносом" одновременно складывает содержимое аккумулятора A, содержимое флага переноса С и содержимое заданного регистра Rn выбранного банка, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении переносов из разрядов 7 и 3 результата устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC соответственно, в противном случае эти флаги сбрасываются в "0". Флаг переполнения OV устанавливается, если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет - из бита 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.
Алгоритм | Пример |
(A)(A)+(C)+(Rn), где n=0-7 (С)x, (OV)=x, (AC)=x, где x{0,1} | ;(A)=0B2H, (R3)=99H, (C)=1 ADDC A,R3 ;(A)=4CH,(R3)=99H, ;(AC)=0, (C)=1, (OV)=1 |
ADDC A,@Ri ;где i{0,1} | 0 0 1 1 0 1 1 i | |
Команда "сложение с переносом" одновременно складывает содержимое аккумулятора A, содержимое флага переноса C и содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат помещается в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм | Пример |
(A)(A)+(C)+((Ri)), где i{0,1} (С)x, (OV)=x, (AC)=x, где x{0,1} | ;(A)=0D5H, (R0)=3AH, ;в РПД (3AH)=1AH, (C)=1 ADDC A,@R0 ;(A)=0F0H, ;(AC)=1, (C)=0, (OV)=0, ;(3AH)=1AH |
ADDC A,direct | 0 0 1 1 0 1 0 1 | direct |
Команда "сложение с переносом" одновременно складывает содержимое аккумулятора A, содержимое флага переноса C и содержимое ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм | Пример |
(A)(A)+(C)+(direct) (С)x, (OV)x, (AC)x, где x{0,1} | ;(A)=11H, (C)=1, ;(DPH)=0DFH ADDC A,DPH ;(A)=0F1H, ;(AC)=1, (C)=0, (OV)=0, ;(DPH)=0DFH |
ADDC A,#data8 | 0 0 1 1 0 1 0 0 | data8 |
Команда "сложение с переносом" одновременно складывает содержимое аккумулятора A, содержимое флага переноса C и байт данных data8, непосредственно указанный в команде. Результат размещается в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм | Пример |
(A)(A)+(C)+data8 (С)x, (OV)x, (AC)x, где x{0,1} | ;(A)=55H, (C)=0 ADDC A,#55H ;(A)=0AAH, ;(AC)=0, (C)=0, (OV)=1 |
AJMP addr11 | addr11[10-8] 0 0 0 0 1 | addr11[7-0] |
Команда "абсолютный переход" передает управление по адресу с символическим именем addr11, который образуется с помощью конкатенации (сцепления) 5-ти старших бит содержимого счетчика команд PC (после увеличения его на 2), содержимого 7-5 битов старшего байта команды и содержимого второго байта команды. Адрес перехода и указанная команда должны находиться внутри одной страницы памяти программ (ПП) объемом 2 Кбайт, определяемой содержимым пяти старших бит PC. Время выполнения команды 2 цикла.
| Алгоритм | Пример | |||
---|---|---|---|---|---|
| (PC)(PC)+2 (PC[10-0])addr11[10-8] addr11[7-0], где есть знак конкатенации | ;(PC)=28FH, ;MT2 соответствует адресу ;34AH в ПП AJMP MT2 ;(PC)=34AH | |||
ANL A,Rn ;где n=0-7 | 0 1 0 1 1 r r r | где rrrB=000B-111B | |
Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. Содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм | Пример |
(A)(A)(Rn), где n=0-7 | ;(A)=0FH, (R2)=0C5H ANL A,R2 ;(A)=05H,(R2)=0C5H |
ANL A,@Ri ;где i{0,1} | 0 1 0 1 0 1 1 i | |
Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм | Пример |
(A)(A)((Ri)), где i{0,1} | ;(A)=0BCH, (R0)=35H, ;в РПД (35H)=47H ANL A,@R0 ;(A)=04H, ;в РПД (35H)=47H |
ANL A,direct | 0 1 0 1 0 1 0 1 | direct |
Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм | Пример |
(A)(A)(direct) | ;(A)=0A3H, (PSW)=85H ANL A,PSW ;(A)=81H,(PSW)=85H |
ANL A,#data8 | 0 1 0 1 0 1 0 0 | data8 |
Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм | Пример |
(A)(A)data8 | ;(A)=36H ANL A,#0DDH ;(A)=14H |
ANL direct,A | 0 1 0 1 0 0 1 0 | direct |
Команда "логическое И" выполняет поразрядную конъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм | Пример |
(direct)(direct)(A) | ;(A)=55H, (P2)=0AAH ANL P2,A ;(A)=55H,(P2)=00H |
ANL direct,#data8 | 0 1 0 1 0 0 1 1 | direct | data8 |
Команда "логическое И" выполняет поразрядную конъюнкцию байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм | Пример |
(direct)(direct)data8 | ;(P1)=0FFH ANL P1,#73H ;(P1)=73H |
ANL C,bit | 1 0 0 0 0 0 1 0 | bit |
Команда "логическое И" выполняет конъюнкцию содержимого флага переноса C с содержимым бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Результат помещается в С. Содержимое используемого бита не изменяется. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.
| Алгоритм | Пример | |||
---|---|---|---|---|---|
| (C)(C)(bit) | ;(C)=1, (P1[0])=0, ;в РПД (24H)=0FH ANL C,P1.0 ;(C)=0, (P1[0])=0 ANL C,20H ;(C)=0, (24H)=0FH | |||
ANL C,/bit | 1 0 1 1 0 0 0 0 | bit | |
Команда "логическое И" выполняет конъюнкцию содержимого флага переноса C с инвертированным значением бита из области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение, при этом содержимое используемого бита, 8-разрядный адрес которого определяется символическим именем bit, не изменяется. Результат помещается в С. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм | Пример |
(C)(C) | ;(C)=1, (AC)=0 ANL C,/AC ;(C)=1, (AC)=0 |
CJNE A,direct,addr | 1 0 1 1 0 1 0 1 | direct | rel |
Команда "сравнение и переход, если не равно" сравнивает содержимое аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct, и выполняет переход по адресу addr, если содержимое A не равно содержимому используемой ячейки или используемого регистра, в противном случае выполняется следующая команда. Адрес перехода addr определяется при помощи сложения 8-битового числа rel (со знаком), размещенного в последнем байте команды, с содержимым счетчика команд PC после увеличения его на три. Таким образом, указанный переход возможен в пределах от -128 до +127 относительно начального адреса следующей команды, при этом отрицательное значение rel представляется двоичным числом в дополнительном коде. Флаг переноса C сбрасывается в "0", если содержимое A больше (равно) содержимого (содержимому) используемой ячейки или используемого регистра, в противном случае флаг устанавливается в "1". Команда не изменяет (A) и (direct) и имеет время выполнения 2 цикла.
Алгоритм | Пример |
если (direct)(A), то (PC)(PC)+3+rel и (C)0 если (direct)(A), то (PC)(PC)+3+rel и (C)1 если (direct)=(A), то (PC)(PC)+3 и (C)0 | ;(A)=97H, (P2)=0F0H, (C)=0, ;(PC)=3FFH, MT3 соответству- ;ет адресу 41FH, rel=1DH CJNE A,P2,MT3 ;(C)=1, ;(A)=97H, (P2)=0F0H, ;(PC)=41FH |
CJNE A,#data8,addr | 1 0 1 1 0 1 0 0 | data8 | rel |
Команда "сравнение и переход, если не равно" сравнивает содержимое аккумулятора A с байтом данных data8, непосредственно указанным в команде, и выполняет переход по адресу addr, если содержимое A не равно data8, в противном случае выполняется следующая команда. Процедура вычисления адреса перехода, влияние на (A) и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой. Флаг переноса C сбрасывается в "0", если содержимое A больше (равно) data8, в противном случае флаг устанавливается в "1".
Алгоритм | Пример |
если data8(A), то (PC)(PC)+3+rel и (C)0 если data8(A), то (PC)(PC)+3+rel и (C)1 если data8=(A), то (PC)(PC)+3 и (C)0 | ;(A)=0FCH, (C)=1, (PC)=3FFH, ;MT4 соответствует адресу ;3F0H, rel=0EEH CJNE A,#0BFH,MT4 ;(C)=0, ;(A)=0FCH, (PC)=3F0H |