Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Stenin Lab / Система команд АСМ51 подробно

.pdf
Скачиваний:
53
Добавлен:
10.02.2015
Размер:
629.14 Кб
Скачать

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым заданного регистра Rn выбранного банка, при этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (Rn), где n=0-7

 

;(A)=0FAH, (R6)=93H

 

 

MOV A,R6 ;(A)=93H, (R6)=93H

MOV A,@Ri ;где i {0,1}

 

 

1 1 1 0 0 1 1 i

 

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) ((Ri)), где i {0,1}

 

;(A)=0FDH, (R1)=30H,

 

 

;в РПД (30H)=17H

 

 

MOV A,@R1 ;(A)=17H, (R1)=30H,

 

 

;в РПД (30H)=17H

 

 

 

 

MOV A,direct

1 1 1 0 0 1 0 1

direct

 

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки, 8-разрядный адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (direct)

 

;(A)=24H, (DPL)=3DH

 

 

MOV A,DPL ;(A)=3DH,(DPL)=3DH

 

 

 

 

 

 

 

 

 

MOV A,#data8

0 1 1 1 0 1 0 0

data8

 

Команда "переслать байт" выполняет загрузку аккумулятора A байтом данных data8, непосредственно указанным в команде, на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) data8

 

;(A)=81H

 

 

MOV A,#0FFH ;(A)=0FFH

 

 

 

MOV Rn,A ;где n=0-7

1 1 1 1 1 r r r

где rrrB=000B-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым аккумулятора A, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

(Rn) (A), где n=0-7

 

;(A)=55H, (R6)=93H

 

 

MOV R6,A ;(A)=55H, (R6)=55H

 

 

 

 

 

MOV Rn,direct ;где n=0-7

1 0 1 0 1 r r r

direct

 

где rrrB=000-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций. При этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

 

Пример

(Rn) (direct), где n=0-7

 

;(R5)=81H, в РПД (16H)=22H

 

 

MOV R5,16H ;(R5)=22H,

 

 

;в РПД (16H)=22H

 

 

 

 

 

MOV Rn,#data8 ;где n=0-7

0 1 1 1 1 r r r

data8

 

где rrrB=000-111B

Команда "переслать байт" выполняет загрузку заданного регистра Rn выбранного банка байтом данных, непосредственно указанным в команде и имеющим символическое имя data8. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(Rn) data8, где n=0-7

;(R2)=5DH

 

MOV R2,#0FCH ;(R2)=0FCH

 

 

MOV direct,A

1 1 1 1 0 1 0 1

direct

Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

(direct) (A)

 

;(A)=3CH, (B)=4DH

 

 

MOV B,A ;(A)=3CH,(B)=3CH

 

 

 

 

 

 

 

 

 

 

 

MOV direct,Rn ;где n=0-7

1 0 0 0 1 r r r

direct

 

где rrrB=000-111B

Команда "переслать байт" пересылает содержимое заданного регистра Rn выбранного банка в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. При этом содержимое Rn не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 циклa.

Алгоритм

 

 

Пример

 

 

(direct) (Rn), где n=0-7

 

;(R7)=5EH, (P1)=0FFH

 

 

 

 

MOV P1,R7 ;(R7)=5EH, (P1)=5EH

 

 

 

 

 

 

 

 

 

 

 

 

 

MOV direct,direct

1 0 0 0 0 1 0 1

direct

 

direct

 

Команда "переслать байт" пересылает байт данных между двумя ячейками, расположенными в области резидентной памяти данных (РПД) или (и) в среде регистров специальных функций. Адрес ячейкиисточника (ячейки-приемника) определяется вторым (первым) операндом и размещается во втором (в третьем) байте команды. Необходимо отметить, что при пересылке содержимое ячейки-источника не изменяется. Команда на состояние флагов не влияет и выполняется за 2 циклa.

Алгоритм

 

 

Пример

(direct) (direct)

 

;в РПД (4CH)=7AH, (B)=0F4H

 

 

MOV 4CH,B ;(B)=0F4H,

 

 

