Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Краткие сведения из теории. Память микроЭВМ, построенной на основе МПК серии К580, может иметь не более 65 536 однобайтных ячеек
Память микроЭВМ, построенной на основе МПК серии К580, может иметь не более 65 536 однобайтных ячеек. Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограмм — последовательностей команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами. Для вызова подпрограммы и возврата из них используются команды CALL < А2> < A1> и RET. Команда CALL < А2> < A1> загружает в программный счетчик МП БИС содержимое байтов < А2> < A1>, записанных в последующих двух адресах памяти после адреса, где записан код команды CALL (CD). Содержимое байта < А2> записывается в младший байт PCL программного счетчика, а третий байт команды < A1> команды —- в старший байт РСН программного счетчика, при этом МП БИС автоматически сохраняет в стеке адрес основной программы, к которому она будет обращаться, после выполнения подпрограммы. Стек — специально организованная область ОЗУ, задействованная в микроЭВМ для временного сохранения данных или адресов. Число, записанное в стек последним, извлекается из него первым. Команда RET (C9) помещает в программный счетчик последнее записанное на данный момент в стеке число. После этого выполнение программы будет осуществляться с этого адреса. Любая подпрограмма должна кончаться командой RET. Автоматическое сохранение и восстановление адреса основной программы при выполнении подпрограмм позволяет сделать подпрограммы вложенными, т. е. осуществить вызов одной подпрограммы из другой. Уровень вложенности для данной микроЭВМ определяется лишь размером стека. Существуют также команды условного вызова подпрограммы и возврата из них. Они позволяют вызвать подпрограмму и возвратиться из нее по определенному состоянию заданных разрядов регистра признаков (аналогично командам условных переходов). Все команды условного вызова подпрограммы — трехбайтные, во втором и третьем байтах находится начальный адрес подпрограммы. Команды вызова подпрограмм и возврата из них используют стек и внутренний регистр МП БИС SP (STACK POINTER) для адресации к стеку Помимо команд вызова подпрограмм и возврата из них со стеком можно обмениваться информацией с помощью команд PUSH < R> (записать в стек содержание обозначенной регистровой пары МП БИС) и POP< R> (записать данные из стека в обозначенную регистровую пару МП БИС). Эти команды являются однобайтными, и в них содержится указание пары регистров МП БИС. При записи в стек содержимого пары регистров или программного счетчика по адресу SP—1 записывается содержимое старшего регистра из указанной пары или старший байт РСН программного счетчика, а по адресу SP—2 в стек записывается содержимое младшего регистра из указанной пары или младшего байта PCL программного счетчика. При записи из стека данных в пару регистров или программный счетчик в младший регистр пары пли PCL записывается число из адреса, указанного в указателе стека SP, а в старший регистр пары или РСН — число, записанное по адресу SP+1. В результате выполнения команды содержимое указателя стека SP увеличивается на 2. Данные в памяти не изменяются, а лишь происходит чтение и увеличение содержимого SP. Таким образом, при записи данных адреса стека изменяются от больших к меньшим, а указатель стека SP всегда содержит последний адрес стека, в котором записано число. При разработке программ необходимо первоначально назначать область стека, записывая в SP адрес с помощью команды LXI SP < А2> < A1> или команды SPHL. Все операции со стеком должны быть сбалансированы, т.е. каждая подпрограмма должна содержать равное количество команд PUSH < R> и POP< R> и оканчиваться командой RET. В противном случае выполнение команды RET в конце подпрограммы приведет к записи в программный счетчик случайного числа из стека. Адрес возврата в основную программу будет потерян и нарушится последовательность ее выполнения. Как правило, в начале каждой программы сохраняют в стеке содержимое всех задействованных при ее выполнении регистров с помощью команд PUSH< R>. В конце подпрограммы восстановление содержимого регистров осуществляется с помощью команд POP< R> и в обратной последовательности по отношению к их записи в стек. Обычно в виде подпрограмм записываются многократно используемые фрагменты программ, например подпрограмма выдачи звукового сигнала, подпрограмма обслуживания клавиатуры и дисплея и т.д. Алгоритм работы простой подпрограммы временной задержки приведен на рис. 2.3. Общее время задержки вычисляется по формуле ТD = t1 + (t2 + t3 + t4)N1 + t5, где N1, - число, первоначально записанное в счетчике. В качестве счетчика выбран регистр В, в который записывается число N1 из регистра С. Команда NOP нужна для увеличения времени выполнения цикла, а следовательно, и общей задержки. Вместо команды NOP может быть записана любая последовательность команд, выполнение которых не изменяет содержимого регистров микропроцессора. Время записи числа N1 в регистр В и возврата из подпрограммы t1+t5 фиксировано и в цикл не входит. Минимальная задержка для приведенной подпрограммы определяется при N1=01 и равна ТD MIN = t1+t2+t3+t4+t5. Максимальная задержка имеет место при N1=00 и вычисляется по формуле ТD MAX = t1 + (t2 + t3 + t4)256 + t5.
Подпрограмма DLY (подпрограмма 11) представляет программу временной задержки, записанную в соответствии с алгоритмом, представленным на рис. 2.3. Рассмотрим пример использования подпрограммы временной задержки при организации звуковых грамму временной задержки, записанную в соответствии с алгоритмом, представленным на рис. 2.3. Рассмотрим пример использования подпрограммы временной задержки при организации звуковых сигналов в микроЭВМ. В микроЭВМ звуковые сигналы могут формироваться простейшей схемой (рис. 2.4), на вход которой со звуковой частотой записываются по очереди «0» и «1». Будем считать, что устройство формирования звуковых сигналов имеет адрес 04. Схема алгоритма работы подпрограммы генерации звуковых колебаний (подпрограмма 12) приведена на рис. 2.5.
|