|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Меню:
Главная
Форум
Литература: Программирование и ремонт Импульсные блоки питания Неисправности и замена Радиоэлектронная аппаратура Микросхема в ТА Рубрикатор ТА Кабельные линии Обмотки и изоляция Радиоаппаратура Гибкие диски часть 2 часть 3 часть 4 часть 5 Ремонт компьютера часть 2 Аналитика: Монтаж Справочник Электроника Мощные высокочастотные транзисторы 200 микросхем Полупроводники ч.1 Часть 2 Алгоритмические проблемы 500 микросхем 500 микросхем Сортировка и поиск Монады Передача сигнала Электроника Прием сигнала Телевидиние Проектирование Эвм Оптимизация Автомобильная электроника Поляковтрансиверы Форт Тензодатчик Силовые полевые транзисторы Распределение частот Резисторные и термопарные Оберон Открытые системы шифрования Удк |
[23] ♦ 301: AD 01 10j~ ♦304: 6D 03 10j~ ♦307: 8D 05 10f" ♦30A: AD 00 10J~ ♦30D: 6D 02 10j~ ♦310: 8D 04 10J~ ♦314: 00 j~ Эту же программу можно было занести в память следующим образом: * 300: 18 AD 01 10 6D 03 10 8D 05 10 AD 00 10 6D 02 10 8D 04 10 00 j~ Перед пуском программы на выполнение необходимо поместить в ячейки 1000 и 1001 соответственно старший и младшие байты первого числа, а в ячейки 1002 и 1003 аналогичным образом поместить второе число. Например, поместим числа ЗА27 и 4ВА1: •1000: ЗА 27 j~ •1002: 4В Al j~ После чего можно выполнить программу: ♦300 G j~ Результат (число 85С8) будет находиться в ячейках 1004 и 1005: ♦1004.1005 J" 1004 - 85 СЗ Эта программа, в отличие от первой, универсальна по отношению к данным. Если в первой программе данные зашиты в саму программу и их нельзя поменять, не изменив самой программы, то во второй программе данные располагаются независимо от программы. Их можно изменить перед пуском программы, поменяв содержимое соответствующих ячеек. Рассмотрим пример составления еще более сложной задачи: заполнить произвольным символом весь экран ВКУ. Алгоритм этой задачи: 1. Поместить в ячейку И 300 код символа, а в ячейку Ц 301 код режима вывода его на экран ВКУ. • 2. Поместить в ячейку Д 10 младший, а в Д 11 старший байты адреса первого байта выбранной текстовой страницы. 3.Поместить в ячейки Д 9 и # А соответственно младший и старший байты программного переключателя текстовой страницы. 4.Поместить в индексный регистр X число Д 8. 5.Обнулить индексный регистр Y. 6.Переместить код символа из ячейки д 300 в аккумулятор. 7.Занести содержимое аккумулятора по адресу Д 10, используя косвенно-индексную адресацию с регистром Y. Исполнительный адрес ячейки памяти, куда будет помещен код символа, сформируется следующим образом: к содержимому ячейки Д 10 добавляется содержимое индексного регистра Y (это младший байт исполнительного адреса); старший байт выбирается из ячейки Д 11. 8.Увеличить содержимое индексного регистра Y на единицу. 9.Переместить код режима вывода символа из ячейки # 301 в аккумулятор. 10.Занести содержимое аккумулятора по адресу Д 10, используя косвенно-индексную адресацию с регистром Y. 11.Увеличить содержимое индексного регистра Y на единицу. 12.Выполнить переход по ненулевому (Z=0) результату на п. 6. 13.Если после выполнения п. И результат (содержимое регистра Y) стал нулевым, т.е. Z=l, то увеличить содержимое ячейки Д 11 на единицу. 14.Уменьшить содержимое индексного регистра X на единицу. , 15.Выполнить переход по ненулевому результату на п. 5. 16.Обратиться к программному переключателю, находящемуся в ячейках Д 9 и Д А, используя индексно-косвенную адресацию по X. 17.Конец. При написании алгоритма была использована косвенно-индексная адресация по Y. Это позволяет изменять исполнительный адрес ячеек памяти, не изменяя самой программы. Например, можно записывать код символа в любую текстовую страницу. В алгоритме использовано еще одно очень важное понятие - цикл. Цикл - это многократное повторение группы операторов. В приведенном алгоритме необходимо выполнить запись кода символа и кода режима в 2048 ячеек памяти. Используя регистр Y, каждый раз увеличивая его содержимое на единицу, алгоритм осуществляет запись в 256 ячеек. При этом в исполнительном адресе изменяется только младший байт, что и определяет перебор 256 ячеек (0 - FF). Чтобы заполнить все 2048 (0 - 7FF) ячеек, необходимо выполнить восемь таких переборов, каждый раз увеличивая старший байт исполнительного адреса на единицу. Таким образом, в алгоритме организовано два цикла. Один из них внутренний, другой - внешний. Внутрений цикл изменяет содержимое 256 ячеек в пределах изменения младшего байта исполнительного адреса. Этого недостаточно для засветки всего экрана, поэтому, изменив старший адрес на единицу, следует опять повторить предыдущую процедуру перебора 256 ячеек (сбросив предварительно Y в 0) и т.д. Это и есть внешний цикл, определяющий число повторений внутреннего цикла. Переходы, организующие циклы, построены на операторах перехода по состоянию флажков. Выбор той или иной команды перехода определяет сам программист. На рис. 4.10 приведены текст программы на языке ассемблера и в машинных кодах. Программа может быть записана в любые ячейки памяти, лишь бы они не
Рис. 4.10. Текст программы на ассемблере и в машинных кодах пересекались с памятью выводимой текстовой страницы. Перед пуском программы нужно поместить в ячейки Д 300 и ft 301 код символа и режима вывода, в ячейки Д 10 и ft 11 - начальный адрес выбранной текстовой страницы, в ячейки И 9и Я А - адрес переключателя этой страницы. Более сложные вопросы программирования в машинных кодах и на языке ассемблера рассмотрены в гл. 6. Г л а в а 5. БАЗОВОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ 5.1. СИСТЕМНЫЙ МОНИТОР Программа "Системный монитор" управляет работой всей ПЭВМ и одновременно подчиняется ей. Она контролирует все программы, и все программы используют ее. Вы научились с помощью монитора просматривать одну, две или все ячейки памяти и изменять их содержимое. Теперь познакомимся с тем, как можно писать и выполнять программы не только на машинном языке, но и на языке ассемблера, записывать на магнитные кассеты бесконечные массивы данных и программ и снова их считывать. Программа "Системный монитор" начинается с адреса FF69f6 (в десятичном представлении 65385 или -151). Монитор на языке БЕЙСИК может быть вызван командой: CALL-151 или CALL 65385. Знак готовности монитора (звездочка *) появляется слева на экране, а справа от него высвечивается мерцающий указатель - знак подчеркивания ( ). В ПЭВМ "Агат" имеются два монитора: один из них записан в ПЗУ компьютера, |
Среды: Smalltalk80 MicroCap Local bus Bios Pci 12С ML Микроконтроллеры: Atmel Intel Holtek AVR MSP430 Microchip Книги: Емкостный датчик 500 схем для радиолюбителей часть 2 (4) Структура компьютерных программ Автоматическая коммутация Кондиционирование и вентиляция Ошибки при монтаже Схемы звуковоспроизведения Дроссели для питания Блоки питания Детекторы перемещения Теория электропривода Адаптивное управление Измерение параметров Печатная плата pcad pcb Физика цвета Управлении софтверными проектами Математический аппарат Битовые строки Микроконтроллер nios Команды управления выполнением программы Перехода от ahdl к vhdl Холодный спай Усилители hi-fi Электронные часы Сердечники из распылённого железа Анализ алгоритмов 8-разрядные КМОП Классификация МПК История Устройства автоматики Системы и сети Частотность Справочник микросхем Вторичного электропитания Типы видеомониторов Радиобиблиотека Электронные системы Бесконтекстный язык Управление техническими системами Монтаж печатных плат Работа с коммуникациями Создание библиотечного компонента Нейрокомпьютерная техника Parser Пи-регулятор ч.1 ПИ-регулятор ч.2 Обработка списков Интегральные схемы Шина ISAВ Шина PCI Прикладная криптография Нетематическое: Взрывной автогидролиз Нечеткая логика Бытовые установки (укр) Автоматизация проектирования Сбор и защита Дискретная математика Kb радиостанция Энергетика Ретро: Прием в автомобиле Управление шаговым двигателем Магнитная запись Ремонт микроволновки Дискретные системы часть 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||