регистра Rn выбранного банка, помещая результат в A. При этом содержимое используемого регистра не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
Алгоритм
(A) (A) (Rn), где n=0-7
XRL A,@Ri ;где i {0,1} |
0 1 1 0 0 1 1 i |
|
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.
|
|
Алгоритм |
|
|
Пример |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
;(A)=22H, (R0)=55H, |
|
|
||
(A) |
(A) |
((Ri)), где i {0,1} |
|
|
|
|
|
|
|
|
|
|
|
;в РПД (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 цикл.
Алгоритм |
Пример |
|
|
87
(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)
XRL direct,#data8 |
0 1 1 0 0 0 1 1 |
direct |
data8 |
|
|
|
|
Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 байта данных data8, непосредственно указанного в команде, с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется
88
символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.
Алгоритм |
Пример |
|
|
(direct) (direct) data8 |
;(P1)=0FFH |
|
XRL P1,#11H ;(P1)=0EEH |
|
|
2.Задание на лабораторную работу.
1.Изучить группы команд арифметических и логических операций
2.Запустить программу AVSIM
3.Используя программу симулятора проверить выполнение команд,
приведенных в примерах, убедится в правильности их выполнения.
4. По заданию преподавателя составить одну из программ:
-суммирование многобайтных чисел;
-вычитание многобайтных чисел;
-перемножение однобайтовых чисел;
-деление многобайтного целочисленного числа на однобайтное.
Ввести программу в поле команд программы симулятора, проверить работу программы в пошаговом режиме, оценить результаты вычисления.
3.Содержание отчета
1.Результаты выполнения команд.
2.Ассемблерный листинг программы.
3.Результат выполнения программы.
4.Контрольные вопросы
1.Состав группы команд арифметических операций.
2.Состав группы команд логических операций.
3.Представление числа в дополнительном коде.
89
4.Алгоритм суммирования многобайтных чисел.
5.Алгоритм вычитания многобайтных чисел.
6.Алгоритм умножения многобайтных чисел.
7.Алгоритм деления многобайтных чисел.
90
Лабораторная работа №4
Тема: Программирование операций передачи управления, операций работы со стеком
Цель работы: изучение программирования микро-ЭВМ МК-51 с
использованием группы команд ветвления, передачи управления и команд
работы со стеком.
Указания по выполнению работы
1.Изучение команд передачи управления и работы со стеком
ACALL addr11 |
addr11[10-8] 1 0 0 0 1 |
addr11[7-0] |
|
|
|
Команда "абсолютный вызов подпрограммы" вызывает безусловно подпрограмму, размещенную по адресу addr11. При этом содержимое счетчика команд PC увеличивается на 2 для получения адреса следующей команды,
после чего полученное 16-разрядное значение PC помещается в стек, и
содержимое указателя стека SP также увеличивается на 2. Адрес перехода образуется с помощью конкатенации (сцепления) 5-ти старших бит увеличенного содержимого счетчика команд PC, содержимого 7-5 битов старшего байта команды и содержимого второго байта команды. Адрес перехода и указанная команда должны находиться внутри одной страницы памяти программ (ПП) объемом 2 Кбайт, определяемой содержимым пяти старших бит PC. Время выполнения команды 2 цикла.
Алгоритм |
Пример |
|
(PC) (PC)+2, (SP) (SP)+1 |
;(SP)=07H, (PC)=28DH, |
|
((SP)) (PC[7-0]), (SP) (SP)+1 |
;MT1 соответствует адресу ;345H в |
|
((SP)) (PC[15-8]) |
ПП |
|
(PC[10-0]) addr11[10-8] addr11[7-0], |
ACALL MT1 ;(PC)=345H, |
|
где есть знак конкатенации |
;(SP)=09H, |
|
;в РПД (09H)=02H, (08H)=8FH |
||
|
91