КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ

Лабораторная работа № 2

Цель работы: исследование организации микроконтроллера Intel 8051, программных средств управления ходом выполнения программки, приобретение способностей программирования повторяющихся алгоритмов, также программирования арифметико-логических и битовых операций в кодах микроконтроллера.

1. Место ПАМЯТИ ПРОГРАММ CSEG.

Для хранения программ и неизменяемых данных в МК 1816ВЕ51 употребляется логическое однородное линейное место памяти CSEG объемом 64 Кбайт КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ. Память программ адресуется 16-разрядным счетчиком РС. Младшие 4 Кбайта этого места соответствует встроенному EPROM микроконтроллера, другие 60 Кбайт реализуются наружными относительно МК схемами.

В пространстве CSEG выделяются последующие точки (адреса):

0000Н - RESET - стартовый адресок при сбросе системы;

0003H - EXTI0 - наружное прерывание 0;

000BH - TIMER0 - прерывание таймера/счетчика 0;

0013H - EXTI1 - наружное КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ прерывание 1;

001BH - TIMER1 - прерывание таймера / счетчика 1;

0023H - SINT - прерывание поочередного порта.

В CSEG определены два метода передачи управления:

1) ровная адресация при помощи 16-разрядного прямого адреса ad16;

2) относительная адресация, имеющая два варианта: при помощи 8-разрядного смещения (целое двоичное со знаком) относительно РС [(A)+(PC)] либо DPTR [(A)+(DPTR)].

Для 2-ух команд (AJMP, ACALL КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ) предусмотрена страничная адресация в CSEG, при помощи 11-разрядного адреса ad11. В данном случае 8 младших разрядов адреса размещаются во 2-м б команды, а 3 старших – в 3-х старших разрядах первого б команды:

Номер странички задается пятью старшими разрядами программного счетчика РС.

Следует отметить также, что в группе пересылки есть КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ особые команды MOVC A,@A+DPTR и MOVC A,@A+PC, которые позволяют считывать содержимое памяти программ. Обычно, эта возможность употребляется для организации таблиц констант в CSEG.

2. КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ.

Группу команд передачи управления образуют команды бесспорного перехода, бесспорного перехода, команды вызова подпрограмм и команды возврата из подпрограммы.

В КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ большинстве команд употребляется ровная адресация. Свойства команд приведены в табл. 2.1.

Таблица 2.1. Группа команд передачи управления