;в РПД (4CH)=0F4H

 

 

 

 

 

MOV direct,@Ri ;где i {0,1}

 

 

 

1 0 0 0 0 1 1 i

direct

 

Команда "переслать байт" пересылает содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, в ячейку, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейкиисточника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

 

 

(direct) ((Ri)), где i {0,1}

 

;в РПД (6FH)=57H,

 

 

 

 

;(R0)=6FH, (PSW)=0C2H

 

 

MOV PSW,@R0 ;(PSW)=57H,

 

 

;(R0)=6FH, в РПД (6FH)=57H

 

 

 

 

 

 

MOV direct,#data8

0 1 1 1 0 1 0 1

direct

 

data8

 

Команда "переслать байт" копирует байт данных, непосредственно указанный в команде и имеющий символическое имя data8, в ячейку, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(direct) data8

 

;(P2)=0FFH

 

 

MOV P2,#33H ;(P2)=33H

 

 

 

 

MOV @Ri,A ;где i {0,1}

 

 

1 1 1 1 0 1 1 i

 

Команда "переслать байт" пересылает содержимое аккумулятора A в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, при этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

((Ri)) (A), где i {0,1}

 

;(A)=11H, (R1)=25H,

 

 

;в РПД (25H)=48H

 

 

MOV @R1,A ;(A)=11H, (R1)=25H,

 

 

;в РПД (25H)=11H

 

 

 

 

 

MOV @Ri, direct ;где i {0,1}

 

 

 

1 0 1 0 0 1 1 i

direct

 

Команда "переслать байт" загружает ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка, содержимым ячейки, адрес которой определяется символическим

именем direct в области РПД или в среде регистров специальных функций. При этом содержимое ячейкиисточника не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

((Ri)) (direct), где i {0,1}

 

;в РПД (55H)=31H,

 

 

;(R0)=55H, (TH1)=0CDH

 

 

MOV @R0,TH1 ;(TH1)=0CDH,

 

 

;(R0)=55H, в РПД (55H)=0CDH

MOV @Ri,#data8 ;где i {0,1}

 

 

 

0 1 1 1 0 1 1 i

data8

 

