Д. В. Андреев Программирование микроконтроллеров mcs-51

Вид материалаУчебное пособие
ADD A,direct
ADDC A,direct
ANL A,direct
ANL direct,A
ANL direct,#data8
CJNE A,direct,addr
Подобный материал:
1   2   3   4   5   6   7   8   9   10

Команда "сложение" складывает содержимое аккумулятора 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