МНЕМОНИКА КОП Б Ц ОПЕРАЦИЯ
1. LJMP ad16 (PC) := ad16
2. AJMP ad11 aaa00001 (PC) := (PC) + 2; (PC[10-0] ) := ad11
3. SJMP rel (PC) := (PC) + 2; (PC) := (PC) + rel
4. JMP @A+DPTR (PC) := (A) + (DPTR)
5. JZ rel (PC) := (PC) + 2; если (A) == 0 то КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ (PC) := (PC)+rel
6. JNZ rel (PC) := (PC) + 2; если (A) != 0 то (PC) := (PC)+rel
7. JC rel (PC) := (PC) + 2; если (C) == 1 то (PC) := (PC)+rel
8. JNC rel (PC) := (PC) + 2; если (C) == 0 то (PC) := (PC)+rel
9. JB bit, rel (PC) := (PC) + 3; если (b) == 1 то (PC) := (PC)+rel
10. JNB bit,rel (PC) := (PC) + 3; если КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ (b) == 0 то (PC) := (PC)+rel
11. JBC bit, rel (PC) := (PC) + 3; если (b) == 1 то (PC) := (PC)+rel, (b) :=0
12. DJNZ Rn, rel 11011rrr (PC) := (PC)+ 2, (Rn) := (Rn) - 1; если (Rn) != 0, то (PC) := (PC)+rel
13. DJNZ ad, rel (PC) := (PC)+ 3, (ad) := (ad) - 1; если (ad) != 0, то (PC) := (PC)+rel
14. CJNZ A, ad КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ, rel (PC) := (PC)+ 3; если (A) != ad, то (PC) := (PC)+rel; если (А)<(ad), то (С):=1, по другому (С) := 0;
15. CJNE A, #d, rel (PC) := (PC)+ 3; если (A) != #d, то (PC) := (PC)+rel; если (А)<(#d), то (С):=1, по другому (С) := 0;
16. CJNZ Rn, #d, rel 10111rrr (PC) := (PC)+ 3; если (Rn) != #d, то (PC КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ) := (PC)+rel; если (Rn)<(ad), то (С):=1, по другому (С) := 0;
17. CJNZ @Ri, #d, rel 1011011i (PC) := (PC)+ 3; если ((Ri)) != #d, то (PC) := (PC)+rel; если ((Ri))<(#d), то (С):=1, по другому (С) := 0;
18. LCALL ad16 (PC) := (PC)+3, (SP) := (SP) + 1 ((SP)) := (PCL), (SP) := (SP)+1 ((SP)) := (PCH), (PC) := ad16
19. ACALL ad11 aaa КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ10001 (PC) := (PC)+2, (SP) := (SP) + 1 ((SP)) := (PCL), (SP) := (SP)+1 ((SP)):=(PCH), (PC[0-10]):= ad11
20. RET (PCH) :=((SP)), (SP) := (SP) + 1, (PCL) := ((SP)), (SP) := (SP) -1
21. RETI (PCH) :=((SP)), (SP) := (SP) + 1, (PCL) := ((SP)), (SP) := (SP) -1
22. NOP (PC) := (PC) + 1

3. АРИФМЕТИКО-ЛОГИЧЕСКИЕ ОПЕРАЦИИ

Команды данной группы позволяют делать последующие операции над 8-битными целыми двоичными числами: сложение, сложение КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ с учетом переноса, десятичную корректировку, инкремент и декремент, вычитание, умножение, деление, дизъюнкцию, конъюнкцию, исключающее Либо, инверсию, сброс и сдвиг. Описание команд приведено в табл. 3.1, 3.2 и на рис. 3.1. В табл. 3.3 приведены условия установки и сброса флагов.

Признак паритета Р меняется хоть какими командами, итог которых изменяет аккумулятор (включая команды пересылки КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ).

Таблица 3.1. Группа команд арифметических операций

N МНЕМОНИКА КОП Б Ц ОПЕРАЦИЯ
1. ADD A,Rn 00101rrr (A):=(A)+(Rn)
2. ADD A,ad (A):=(A)+(ad)
3. ADD A,@Ri 0010011I (A):=(A)+((Ri))
4. ADD A,#d (A):=(A)+#d
5. ADDC A,Rn 00111rrr (A):=(A)+(Rn)+(C)
6. ADDC A,ad КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ (A):=(A)+(ad)+(C)
7. ADDC A,@Ri 0011011I (A):=(A)+((Ri))+(C)
8. ADDC A,#d (A):=(A)+#d+(C)
9. DA A Десятичная корректировка
10. SUBB A,Rn 10011rrr (A):=(A)-(С)-(Rn)
11. SUBB A,ad (A):=(A)-(С)-(ad)
12. SUBB A,@Ri 1001011I (A):=(A)-(С)-((Ri))
13. SUBB A,#d (A КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ):=(A)-(С) - #d
14. INC A (A):=(A)+1
15. INC Rn 00001rrr (Rn):=(Rn)+1
16. INC ad (ad):=(ad)+1
17. INC @Ri 0000011i ((Ri)):=((Ri))+1
18. INC DPTR (DPTR):=(DPTR)+1
19. DEC A (A):=(A)-1
20. DEC Rn 00011rrr (Rn):=(Rn)-1
21. DEC ad (ad):=(ad)-1
22. DEC @Ri 0001011i ((Ri)):=((Ri))-1
23. MUL AB (B)(A КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ):= (A)*(B)
24. DIV AB (B).(A):= (A)/(B)