Команда "переслать байт" копирует байт данных data8, непосредственно указанный в команде, в ячейку резидентной памяти данных (РПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

((Ri)) data8, где i {0,1}

 

;(R1)=53H, в РПД (53H)=86H

 

 

MOV @R1,#77H ;(R1)=53H,

 

 

;в РПД (53H)=77H

 

 

 

 

MOV C,bit

1 0 1 0 0 0 1 0

bit

 

Команда "переслать бит" загружает флаг переноса C содержимым бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (либо регистров специальных функций), допускающей побитовое обращение. Команда на состояние других флагов, а также используемого бита не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(C) (bit)

 

;(C)=0, (P1[4])=1

 

 

MOV C,P1.4 ;(C)=1,

 

 

;(P1[4])=1

 

 

 

 

MOV bit,C

1 0 0 1 0 0 1 0

bit

 

Команда "переслать бит" копирует содержимое флага переноса C в бит, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Команда имеет время выполнения 2 цикла и на состояние флагов не влияет, за исключением случая, когда флаг является операндом-приемником.

Алгоритм

 

 

 

Пример

(bit) (C)

 

;в РПД

(22H)=0D0H, (C)=1

 

 

MOV 10H,C ;(C)=1,

 

 

;в РПД

(22H)=0D1H

 

 

 

 

 

MOV DPTR,#data16

1 0 0 1 0 0 0 0

data16[15-8]

data16[7-0]

 

Команда "переслать два байта" загружает указатель данных DPTR 16-битовой константой data16, непосредственно указанной в команде, причем содержимое второго и третьего байтов команды загружается соответственно в старший (DPH) и младший (DPL) байты DPTR. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(DPTR) data16

 

;(DPH)=23H, (DPL)=0DFH

 

 

MOV DPTR,#1234H ;(DPH)=12H,

 

 

(DPL)=34H

 

 

 

 

 

 

 

MOVC A,@A+DPTR

1 0 0 1 0 0 1 1

 

Команда "переслать байт" загружает аккумулятор A содержимым ячейки памяти программ (ПП), причем адрес используемой ячейки вычисляется как сумма исходного содержимого A и содержимого 16-битового указателя данных DPTR. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Содержимое DPTR не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(A) ((A)+(DPTR))

 

;(A)=01H, (DPTR)=30FFH,

 

 

;в ПП (3100H)=22H

 

 

MOVC A,@A+DPTR ;(A)=22H,

 

 

;(DPTR)=30FFH

 

 

 

 

 

 

 

MOVC A,@A+PC

1 0 0 0 0 0 1 1

 

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

счетчика PC, которое увеличено на единицу. Таким образом, в указанной пересылке может участвовать любая ячейка из памяти программ объемом до 64 Кбайт. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(A) ((A)+(PC)+1)

 

;(A)=11H, (PC)=2300H,

 

 

;в ПП (2312H)=44H

 

 

MOVC A,@A+PC ;(A)=44H,

 

 

;(PC)=2301H

 

 

 

 

MOVX A,@Ri ;где i {0,1}

 

 

1 1 1 0 0 0 1 i

 

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым заданного регистра Ri выбранного банка, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.

Алгоритм

 

 

Пример

(A) ((Ri)), где i {0,1}

 

;(A)=0CCH, (R0)=44H,

 

 

;в ВПД (44H)=3EH

 

 

MOVX A,@R0 ;(A)=3EH, (R0)=44H,

 

 

;в ВПД (44H)=3EH

 

 

 

MOVX A,@DPTR

1 1 1 0 0 0 0 0

 

Команда "переслать байт" выполняет загрузку аккумулятора A содержимым ячейки внешней памяти данных (ВПД), адресуемой содержимым 16-битового указателя данных DPTR, при этом содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.

Алгоритм

 

 

Пример

(A) ((DPTR))

 

;(A)=76H, (DPTR)=6D44H,

 

 

;в ВПД (6D44H)=88H

 

 

MOVX A,@DPTR ;(DPTR)=6D44H,

 

 

;(A)=88H, в ВПД (6D44H)=88H

MOVX @Ri,A ;где i {0,1}

 

 

1 1 1 1 0 0 1 i

 

Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 256 байт.

Алгоритм

 

 

Пример

((Ri)) (A), где i {0,1}

 

;(A)=0C6H, (R1)=22H,

 

 

;в ВПД (22H)=33H

 

 

MOVX @R1,A ;(A)=0C6H, (R1)=22H,

 

 

;в ВПД (22H)=0C6H

 

 

 

 

 

 

 

MOVX @DPTR,A

1 1 1 1 0 0 0 0

 

Команда "переслать байт" копирует содержимое аккумулятора A в ячейку внешней памяти данных (ВПД), адресуемую содержимым 16-битового указателя данных DPTR. Команда на состояние флагов не влияет, имеет время выполнения 2 цикла и обеспечивает доступ к ВПД объемом до 64 Кбайт.

Алгоритм

 

 

Пример

((DPTR)) (A)

 

;(A)=55H, (DPTR)=1234H,

 

 

;в ВПД (1234H)=11H

 

 

MOVX @DPTR,A ;(DPTR)=1234H,

 

 

;(A)=55H,

 

 

;в ВПД (1234H)=55H

 

 

 

 

 

 

 

MUL AB

1 0 1 0 0 1 0 0

 

Команда "умножение" умножает 8-битовую переменную из аккумулятора A на 8-битовую переменную из регистра B, при этом старший и младший байты произведения загружаются соответственно в B и A. Содержимое флага переноса C сбрасывается в "0". Содержимое флага переполнения OV устанавливается в "1" если результат умножения больше 0FFH, в противном случае - также сбрасывается. Содержимое флага AC не изменяется. Команда имеет время выполнения 4 цикла.

Алгоритм

Пример

(A) (B)=data16

;(A)=50H=80, (B)=0A0H=160,

(A) data16[7-0], (B) data16[15-8]

;(C)=1, (OV)=0

(C) 0

MUL AB ;(C)=0, (OV)=1,

 

;(A)=00H, (B)=32H

если data16 0FFH, то (OV) 0 если data16 0FFH, то (OV) 1

NOP

0 0 0 0 0 0 0 0

Команда "нет операции" увеличивает содержимое программного счетчика PC на единицу, при этом состояние всех остальных программно доступных элементов микроконтроллера не изменяется. Команда имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(PC) (PC)+1

 

;(PC)=1FFH

 

 

NOP

 

 

NOP ;(PC)=201H

 

 

 

ORL A,Rn ;где n=0-7

0 1 0 0 1 r r r

где rrrB=000B-111B

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. Содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (A) (Rn), где n=0-7

 

;(A)=0FH, (R4)=0F3H

 

 

ORL A,R4 ;(A)=0FFH,

 

 

;(R4)=0F3H

 

 

 

 

ORL A,@Ri ;где i {0,1}

 

 

0 1 0 0 0 1 1 i

 

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (A) ((Ri)), где i {0,1}

 

;(A)=22H, (R0)=55H,

 

 

;в РПД (55H)=11H

 

 

ORL A,@R0 ;(A)=33H, (R0)=55H,

 

 

;в РПД (55H)=11H

 

 

 

 

 

 

 

 

 

ORL A,direct

0 1 0 0 0 1 0 1

direct

 

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (A) (direct)

 

;(A)=23H, (PSW)=14H

 

 

ORL A,PSW ;(A)=37H,

 

 

;(PSW)=14H

 

 

 

 

ORL A,#data8

0 1 0 0 0 1 0 0

data8

 

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (A) data8

 

;(A)=36H

 

 

ORL A,#41H ;(A)=77H

 

 

 

 

ORL direct,A

0 1 0 0 0 0 1 0

direct

 

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(direct) (A) (direct)

;(A)=55H, (P2)=0AAH

 

ORL P2,A ;(A)=55H,

 

;(P2)=0FFH

ORL direct,#data8

0 1 0 0 0 0 1 1

direct

data8

Команда "логическое ИЛИ" выполняет поразрядную дизъюнкцию байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(direct) (direct) data8

 

;(P1)=0FFH

 

 

ORL P1,#73H ;(P1)=0FFH

 

 

 

 

ORL C,bit

0 1 1 1 0 0 1 0

bit

 

Команда "логическое ИЛИ" выполняет дизъюнкцию содержимого флага переноса C с содержимым бита, 8- разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД) или регистров специальных функций, допускающей побитовое обращение. Результат помещается в С. Содержимое используемого бита не изменяется. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(C) (C) (bit)

 

