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

kniga_mikroprotsessory

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

Алгоритм

Пример

 

 

 

(A[M]) (A[M+1]), где M=0-6

;(A)=85H, (C)=1

(A[7]) (A[0])

RR A

 

 

RR A ;(A)=61H, (C)=1

 

 

 

RRC A

 

 

 

0 0 0 1 0 0 1 1

 

 

 

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

аккумулятора пересылается во флаг переноса C, а содержимое C - в бит 7

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

Алгоритм

Пример

 

 

(A[M]) (A[M+1]), где M=0-6

;(A)=85H, (C)=0

(A[7]) (С), (С) (A[0])

RRC A ;(A)=42H, (C)=1

 

 

SETB C

1 1 0 1 0 0 1 1

 

 

Команда "установить бит" устанавливает содержимое флага переноса C в "1".

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

цикл.

Алгоритм

 

 

 

Пример

 

 

 

 

 

 

(C) 1

 

;(C)=0

 

 

 

 

SETB C ;(C)=1

 

 

 

 

 

 

 

 

SETB bit

 

 

 

 

1 1 0 1 0 0 1 0

 

bit

 

 

 

 

 

 

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

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

Алгоритм

Пример

 

 

(bit) 1

;(P2)=38H

 

SETB P2.0 ;(P2)=39H

 

 

SUBB A,Rn ;где n=0-7

1 0 0 1 1 r r r

где rrrB=000B-111B.

 

 

 

Команда "вычитание с заемом" вычитает содержимое заданного регистра Rn

выбранного банка вместе с содержимым флага переноса С из содержимого аккумулятора A, помещая результат в A. Содержимое используемого регистра не изменяется. При появлении заема в разрядах 7 и 3 аккумулятора устанавливаются в "1" флаг переноса C и флаг дополнительного переноса AC

соответственно, в противном случае эти флаги сбрасываются в "0".

Содержимое флага переполнения OV устанавливается, если есть заем в бите 6 и

нет заема в бите 7, или есть заем в бите 7 и нет - в бите 6, в противном случае флаг OV сбрасывается. Время выполнения команды 1 цикл.

 

Алгоритм

 

Пример

 

 

 

 

(A) (A)-(C)-(Rn), где n=0-7

 

;(A)=0C9H, (R2)=54H, (C)=1

(С) x,

(OV) =x,

(AC) =x,

где

SUBB A,R2 ;(A)=74H,(R2)=54H,

x {0,1}

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 0 1 0 1 1 i

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

 

 

 

Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (РПД), адресуемой содержимым заданного регистра Ri выбранного банка, из содержимого аккумулятора A, помещая результат в A. Содержимое используемой ячейки не изменяется. Логика установки (сброса) флагов и время выполнения такие же,

как у рассмотренной выше команды с аналогичной мнемоникой.

83

Алгоритм

 

 

Пример

 

 

 

 

 

 

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

 

;(A)=49H, (R0)=3AH,

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

;в РПД (3AH)=68H, (C)=1

 

 

 

SUBB A,@R0 ;(A)=0E0H,

 

 

 

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

 

 

 

 

 

 

SUBB A,direct

 

 

 

 

 

1 0 0 1 0 1 0 1

direct

 

 

 

 

 

 

Команда "вычитание с заемом" вычитает из содержимого аккумулятора A

содержимое флага переноса С вместе с содержимым ячейки резидентной памяти данных (либо регистра специальных функций), 8-разрядный адрес которой (которого) определяется символическим именем direct. Результат помещается в A. Содержимое используемой ячейки или используемого регистра не изменяется. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

 

Алгоритм

 

 

Пример

 

 

 

 

 

 

(A) (A)-(C)-(direct)

 

 

 

;(A)=97H, (C)=0, (B)=25H

(С) x,

(OV) =x,

(AC) =x,

где

SUBB A,B ;(A)=72H, (B)=25H,

x {0,1}

 

 

 

 

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

 

 

 

 

 

 

SUBB A,#data8

 

 

 

 

 

 

1 0 0 1 0 1 0 0

data8

 

 

 

 

 

 

 

Команда "вычитание с заемом" вычитает содержимое флага переноса С вместе с байтом данных data8, непосредственно указанным в команде, из содержимого аккумулятора A, помещая результат в A. Логика установки (сброса) флагов и время выполнения такие же, как у рассмотренной выше команды с аналогичной мнемоникой.

Алгоритм

Пример

 

 

84

1 1 0 0 0 1 1 i

(A) (A)-(C)-data8

;(A)=0BEH, (C)=0

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

SUBB A,#3FH ;(A)=7FH,

 

 

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

 

 

 

 

SWAP A

 

 

 

 

1 1 0 0 0 1 0 0

 

 

 

 

 

Команда "обмен тетрадой" осуществляет обмен содержимым младших четырех и старших четырех битов аккумулятора A. Команда на флаги не влияет и имеет время выполнения 1 цикл.

Алгоритм

Пример

 

 

(A[3-0]) (A[7-4])

;(A)=49H

(A[7-4]) (A[3-0])

SWAP A ;(A)=94H

 

 

XCH A,Rn ;где n=0-7

1 1 0 0 1 r r r

где rrrB=000B-111B.

 

 

 

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

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

Алгоритм

Пример

 

 

(A) (Rn), где n=0-7

;(A)=0FAH, (R6)=93H

(Rn) (A)

XCH A,R6 ;(A)=93H, (R6)=0FAH

 

 

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

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

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

Алгоритм

Пример

 

 

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

;(A)=0FDH, (R1)=30H,

((Ri)) (A)

;в РПД (30H)=17H

 

XCH A,@R1 ;(A)=17H, (R1)=30H,

 

 

85

;в РПД (30H)=0FDH

XCH A,direct

1 1 0 0 0 1 0 1

direct

 

 

 

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

содержимым ячейки, адрес которой определяется символическим именем direct

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

цикл.

Алгоритм

Пример

 

 

 

 

 

;(A)=24H, (DPL)=3DH

(A) (direct)

 

 

(direct) (A)

XCH A,DPL ;(A)=3DH,

 

 

;(DPL)=24H

 

 

 

 

 

 

 

 

 

 

1 1 0 1 0 1 1 i

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

 

 

 

Команда "обмен тетрадой" выполняет обмен содержимого младшей тетрады

(биты 3-0) аккумулятора A с содержимым младшей тетрады ячейки резидентной памяти данных (РПД), при этом содержимое старших тетрад A и

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

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

Алгоритм

 

 

Пример

 

 

 

 

 

(A[3-0]) ((Ri))[3-0], где i {0,1}

 

;(A)=0FDH, (R1)=30H,

((Ri))[3-0] (A[3-0])

 

;в РПД (30H)=17H

 

 

 

XCHD A,@R1 ;в РПД (30H)=1DH,

 

 

 

;(A)=0F7H, (R1)=30H

 

 

 

 

 

 

XRL A,Rn ;где n=0-7

 

 

 

где rrrB=000B-111B.

 

0 1 1 0 1 r r r

 

 

 

 

 

 

 

Команда "логическое ИСКЛЮЧАЮЩЕЕ ИЛИ" выполняет поразрядное сложение по модулю 2 содержимого аккумулятора A с содержимым заданного

86

Пример
;(A)=0FH, (R4)=0F3H
XRL A,R4 ;(A)=0FCH, (R4)=0F3H

регистра 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)=55H, (P2)=63H
XRL P2,A ;(A)=55H, (P2)=36H

(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

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