*запись «;(A)=55H, (DPTR)=1234H, в ВПД с=11H» означает, что до момента выполнения команды в аккумуляторе (А) содержится число 55Н, в регистре (DPTR)-число 1234H, в ячейке внешней памяти данных с адресом (1234H) содержится число 11H
**на данном этапе происходит выполнение команды (по нажатию клавиши F10)
***после выполнения команды контролируется результат (проверяется содержимое ячеек памяти) и сверяется с результатом, приведенным в примере
3.Содержание отчета
1.Назначение и особенности применения команд пересылки данных.
2.Систематизация команд пересылки данных по способу адресации.
3.Файл с результатами выполнения работы.
4.Контрольные вопросы:
1.Перечислите команды пересылки в пределах резидентского ЗУПД.
2.Перечислите команды пересылки за пределами резидентского ЗУПД.
3.Перечислите команды обмена.
4.Перечислите команды прямой и косвенной адресации.
62
Лабораторная работа №3
Тема: Программирование арифметических и логических операций,
битовых операций на языке ассемблер МК-51
Цель работы: изучение программирования арифметических и логических
операций микро-ЭВМ МК-51.
Указания по выполнению работы
1. Изучение команд арифметических и логических операций.
ADD A,Rn ;где n=0-7 |
0 0 1 0 1 r r r |
где rrrB=000B-111B |
|
|
|
Команда "сложение" складывает содержимое аккумулятора A с содержимым заданного регистра Rn выбранного банка, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении переносов из разрядов 7
и 3 результата устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC соответственно, в противном случае эти флаги сбрасываются в
"0". Флаг переполнения OV устанавливается, если есть перенос из бита 6 и нет переноса из бита 7, или есть перенос из бита 7 и нет - из бита 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.
|
Алгоритм |
|
Пример |
||
|
|
|
|
|
|
|
|
|
|
;(A)=0C3H, (R6)=0AAH |
|
(A) (A)+(Rn), где n=0-7 |
|
|
|
||
(С) x, |
(OV) =x, |
(AC) =x, |
где |
ADD A,R6 ;(A)=6DH,(R6)=0AAH, |
|
x {0,1} |
|
|
|
;(AC)=0, (C)=1, (OV)=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 0 1 0 0 1 1 i |
||
ADD A,@Ri ;где i {0,1} |
|
|
|
||
Команда "сложение" складывает содержимое аккумулятора A с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое
используемой ячейки не изменяется. Логика установки (сброса) флагов и время
63
выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
Алгоритм |
Пример |
|
|
(A) (A)+((Ri)), где i {0,1} |
;(A)=95H, (R1)=31H, |
(С) x, (OV) =x, (AC) =x, где x {0,1} |
;в РПД (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) |
;(A)=77H, (P1)=0FFH |
(С) x, (OV) =x, (AC) =x, где x {0,1} |
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.
Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
64
Алгоритм |
Пример |
|
|
|
;(A)=09H |
(A) (A)+data8 |
|
(С) x, (OV) =x, (AC) =x, где x {0,1} |
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 |
|
|
;(A)=0B2H, (R3)=99H, (C)=1 |
|||
(С) x, |
(OV) =x, |
(AC) =x, |
где |
ADDC A,R3 ;(A)=4CH,(R3)=99H, |
||
x {0,1} |
|
|
|
|
;(AC)=0, (C)=1, (OV)=1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 0 1 1 0 1 1 i |
||
ADDC A,@Ri ;где i {0,1} |
|
|
|
|
||
Команда "сложение с переносом" одновременно складывает содержимое аккумулятора A, содержимое флага переноса C и содержимое ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка. Результат помещается в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
65
Алгоритм |
|
|
Пример |
|
|
|
|
|
|
|
|
|
|
|
|
;(A)=0D5H, (R0)=3AH, |
|
|
||
(A) (A)+(C)+((Ri)), где i |
{0,1} |
|
|
|
|
|
(С) x, (OV) =x, (AC) =x, где x {0,1} |
;в РПД (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) |
;(A)=11H, (C)=1, |
(С) x, (OV) x, (AC) x, |
;(DPH)=0DFH |
где x {0,1} |
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. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.
66