;(C)=0, (P1[2])=1,

 

 

;в РПД (2EH)=12H

 

 

ORL C,P1.2 ;(C)=1, (P1[2])=1

 

 

ORL C,70H ;(C)=1,

 

 

;в РПД (2EH)=12H

 

 

 

 

 

 

 

 

 

ORL C,/bit

1 0 1 0 0 0 0 0

bit

 

Команда "логическое ИЛИ" выполняет дизъюнкцию содержимого флага переноса C с инвертированным значением бита из области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение, при этом содержимое используемого бита, 8-разрядный адрес которого определяется символическим именем bit, не изменяется. Результат помещается в С. Команда на состояние других флагов не влияет и имеет время выполнения 2 цикла.

 

Алгоритм

 

 

Пример

 

 

 

 

;(C)=0, (AC)=0

(C) (C) (bit)

 

ORL C,/AC ;(C)=1, (AC)=0

 

 

 

 

 

 

 

 

 

 

 

 

 

POP direct

1 1 0 1 0 0 0 0

direct

 

Команда "чтение из стека" копирует содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым указателя стека SP, в ячейку, адрес которой определяется символическим именем direct в области РПД или в среде регистров специальных функций. При этом содержимое указателя стека уменьшается на единицу. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(direct) ((SP))

 

