Методические указания к выполнению лабораторных работ по курсу «Микропроцессорная техника»

Вид материалаМетодические указания
В. Команда NOP
DEL В осуществляет регулируемую временную задержку, и ее входным параметром является двухбайтное число, записанное в паре регист
Подобный материал:
1   2   3   4   5   6

За счет изменения входных параметров можно влиять на конечный результат выполнения подпрограмм. Рассмотрим это на примере подпрограммы 4.2 регулируемой временной задержки.


Алгоритм работы простой подпрограммы временной задержки приведен на рис. 4.1.


Общее время задержки вычисляется по формуле

T=t1+(t2+t3+t4)N+t5

где t1, t2, t3, t4, t5 – длительность выполнения команд, входящих в подпрограмму временной задержки;

N – число, первоначально записанное в счетчике, в качестве которого используется регистр В.

Команда NOP используется для увеличения времени выполнения цикла, а следовательно, и общей задержки. Вместо команды NOP может быть использована любая последовательность команд, выполнение которых не изменяет содержимого регистров микропроцессора. Время записи числа N в регистр В и возврата из подпрограммы t1+t5 фиксировано и в цикл не входит. Уникальная задержка для приведенной подпрограммы определяется при N=01 Н и равна t1+t2+t3+t4+t5. Максимальная задержка имеет место при N=00 Н и вычисляется по формуле Т= t1+(t2+t3+t4)256+t5

Программа 4.2 состоит из двух подпрограмм: DEL В и DEL A.

Подпрограмма DEL В осуществляет регулируемую временную задержку, и ее входным параметром является двухбайтное число, записанное в паре регистров В,С. Это число и определяет длительность задержки в миллисекундах. Частным случаем подпрограммы DEL В является подпрограмма DEL А, осуществляющая фиксированную задержку в 1 мс и не имеющая входных параметров. Таким образом, если необходимо иметь в программе фиксированную задержку в 1 мс, то можно обращаться с помощью команды CALL к подпрограмме DEL А При необходимости получения определенной заданной временной задержки в программе следует записать соответствующее число в регистры В и С, а затем вызвать подпрограмму DEL В.


Программа 4.2


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8000

C5

DEL A

PUSH B

Сохранить в стеке содержимое регистров

В и С

8001

01 0100




LXI B, 0001H

Установить длительность 1мс

8004

C3 0880




JMP DEL 1




8007

C5

DEL B

PUSH B

Сохранить в стеке содержимое регистров

В и С

8008

F5

DEL 1

PUSH PSW

Сохранить в стеке содержимое регистра признаков

8009

AF




XRA A

Очистить аккумулятор

800А

D5




PUSH D

Сохранить в стеке содержимое регистров

D и E

800В

01




LXI B,TIME

Указать величину задержки в мс

800Е

1647

DEL 2

MVI D,47

Загрузить счетчик заде-ржки величиной в 1мс

8010

15

DEL 3

DCR D

Уменьшить содержимое счетчика на 1

8011

C2 1080




JNZ DEL 3

Если не нуль, продолжить

8014

0B




DCX B

Уменьшить на 1 содержимое счетчика длительности

8015

B8




CMP B

Если регистр В не обнулен,

8016

C2 0E80




JNZ DEL 2

то продолжать

8019

B9




CMP C

Если регистр С не обнулен,

801А

C2 0E80




JNZ DEL 2

то продолжать

801D

D1




POP D

Восстановить содержимое регистров

D и E

801E

F1




POP PSW

Восстановить содержимое регистра признаков и аккумулятора

801F

C1




POP B

Восстановить содержимое регистров

В и С

8020

09




RET

Возвратиться из подпрограммы


Программа 4.3 предназначена для определения номера самого младшего,содержащего нуль разряда 8-битового числа, формиркемого в регистре С.


Программа 4.3


Адрес

Машин-ный код

Метка

Мнемокод

Комментарий

8800

OC

WAIT C

INR C

Увеличить С на единицу

8001

79




MOV A,C

Переписать исследуемое число в аккумулятор

8002

FE FF




CPI FF H

Содержит ли 0 какой-либо разряд числа?

8004

CA 00 80




JZ WAIT C

Если нет, то ждать

8007

CD 00 81




CALL IDSW

Если да, то вызвать подпро-грамму IDSW определения самого младшего, содержа-щего нуль числа

800A

00




NOP

Окончить вывполнение программы

8100

06 FF

IDSW

MVI B,FF H

Записать в регистр В число

8102

04

SRCH

INR B

Увеличить содержимое региста В на 1

8103

1F




RAR

Сдвинуть вправо число в аккумуляторе

8104

DA 02 81




JC SRCH

Если С=1, то продолжать

8107

C9




RET

Возврат из подпрограммы