Добавил:
Negorov1337@gmail.com inst:vech.no_17 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

kniga_mikroprotsessory

.pdf
Скачиваний:
21
Добавлен:
02.10.2020
Размер:
1.06 Mб
Скачать

*запись «;(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

Пример
;(A)=55H, (C)=0
ADDC A,#55H ;(A)=0AAH, ;(AC)=0, (C)=0, (OV)=1
0 1 0 1 0 1 1 i

Алгоритм

(A) (A)+(C)+data8

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

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

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

адресуемой содержимым заданного регистра Ri выбранного банка. Результат размещается в A. Содержимое используемой ячейки не изменяется. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

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

;(A)=0BCH, (R0)=35H,

 

;в РПД (35H)=47H

 

ANL A,@R0 ;(A)=04H,

 

;в РПД (35H)=47H

 

 

ANL A,direct

0 1 0 1 0 1 0 1

direct

 

 

 

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

определяется символическим именем direct. Результат помещается в A.

Содержимое используемой ячейки или используемого регистра не изменяется.

Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

(A) (A) (direct)

;(A)=0A3H, (PSW)=85H

 

ANL A,PSW ;(A)=81H,(PSW)=85H

 

 

67

ANL A,#data8

0 1 0 1 0 1 0 0

data8

 

 

 

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

Результат размещается в A. Команда на состояние флагов не влияет и имеет время выполнения 1 цикл.

 

Алгоритм

 

 

Пример

 

 

 

 

 

 

 

 

 

;(A)=36H

 

 

(A)

(A) data8

 

 

 

 

 

 

 

ANL A,#0DDH ;(A)=14H

 

 

 

 

 

ANL direct,A

 

 

 

0 1 0 1 0 0 1 0

direct

 

 

 

 

 

 

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

определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр.

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

Алгоритм

Пример

 

 

(direct) (direct) (A)

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

 

ANL P2,A ;(A)=55H,(P2)=00H

 

 

ANL direct,#data8

0 1 0 1 0 0 1 1

direct

data8

 

 

 

 

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

разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается соответственно в используемую ячейку или используемый регистр. Команда на состояние флагов не влияет и имеет время выполнения 2 цикла.

68

Алгоритм

 

 

 

Пример

 

 

 

 

 

 

 

 

 

 

 

data8

 

;(P1)=0FFH

 

 

(direct) (direct)

 

 

 

 

 

 

 

 

 

 

 

ANL P1,#73H ;(P1)=73H

 

 

 

 

 

 

 

 

 

ANL C,bit

 

 

 

 

 

 

 

 

 

 

1 0 0 0 0 0 1 0

 

bit

 

 

 

 

 

 

 

 

 

Команда "логическое И" выполняет конъюнкцию содержимого флага переноса

C с содержимым бита, 8-разрядный адрес которого определяется символическим именем bit в области ячеек резидентной памяти данных (РПД)

или регистров специальных функций, допускающей побитовое обращение.

Результат помещается в С. Содержимое используемого бита не изменяется.

Команда на состояние других флагов не влияет и имеет время выполнения 2

цикла.

 

Алгоритм

Пример

 

 

 

 

 

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

(C)

(C) (bit)

 

 

 

;в РПД (24H)=0FH

 

 

ANL C,P1.0 ;(C)=0, (P1[0])=0

 

 

ANL C,20H ;(C)=0, (24H)=0FH

 

 

 

ANL C,/bit

1 0 1 1 0 0 0 0

bit

 

 

 

Команда "логическое И" выполняет конъюнкцию содержимого флага переноса

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

 

 

 

 

Алгоритм

Пример

 

 

 

 

 

 

(bit)

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

(C)

(C)

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

69

CJNE A,direct,addr

1 0 1 1 0 1 0 1

direct

rel

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

определяется символическим именем direct, и выполняет переход по адресу addr, если содержимое A не равно содержимому используемой ячейки или используемого регистра, в противном случае выполняется следующая команда.

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

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

Алгоритм

Пример

 

 

если (direct) (A), то

;(A)=97H, (P2)=0F0H, (C)=0,

(PC) (PC)+3+rel и (C) 0

;(PC)=3FFH, MT3 соответству-

если (direct) (A), то

;ет адресу 41FH, rel=1DH

(PC) (PC)+3+rel и (C) 1

CJNE A,P2,MT3 ;(C)=1,

;(A)=97H, (P2)=0F0H,

если (direct)=(A), то (PC) (PC)+3 и

(C) 0

;(PC)=41FH

 

 

 

CLR A

1 1 1 0 0 1 0 0

 

 

Команда "сброс аккумулятора" сбрасывает (обнуляет) содержимое аккумулятора A, на состояние флагов не влияет и имеет время выполнения 1

цикл.

70

Пример
;(P1)=5EH=01011110B ;в РПД (28H)=31H
CLR P1.3 ;(P1)=56H=01010110B
CLR 40H ;(28H)=30H
1 1 1 1 0 1 0 0

Алгоритм

Пример

 

 

 

 

;(A)=6CH, (C)=0, (AC)=1

(A) 0

 

 

 

CLR A ;(A)=00H, (C)=0, (AC)=1

 

 

 

CLR C

 

 

 

1 1 0 0 0 0 1 1

 

 

 

Команда "сброс флага переноса" сбрасывает (обнуляет) содержимое флага переноса C, на состояние других флагов не влияет и имеет время выполнения 1

цикл.

Алгоритм

 

 

 

Пример

 

 

 

 

 

 

 

(C) 0

 

;(C)=1

 

 

 

 

 

CLR C ;(C)=0

 

 

 

 

 

 

 

 

 

CLR bit

 

 

 

 

 

 

1 1 0 0 0 0 1 0

 

bit

 

 

 

 

 

 

 

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

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

Алгоритм

(bit) 0

CPL A

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

цикл.

71

Соседние файлы в предмете Информатика