Таблица 3.2. Группа команд логических операций

МНЕМОНИКА КОП Б Ц ОПЕРАЦИЯ
1. ANL A,Rn 01011rrr (A):=(A)/\(Rn)
2. ANL A,ad (A):=(A)/\(ad)
3. ANL A,@Ri 0101011i (A):=(A)/\((Ri))
4. ANL A,#d (A):=(A) /\ #d
5. ANL ad,A (ad):=(ad)/\(A)
6. ANL ad КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ,#d (ad):=(ad)/\(#d)
7. ORL A,Rn 01001rrr (A):=(A)\/(Rn)
8. ORL A,ad (A):=(A)\/(ad)
9. ORL A,@Ri 0100011i (A):=(A)\/((Ri))
10. ORL A,#d (A):=(A)\/ #d
11. ORL ad,A (ad):=(ad)\/(A)
12. ORL ad,#d (ad):=(ad)\/ #d
13. XRL A,Rn 01101rrr (A):=(A)+(Rn КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ)
14. XRL A,ad (A):=(A)+(ad)
15. XRL A,@Ri 0110011i (A):=(A)+((Ri))
16. XRL A,#d (A):=(A)+ #d
17. XRL ad,A (ad):=(ad)+(A)
18. XRL ad,#d (ad):=(ad)+ #d
19. CLR A (A):=0
20. CPL A (A):= инверсия (А)
21. RL A На лево циклически (рис. а)
22. RLC КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ A На лево через С (рис. б)
23. RR A На право циклически (рис. в)
24. RRC A На право через С (рис. г)
25. SWAP A Обмен тетрадами (рис. д)

Таблица 3.3. Установка признаков (флагов)

МНЕМОНИКА CY OV AC МНЕМОНИКА CY OV AC
ADD + + + CLR C - -
ADDC + + + CPL C + - -
SUBB + + + ANL C,bit + - -
MUL КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ + - ANL C, / bit + - -
DIV + - ORL C,bit + - -
DA + - - ORL C, / bit + - -
RRC + - - MOV C, bit + - -
RLC + - - CJNE + - -
SET C - -

(+) - меняется

( -) - не меняется

Организация сдвигов

Рис. 3.1. Типы сдвигов данных

4. КОМАНДЫ РАБОТЫ С БИТОВЫМИ ДАННЫМИ

Данная группа команд оперирует с однобитными операндами. В качестве операндов могут выступать отдельные биты неких регистров особых функций, биты КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ портов и биты 16 ячеек внутренней памяти данных. Все адресуемые биты образуют одноразрядное линейно упорядоченное место BSEG емкостью 256 бит.

В пространстве BSEG употребляется только ровная адресация, прямой восьмиразрядный адресок в пространстве BSEG обозначается bit.

Адресация в пространстве BSEG иллюстрируется табл. 4.1.

Группа команд операций с битами (табл. 4.2) включает 6 операций: три одноместных операции: установки (CLR КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ), сброса (SETB) и инверсии (CPL), две двухместных операции: конъюнкции и дизъюнкции, и операцию пересылки. В качестве "аккума" в битовых операциях употребляется триггер (флаг) переноса С. Свойства битовых команд приведены в табл. 4.2.

Таблица 4.1. Адресация в пространстве BSEG

Адресок в пространстве DSEG Разряд ячейки внутренней памяти данных
0F 0E 0D 0C 0B КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ 0A
1F 1E 1D 1C 1B 1A
2F 2E 2D 2C 2B 2A
3F 3E 3D 3C 3B 3A
4F 4E 4D 4C 4B 4A
2A
2B 5F 5E 5D 5C 5B 5A
2C
2D 6F 6E 6D 6C 6B 6A
2E
2F 7F 7E 7D 7C 7B КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ 7A