;(SP)=32H, (DPH)=0AAH,

(SP) (SP)-1

 

;в РПД (32H)=55H

 

 

POP DPH ;(SP)=31H,(DPH)=55H

 

 

 

 

PUSH direct

1 1 0 0 0 0 0 0

direct

 

Команда "запись в стек" увеличивает содержимое указателя стека SP на единицу и после этого копирует содержимое ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных (РПД) или в среде регистров специальных функций, в ячейку РПД, адресуемую содержимым SP. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(SP) (SP)+1

 

;(SP)=44H, (DPL)=33H,

((SP)) (direct)

 

;в РПД (45H)=0CEH

 

 

PUSH DPL ;(SP)=45H, в РПД (45H)=33H

 

 

 

 

 

 

 

 

RET

 

0 0 1 0 0 0 1 0

 

Команда "возврат из подпрограммы" последовательно копирует содержимое двух ячеек, адресуемых содержимым указателя стека SP в резидентной памяти данных (РПД), в программный счетчик PC. При этом содержимое SP уменьшается на два. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(PC[15-8]) ((SP))

;(SP)=32H, (PC)=3DFH,

(SP) (SP)-1

;в РПД (31H)=23H, (32H)=01H

(PC[7-0])((SP))

 

RET ;(SP)=30H, (PC)=123H,

(SP)(SP)-1

 

;в РПД (31H)=23H, (32H)=01H

 

 

 

RETI

0 0 1 1 0 0 1 0

 

Команда "возврат из прерывания" последовательно копирует содержимое двух ячеек, адресуемых содержимым указателя стека SP в резидентной памяти данных (РПД), в программный счетчик PC и разрешает прерывания с уровнем приоритета, равным уровню приоритета только что обработанного прерывания. При этом содержимое SP уменьшается на два. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

Пример

(PC[15-8])((SP))

 

;(SP)=23H, (PC)=0D3FH,

(SP)(SP)-1

 

;в РПД (22H)=34H, (23H)=02H

(PC[7-0])((SP))

 

RETI ;(SP)=21H, (PC)=234H,

(SP)(SP)-1

 

;в РПД (22H)=34H, (23H)=02H

 

 

 

RL A

0 0 1 0 0 0 1 1

 

Команда "сдвиг аккумулятора влево" сдвигает содержимое аккумулятора A на один бит влево, причем содержимое бита 7 пересылается в бит 0. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[M+1])(A[M]), где M=0-6

 

;(A)=85H, (C)=0

(A[0])(A[7])

 

RL A

 

 

RL A ;(A)=16H, (C)=0

 

 

 

 

 

 

 

RLC A

0 0 1 1 0 0 1 1

 

Команда "сдвиг аккумулятора влево через флаг переноса" сдвигает содержимое аккумулятора A на один бит влево, причем содержимое бита 7 аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 0 аккумулятора. Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[M+1])(A[M]), где M=0-6

 

;(A)=85H, (C)=0

(A[0])(С), (С)(A[7])

 

RLC A ;(A)=0AH, (C)=1

 

 

 

RR A

0 0 0 0 0 0 1 1

 

Команда "сдвиг аккумулятора вправо" сдвигает содержимое аккумулятора A на один бит вправо, причем содержимое бита 0 пересылается в бит 7. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[M])(A[M+1]), где M=0-6

 

;(A)=85H, (C)=1

(A[7])(A[0])

 

RR A

 

 

RR A ;(A)=61H, (C)=1

 

 

 

RRC A

0 0 0 1 0 0 1 1

 

Команда "сдвиг аккумулятора вправо через флаг переноса" сдвигает содержимое аккумулятора A на один бит вправо, причем содержимое бита 0 аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 7 аккумулятора. Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[M])(A[M+1]), где M=0-6

 

;(A)=85H, (C)=0

(A[7])(С), (С)(A[0])

 

RRC A ;(A)=42H, (C)=1

 

 

 

SETB C

1 1 0 1 0 0 1 1

 

