резидентной памяти данных или в среде регистров специальных функций. При этом содержимое A не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм |
|
|
|
Пример |
|
(direct) (A) |
|
;(A)=3CH, (B)=4DH |
|
||
|
|
MOV B,A |
|
|
|
|
|
;(A)=3CH,(B)=3CH |
|
||
MOV direct,Rn ;где n=0-7 |
|
|
|
где rrrB=000-111B. |
|
1 0 0 0 1 r r r |
|
direct |
|||
Команда "переслать байт" пересылает содержимое заданного регистра 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 цикла.
57
Алгоритм |
|
|
|
Пример |
|
|
(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
MOV @Ri,#data8 ;где i {0,1} |
0 1 1 1 0 1 1 i |
data8 |
58
Команда "переслать байт" копирует байт данных 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 |
59
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 Кбайт.
60
Алгоритм |
Пример |
|
(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 |
2.Задание на лабораторную работу
Изучить команды передачи данных и выполнить примеры, приведенные
для каждой команды при помощи симулятора, сохранить результаты в файл.
Примеры приведены в следующем формате
Пример
;состояние регистров и ячеек памяти до выполнения команды* КОМАНДА (этап выполнения)** ;состояние регистров и ячеек памяти после выполнения команды***
61