Регистры специального предназначения

Адресок в пространстве DSEG Разряд регистра специального предназначения Регистр
PO
8F 8E 8D 8C 8B 8A TCON
P1
9F 9E 9D 9C 9B 9A SCON
A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
A8 AF -- -- AC AB AA A9 A8 IE
B0 B7 B КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ6 B5 B4 B3 B2 B1 B0 P3
B8 -- -- -- BC BB BA B9 B8 IP
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
E0 E7 E6 E5 E4 E3 E2 E1 E0 A
F0 F7 F6 F5 F4 F3 F2 F1 F0 B

Таблица 4.2. Группа команд операций КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ с битами

МНЕМОНИКА КОП Б Ц ОПЕРАЦИЯ
1. CLR C (C):=0
2. CLR bit (b):=0
3. SET C (C):=1
4. SET bit (b):=1
5. CPL C (C):= ~ C
6. CPL bit (b):= ~ (b)
7. ANL C,bit (C):=(C)/\(b)
8. ANL C,/bit (C):=(C)/\~(b)
9. ORL C,bit (C):=(C)\/(b)
10. ORL C,/bit (C):=(C)\/~(b КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ)
11. MOV C,bit (C):=(b)
12. MOV bit,C (b):=(C)

~ -- инверсия

5. ЗАДАНИЕ ПО ЛАБОРАТОРНОЙ РАБОТЕ

Пусть в памяти программ, начиная с ячейки ADR2, размещена таблица кодов Z длиной N.

- записать в кодах МК программку, которая делает пересылку данного массива в RAM, начиная с адреса ADR3. Программка должна начинаться с ячейки КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ ADR1;

- после пересылки массива вычислить значение функции F1, начальными данными для которой являются элементы начального массива;

- вычислить значение битовой функции F2, начальными данными для которой являются разряды значения функции F1. Итог поместить в бит с порядковым номером, который соответствует номеру варианта.

Таблица 5.1. Таблица вариантов заданий

НОМЕР ADR1 ADR2 N ADR3
62F F КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ
53E D
44A C
B
A 3D
4F
78A 3A
69D F 4C
5AF E
4BA
3C9
2D8 3A1 4C
1E4 4B2 6C
7F5 5C2 6F
6E6 6D2 3A
5A1 7E2 F 4A
4D3 1F2 A 5B
3C8 2E2 B 3B
26F 3D2 C 4B
4BE D КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ
3CA E
2D3 3A2 F
1E7 4B2
7F3 5C2 3D
6E5 6D2
5AD 7E4 C 3E
4D2 2E1 E
E 4F
15F 5D3 F 3F
3C6 5C

Коды данных соответствуют ASCII-символам фамилии, имени и отчества студента.

Таблица 5.2. Метод вычисления функции F1

Вид функции F2 для вычисления определяется последующим КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ образом. Значение F1 имеет формат (поразрядно)

X7 X6 X5 X4 X3 X2 X1 X0

F2 = (X7) OP1 (X6) OP2 (X5) OP3 (X4) OP4 (X3) OP5 (X2) OP6 (X1) OP7 (X0),

где OPi - булева операция, находится в таблице 5.3.

Таблица 5.3. Таблица операций

Z
OP1 Ù Ù Ù Ù Ù Ú Ú Ú Ú Ú
OP2 Å Å Å Ù Ù Ù Ú Ú Ú Ú
OP3 Ú Ú Ú Å Å Å Å Ú Å Ù
OP4 Å Å Ú Ù Ú Ù Ù Ù Ú Ú
OP5 Ù Ù Ú Ú Ú Å Å Å Å Å
OP6 Å Ú Ù Ú Ù Ù Å Å Ù Ù
OP6 Ú Å Å Å Å Å Ú Ù Å Ù

/\ - операция КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ И

\/ - операция Либо

+ - операция ИСКЛЮЧАЮЩЕЕ Либо