Команда "установить бит" устанавливает содержимое флага переноса C в "1". Команда на состояние других флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

 

Пример

(C)1

 

;(C)=0

 

 

 

 

SETB C ;(C)=1

 

 

 

 

 

SETB bit

1 1 0 1 0 0 1 0

 

bit

 

Команда "установить бит" устанавливает в "1" содержимое бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных или регистров специальных функций, допускающей побитовое обращение. Команда имеет время выполнения 1 цикл и на состояние флагов не влияет, за исключением случая, когда флаг является операндом команды.

Алгоритм

 

 

 

Пример

(bit) 1

 

;(P2)=38H

 

 

 

 

SETB P2.0

;(P2)=39H

 

 

 

 

 

 

 

 

 

 

 

SJMP addr

1 0 0 0 0 0 0 0

 

rel

 

Команда "короткий переход" выполняет безусловный переход по адресу addr, определяемому при помощи сложения 8-битового числа rel (со знаком), размещенного в младшем байте команды, с содержимым счетчика команд PC после увеличения его на 2. Таким образом, указанный переход возможен в пределах от - 128 до +127 относительно начального адреса следующей команды, при этом отрицательное значение rel представляется двоичным числом в дополнительном коде. Команда на флаги не влияет и имеет время выполнения 2 цикла.

Алгоритм

 

 

 

Пример

(PC) (PC)+2+rel

 

;MT4

соответствует адресу 104H,

 

 

;(PC)=165H, rel=9DH

 

 

SJMP

MT4 ;(PC)=104H

 

 

 

 

 

 

 

SUBB A,Rn ;где n=0-7

1 0 0 1 1 r r r

где rrrB=000B-111B

Команда "вычитание с заемом" вычитает содержимое заданного регистра Rn выбранного банка вместе с содержимым флага переноса С из содержимого аккумулятора A, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении заема в разрядах 7 и 3 аккумулятора устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC соответственно, в противном случае эти флаги сбрасываются в "0". Содержимое флага переполнения OV устанавливается, если есть заем в бите 6 и нет заема в бите 7, или есть заем в бите 7 и нет - в бите 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.

Алгоритм

 

 

Пример

(A) (A)-(C)-(Rn), где n=0-7

 

;(A)=0C9H, (R2)=54H, (C)=1

(С) x, (OV) =x, (AC) =x, где x {0,1}

SUBB A,R2 ;(A)=74H,(R2)=54H,

 

 

;(AC)=0, (C)=0, (OV)=1

 

 

 

 

SUBB A,@Ri ;где i {0,1}

 

 

1 0 0 1 0 1 1 i

 

Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, из содержимого аккумулятора A, помещая результат в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

 

 

Пример

(A) (A)-(C)-((Ri)), где i {0,1}

;(A)=49H, (R0)=3AH,

(С) x, (OV) =x, (AC) =x, где x {0,1}

;в РПД (3AH)=68H, (C)=1

 

 

SUBB A,@R0 ;(A)=0E0H,

 

 

;(AC)=0, (C)=1, (OV)=0

 

 

 

 

 

 

 

 

 

SUBB A,direct

1 0 0 1 0 1 0 1

direct

 

Команда "вычитание с заемом" вычитает из содержимого аккумулятора A содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8- разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

 

 

 

Пример

(A) (A)-(C)-(direct)

 

;(A)=97H, (C)=0, (B)=25H

(С) x, (OV) =x, (AC) =x, где x {0,1}

SUBB A,B

;(A)=72H, (B)=25H,

 

 

;(AC)=0,

(C)=0, (OV)=1

 

 

 

 

SUBB A,#data8

1 0 0 1 0 1 0 0

data8

 

Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с байтом данных data8, непосредственно указанным в команде, из содержимого аккумулятора A, помещая результат в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

(A) (A)-(C)-data8

;(A)=0BEH, (C)=0

(С) x, (OV) =x, (AC) =x, где x {0,1}

SUBB A,#3FH ;(A)=7FH,

 