6. СОДЕРЖАНИЕ ОТЧЕТА:

- определение варианта задания по лабораторной работе:

для табл. 5.1.: N – выдается педагогом;

для табл. 5.2.: левая часть: (N*3) mod 10;

правая часть: (N*7) mod 10;

для табл. 5.3.: (N*13) mod 10;

- задание по лабораторной работе;

- подробная блок-схема метода решения намеченной цели;

- контрольный просчет;

- текст программки с подробными комментами.

7. Куски ВЫПОЛНЕНИЯ ЗАДАНИЯ

В КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ памяти команд с адреса ADR1 размещено N кодов. Нужно переписать их в память данных, начиная с адреса ADR2.

Текст программки:

MET1: MOV PSW, #00 ; Выбор банка Bank0

… MOV DPTR, ; Указатель на память программки

… MOV R0, ; Указатель на память данных

… MOV R1, ; Количество частей массива

MET2: MOV A, R1 ; Индекс текущего элемента КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ массива

… MOVC A, @A+DPTR ; Получение элемента в А

… MOV @R0, A ; Пересылка в память данных

… DEC R0 ; Уменьшение индекса

… DJNZ R1, MET2 ; Организация цикла

… NOP

Пусть в памяти данных, начиная с ячейки ADR1, размещен массив кодов длиной N. Нужно вычислить сумму четных значений частей этого массива, итог поместить в ячейки RAM с адресами ADR2, ADR2+1 (старший и КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ младший байты соответственно).

Текст программки:

MET1: MOV PSW, #00 ; Выбор банка Bank0

… MOV R2, ; Количество частей массива

… MOV R0, ; Указатель на память данных

… CLR A ; Чистка А

… MOV R3, A ; Чистка младшей части суммы

… MOV R4, A ; Чистка старшей части суммы

MET2: MOV A, @R0 ; Получение первого элемента

… JB A.0, MET3 ; Если младший бит КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ = 0, число четное

… ADD A, R3 ; Подсчет суммы

… MOV R3, A ; Сохранение младшей части суммы

… JNC MET3 ; Если не было переноса à след. элемент

… INC R4 ; Инкремент старшей части суммы

MET3: INC R0 ; Сдвиг указателя на след. элемент

… DJNZ R2, MET2 ; Организация цикла

… MOV , R4 ; Сохранение старшей

… MOV , R3 ; и младшей частей результата

Пусть в DSEG, в ячейке ADR1 размещен код КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ CODE. Записать в кодах МК Intel 8051 программку, которая делает вычисление данной булевой функции F=X4 Ù ~X3 Ú X0 над этими кодами. Итог вычислений должен быть записан по адресу ADR2 места BSEG.

Внимание! Не запамятовывайте о ценностях логических операций!!!

Текст программки:

MET1: MOV 20, ; Если ADR1 за пределами BSEG

… MOV C, 20.4 ; С = X4

… ANL КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ, ОРГАНИЗАЦИЯ ЦИКЛОВ, АРИФМЕТИЧЕСКИХ, ЛОГИЧЕСКИХ, БИТОВЫХ ОПЕРАЦИИ C, /20.3 ; C = X4 Ù ~X3

… ORL C, 20.0 ; C = X4 Ù ~X3 Ú X0

… MOV , C ; Запись результата

ЗАМЕЧАНИЕ:

Эмулятор FD51 ошибочно обрабатывает битовую команду MOV:

Пусть С = 1, а в ячейке 2D значение 1111 1111.

Выполнив команду MOV 2D.6, C, в ячейке получаем 0100 0000.


komandnoe-pervenstvo-po-kursam.html
komandoobrazovanie-kak-faktor-povisheniya-effektivnosti-sovremennoj-organizacii-22-00-08-sociologiya-upravleniya.html
komanduyushij-vvs-moskovskogo-okruga-2-glava.html