;(AC)=1, (C)=0, (OV)=1

 

 

SWAP A

1 1 0 0 0 1 0 0

Команда "обмен тетрадой" осуществляет обмен содержимым младших четырех и старших четырех битов аккумулятора A. Команда на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[3-0]) (A[7-4])

 

;(A)=49H

(A[7-4]) (A[3-0])

 

SWAP A ;(A)=94H

 

 

 

XCH A,Rn ;где n=0-7

1 1 0 0 1 r r r

где rrrB=000B-111B

Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (Rn), где n=0-7

 

;(A)=0FAH, (R6)=93H

(Rn) (A)

 

XCH A,R6 ;(A)=93H, (R6)=0FAH

XCH A,@Ri ;где i {0,1}

 

 

1 1 0 0 0 1 1 i

 

Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) ((Ri)), где i {0,1}

 

;(A)=0FDH, (R1)=30H,

((Ri)) (A)

 

;в РПД (30H)=17H

 

 

XCH A,@R1 ;(A)=17H, (R1)=30H,

 

 

;в РПД (30H)=0FDH

 

 

 

 

XCH A,direct

1 1 0 0 0 1 0 1

direct

 

Команда "обмен байтом" выполняет обмен содержимого аккумулятора A с содержимым ячейки, адрес которой определяется символическим именем direct в области резидентной памяти данных или в среде регистров специальных функций. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (direct)

 

;(A)=24H, (DPL)=3DH

(direct) (A)

 

XCH A,DPL ;(A)=3DH,

 

 

;(DPL)=24H

 

 

 

 

XCHD A,@Ri ;где i {0,1}

 

 

1 1 0 1 0 1 1 i

 

Команда "обмен тетрадой" выполняет обмен содержимого младшей тетрады (биты 3-0) аккумулятора A с содержимым младшей тетрады ячейки резидентной памяти данных (РПД), при этом содержимое старших тетрад A и используемой ячейки, адресуемой содержимым заданного регистра Ri выбранного банка, не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A[3-0]) ((Ri))[3-0], где i {0,1}

;(A)=0FDH, (R1)=30H,

((Ri))[3-0] (A[3-0])

 

;в РПД (30H)=17H

 

 

XCHD A,@R1 ;в РПД (30H)=1DH,

 

 

;(A)=0F7H, (R1)=30H

 

 

 

 

 

 

 

XRL A,Rn ;где n=0-7

0 1 1 0 1 r r r

где rrrB=000B-111B

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. При этом содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A) (A) (Rn), где n=0-7

 

;(A)=0FH, (R4)=0F3H

 

 

XRL A,R4 ;(A)=0FCH, (R4)=0F3H

XRL A,@Ri ;где i {0,1}

 

 

0 1 1 0 0 1 1 i

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

(A) (A) ((Ri)), где i {0,1}

;(A)=22H, (R0)=55H,

;в РПД (55H)=33H XRL A,@R0 ;(A)=11H,

;(R0)=55H, в РПД (55H)=33H

XRL A,direct

0 1 1 0 0 1 0 1

direct

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A)(A)(direct)

 

;(A)=23H, (PSW)=34H

 

 

XRL A,PSW ;(A)=17H, (PSW)=34H

 

 

 

 

 

 

 

 

 

XRL A,#data8

0 1 1 0 0 1 0 0

data8

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с байтом данных data8, непосредственно указанным в команде. Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

(A)(A)data8

 

;(A)=36H

 

 

XRL A,#22H ;(A)=14H

 

 

 

 

XRL direct,A

0 1 1 0 0 0 1 0

direct

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

 

 

Пример

 

 

(direct)(A)(direct)

 

;(A)=55H, (P2)=63H

 

 

 

 

XRL P2,A ;(A)=55H, (P2)=36H

 

 

 

 

 

 

XRL direct,#data8

0 1 1 0 0 0 1 1

direct

 

data8

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

Алгоритм

Пример

(direct)(direct)data8

;(P1)=0FFH

 

XRL P1,#11H ;(P1)=0EEH