ГОСУДАРСТВЕННЫЙ КОМИТЕТ РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ВЫСШЕМУ ОБРАЗОВАНИЮ УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
...
10 downloads
190 Views
222KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ГОСУДАРСТВЕННЫЙ КОМИТЕТ РОССИЙСКОЙ ФЕДЕРАЦИИ ПО ВЫСШЕМУ ОБРАЗОВАНИЮ УЛЬЯНОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
РАБОТА В СРЕДЕ УЧЕБНОЙ СИСТЕМЫ МОДЕЛИРОВАНИЯ МИКРОПРОЦЕССОРА Методические указания
Составители: С.В.Скворцов, В.Н.Негода
Ульяновск 1996
УДК 681.3(076) Работа в среде учебной системы моделирования микропроцессора: Метод. указ. / Сост. С.В.Скворцов, В.Н.Негода. - Ульяновск: УлГТУ, 1996. - 32 с. Настоящие методические указания написаны в соответствии с рабочей программой дисциплины "Микропроцессорные системы" для студентов специальности 2201 "ЭВМ, комплексы, системы и сети" и направления 005528 "Информатика и вычислительная техника". Рассмотрены функции и команды программ моделирования учебной системы моделирования, а также основы методики создания и отладки программ в ее среде. Приведенный материал может быть использован студентами ФИСТ и РТФ при проведении лабораторных работ по дисциплинам, связанным с изучением микропроцессорной техники, при выполнении заданий по НИРС, УИРС и при дипломном проектировании. Подготовлены на кафедре "Вычислительная техника". Ил. 2, библиогр.: 6 назв. Рецензент: Одобрено учебно-методической комиссией ФИСТ
( Ульяновский государственный технический университет, 1996.
ОГЛАВЛЕНИЕ ВВЕДЕНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1. СТРУКТУРА, ФУНКЦИИ И КОНФИГУРИРОВАНИЕ СИСТЕМЫ МОДЕЛИРОВАНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1. Функции системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Структура системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3. Запуск и конфигурирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2. КОМАНДЫ И ДАННЫЕ ПРОГРАММ СИСТЕМЫ . . . . . . . . . . 9 2.1. Экран и команды управления программы M580 . . . . . . . . . . . . . . . 9 2.2. Входные и выходные данные M580 . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.3. Кросс-ассемблер AS80 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3. МЕТОДИКА СОЗДАНИЯ И ОТЛАДКИ ПРОГРАММ . . . . . . . . 17 3.1. Создание текста ассемблер-программы . . . . . . . . . . . . . . . . . . . . . . . 17 3.2. Ассемблирование и загрузка программы . . . . . . . . . . . . . . . . . . . . . . 20 3.3. Отладка программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4. Пример программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 СПИСОК ЛИТЕРАТУРЫ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
ВВЕДЕНИЕ Учебная система моделирования микропроцессора M580, работа с которой описана в настоящих методических указаниях, предназначена для изучения архитектуры микропроцессора(МП) К580 (отечест-венный аналог МП I8080) и основ его программирования. Несмотря на то, что со времени разработки этого микропроцессора фирмой Intel прошло 22 года, актуальность знакомства с его архитектурой не пропала. Во-первых, до сих пор эксплуатируются и производятся средства автоматизации управления технологическими процессами на базе этого МП. Вовторых, многие современные МП и микроконтроллеры унаследовали основные архитектурные решения I8080. Ограниченность времени лабораторных занятий по дисциплинам, где изучаются основы микропроцессорной техники, заставляет проводить лабораторные исследования и разработку учебно-инженерных проектов только в рамках этих базовых решений. Кроме того, по МП I8080 и его аналогам имеется богатая учебно-методическая и научно-техническая литература. Именно поэтому в рабочих программах таких дисциплин значительное место занимают вопросы изучения данного МП. В некоторых учебных заведениях для изучения архитектуры МП K580 используются профессиональные системы моделирования, предназначенные для автоматизации инженерного проектирования микропроцессорных систем и обладающие более широкими функциональными возможностями, чем учебная система M580. M580 была разработана в УлГТУ 1989 г., когда промышленные системымоделирования I8080 для вузов еще не были достаточно доступны. Опыт эксплуатации М580 и промышленных систем показал, что для учебного процесса все же более приемлимым является именно учебная система. Упрощенный русско-язычный интерфейс и доступ к учебно-методической информации из среды системы значительно сокращают затраты времени на освоение инструментария, используемого для выполнения лабораторных работ. В методических указаниях рассматривается структура системы моделирования, набор ее команд и основы технологии создания и отладки программ. Предполагается, что пользователь знаком с принципами орга-низации персональных ЭВМ(ПЭВМ), совместимых с IBM PC XT/AT, и основными командами операционной системы MS DOS. Система М580 работает под управлением ОС MS DOS версии 3.0 и выше на ПЭВМ, совместимых с IBM PC XT или AT. Возможна работа без жесткого диска. По умолчанию программа использует альтернативную кодировку символов кириллицы и псевдографики, но имеется возможность настройки на кодировку ПЭВМ "ИСКРА" и "ПРАВЕЦ".
1. СТРУКТУРА, ФУНКЦИИ И КОНФИГУРИРОВАНИЕ СИСТЕМЫ МОДЕЛИРОВАНИЯ 1.1. ФУНКЦИИ СИСТЕМЫ Система моделирования М580 реализует следующие основных функции: 1. Настройка палитры для отображения различных полей данных экрана системы в заданных цветах. 2. Назначение шрифта для отображения кириллицы в выводимых на экран текстах. 3. Назначение редактора текста для создания и редактирования исходных модулей ассемблер-программ. 4. Вызов редактора текста. 5. Запуск кросс-ассемблера и асемблирование программы. 6. Загрузка объектного модуля в модель памяти МП. 7. Модификация объектов моделируемого МП(регистров, ячеек памяти, признаков результата, триггера разрешения прерываний) путем редактирования полей данных в экранном режиме. 8. Назначение точек и условий останова. 9. Пошаговое выполнение программы и выполнение групп команд до выполнения условий останова, назначаемых пользователем; 10. Инициирование требований прерываний. 11. Эмуляция сигнала сброса RESET и выполнение очистки содержимого объектов МП. 12. Эмуляция вывода на алфавитно-цифровой дисплей, семисигментный индикатор и ввода-вывода в порты общего назначения. 13. Сохранение текущего состояния модели и восстановление его в следующем сеансе работы с системой. 14. Дизассемблирование участков машинных программ. 15. Получение справочной информации по командам программы моделирования, командам МП К580, а также рекомендаций по порядку выполнения лабораторных работ и соответствующих индивидуальных заданий. 1.2. Структура системы Структура системы моделирования и ее связи с операционной средой представлены на рис. 1. Программные компоненты системы изображены в утолщенных рамках, файлы данных - в тонких рамках. Связь по данным представлена толстыми, а связь по управлению - тонкими стрелками.
Рис. 1. Структура системы моделирования Основной программой системы является программа моделирования микропроцессора, название которой совпадает с наименованием самой системы - M580. Данная программа выполняет практически все функции, перечисленные в п.1.1., кроме редактирования ассемблер-программы и ее ассемблирования. Для редактирования ассемблер-программ используется любой редактор текста, работающий под управлением MS DOS. Сформированный текстовый файл программы ассемблируется кроссассемблером AS80. Загрузочный модуль(файл типа ".SAV") помещается в модель памяти МП и может быть выполнен программой M580 в режиме трассировки или автоматически. Состояние отлаживаемых программ может быть сохранено в файлах типа ".SAV", с тем чтобы в следующем сеансе работы отладка могла быть продолжена с текущего состояния. 1.3. Запуск и конфигурирование Запуск программы моделирования микропроцессора производится набором ее имени (М580), либо без аргумента, либо с аргументом. Если программа запущена без аргумента, то любая команда, связанная с сохранением либо восстановлением состояния модели, с ассемблированием и загрузкой машинной программы будет требовать имени файла. Если же при запуске имеется арогумент, то он рассматривается как имя текущей моделируемой программы. Если это имя имеет расширение ".AS", то происходит вызов кросс-ассемблера и последующая загрузка результата ассемблирования (файл "*.LDA") в память модели. Если аргумент команды запуска программы М580 имеет расширение ".LDA", то происходит только загрузка из соответствующего файла. Если расширение равно ".SAV", то из соответствующего файла загружается состояние модели(поддержка межсеансовых переходов). В случае, когда в качестве аргумента используется имя без расширения, в начальной фазе работы программы последовательно ищутся файлы типа ".SAV", ".LDA", ".AS" с указанным именем и первый найденный файл используется так, как если бы был набран аргумент с соответствующим расширением . Например: М580 PETROV23.SAV - запуск с загрузкой состояния модели из файла PETROV23.SAV. М580 IVANOV4.LDA - запуск с загрузкой машинной программы, являющейся результатом ассемблирования из файла IVANOV4.LDA. М580 SIDOROV13.AS - запуск с вызовом кросс-ассемблера в на-чальной фазе работы и с последующей заг рузкой результата ассемблирования в па мять модели МП. М580 CONS - запуск с поиском одного из файлов: CONS.SAV, CONS.LDA, CONS.AS. Если какой либо из этих файлов найден в текущем каталоге, то происходит выполнение действий как при команде с аргументом, имеющим соответствующее расширение. М580 - запуск без установленного имени моделируемой программы.
Сразу после старта программа М580 проверяет наличие файла конфигурации M80.CFG. Если этот файл имеется, то из него читаются назначение ретактора текстов, подключаемого к системе, назначение кодировки для вывода кириллицы и раскраски полей экрана. Назначение имени подключаемого редактора задается в файле конфигурации строкой вида: ED80=<имя файла редактора текста> Например: ED80=ME - назначение редактора Multi Edit, вызываемого по команде MS DOS "ME". Назначение кодировки кириллицы выполняется одной из двух директив: CRT=BAS - назначение базовой кодировки(ПЭВМ "Искра") CRT=MIK - назначение кодировки ПЭВМ "Правец" Если ни одной из этих директив в CFG-файле нет, то по умолчанию используется ALT-кодировка кириллицы. Раскраска полей экрана назначается строкой следующего формата: C80=<символ_поля>:<атрибут>;<символ_поля>:<атрибут>; . . . Используются следующие символные обозначения полей экрана: w - выделенное окно f - выделенное поле t - текст учебной инфоpмации b - разделители окон h - заголовки c - окно модели консоли i - окно семисегментного индикатоpа p - окно SIM/RIM и поpтов n - текст невыделенного окна, допускающего pедактиpование a - окно адpесов d - окно дизассемблеpа e - сообщение об ошибке r - сообщение или запpос l - стpока подсказки m - код маpкеpа Например: C80=w:70;f:47;t:70;b:3;h:3;c:3f;i:70;p:f;n:f;a:f;d:3f;e:8f;r:6;l:70;m:3fb1; Если файл конфигурации в текущей директории не найден, то программа проверяет, не назначены ли переменные ED80, CRT, C80 в окружении DOS. Т.е. пользователь может установить назначения, используя команду SET DOS. Например: SET ED80=TE - назначение редактора текста "TE.COM". Необходимо учесть, что если команда SET запускается из какой-либо оболочки(NORTON COMMANDER, VOLCOV COMMANDER и пр.), то соответствующая оболочка создает новое окружение DOS и после возврата в оболочку назначения будут утеряны.
2. КОМАНДЫ И ДАННЫЕ ПРОГРАММ СИСТЕМЫ 2.1. Экран и команды управления программы M580 После входа в программу, пользователь видит экран программы моделирования, внешний вид которого представлен на рис. 2. A
B C
D
E H
L
PC
SP
Время
CY AC S Z
P Регистры 00 00 00 00 00 00 00 0000 303f 0000000 0 0 0 0 0 Усл. останова 00 00 00 00 00 00 00 0000 0000 0000000 Прерыван: ЗАПР Адр Память Мнемокод 0 1 2 3 4 5 6 7 8 9 a b c d e f 0000: NOP 0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0001: NOP 0010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0002: NOP 0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0003: NOP 0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0004: NOP 0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0005: NOP 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0006: NOP 0060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0007: NOP 0070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0008: NOP 0080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0009: NOP 0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000a: NOP 00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000b: NOP 00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 000c: NOP IN 00H, OUT 00H 9H AH
OUT 01H,02H,03H,04H
5H
6H 7H
8H
IN 00 00 00 00 00 00 OUT 00 00 00 00 00 00 (
(
(
(
F1,F2-помощь Tab-смена окна F6-пуск Enter-шаг F9-загрузка Alt/F10выход Рис. 2. Экран программы моделирования M580 На нижней строке экрана выводится информация о 6 основных командах. Пользуясь содержимым этой строки, пользователь может получить доступ к описанию всех команд системы моделирования (F1 помощь), команд микропроцессора (F2 - справка по К580), запустить моделируемую программу в автоматическом режиме (F6 - пуск), остановить эту программу (F8 - останов), выполнить одну команду моделируемой программы (Enter - шаг) и выйти из системы моделирования(Alt/F10 - выход). Экран разбит на 9 постоянных окон, в которых визуализируются:
1. Состояние регистров МП и условий останова по содержимому регитров (окно регистров). 2. Состояние счетчиков тактов и ограничение времени выполнения программы (окно времени). Число тактов измеряется относительно паспортных данных МП. Если, например, какая-то команда по справочным данным на М580 имеет время выполнения 4 машинных такта, то при выполнении этой команды в модели счетчик тактов увеличивается на 4. 3. Состояние признаков результата и триггера разрешения прерывания (окно флагов). 4. Состояние страницы памяти размером 192 байта (окно памяти). 5. Адреса первых ячеек строк окна памяти (окно адресов). 6. Мнемокод участка из 12 команд (окно дизассемблера). 7. Выводимые на консоли данные (окно консоли). 8. Выводимые на семисегментный индикатор данные (окно индикатора). 9. Вводимые/выводимые данные портов общего назначения (окно портов). 10. Сведения о минимально необходимых командах системы моделирования (строка-подсказка). Первые четыре окна могут выделяться фоном и цветом символов. Находясь в выделенном окне пользователь может редактировать данные в его полях и перемещаться по полям, пользуясь функциональной клавиатурой. Поскольку различные объекты этих окон имеют различные ограничения на множество допустимых значений, то для каждого типа объекта выполняется определенный контроль данных. Если символ не может участвовать в модификации поля данных, то он игнорируется программой. При редактировании хотя бы одного символа в поле счетчика команд или в поле окна памяти происходит дизассемблирование, что позволяет обучаемому постоянно следить за правильностью набора машинных команд. Чтобы обеспечить достаточно быстрое выполнение моделируемой программы микропроцессора, модификация полей данных во время автоматического выполнения (до условия останова, точки останова, прерывания, сигнала "сброс", команды "стоп" моделирующей системы, достижения лимита времени, либо выполнения заданного числа команд) дизассемблирование не выполняется. Кроме постоянных в программе используются всплывающие окна, которые чаще всего используется для запроса данных, сообщения пользователю и выдачи пользователю символьной и учебно-методической информации. Команды программы M580 запускаются с помощью функциональных клавиш. Дальнейшие действия программы М580 определяются тем, какую команду набирает пользователь. Ниже приводится полный список команд. 1. Информационно-справочные команды F1 - получить эту справку; F2 - вход в меню по командам микропроцессора; Аlt/F1 - получить порядок выполнения работы; Alt/F2 - получить задание на лабораторную работу;
Ctrl/F1 - получить учебно-методическую информацию по работе. 2. Команды общего управления Alt/F7 - установить имя программы, чтобы операции загрузки программы и сохранения/восстановления состояния модели выполнялись без запроса имени файла; Ctrl/F8 - вызвать редактор текста; F9 - восстановить состояние модели из файла, в который была запись в конце предыдущего сеанса работы с моделируемой программой; Alt/F9 - проассемблировать и загрузить программу в память модели; Ctrl/F9 - загрузить ранее проассемблированную программу; Ctrl/F10 - сохранение состояния модели в файле, чтобы продолжить отладку моделируемой программы в следующем сеансе работы на ПЭВМ; Alt/F10 - выход из системы моделирования; Еsc - oтмена любой команды системы моделирования, требующей диалога; клавиша н е д е й с т в у е т, если в ответ на запрос нажата любая другая клавиша; F10 - дизассемблирование фрагмента программы, обычно находящегося в стороне от отображенного в окне мнемокодов фрагмента. 3. Команды управления выполнением программы Enter - выполнить одну команду, которая адресуется счетчиком команд PC; F6 - выполнить до останова по заданным условиям, либо до достижения PC любой заданной точки останова; Alt/F6 - выполнить заданное число команд; все условия останова игнорируются; обеспечивается самое быстрое выполнение последовательности команд; Ctrl/F6 - то же, что и F6, но состояние регистров, таймера и признаков результата модифицируется на экране после каждой команды; Alt/F5 - задать условия останова по содержимому памяти в формате: <адрес ячейки><символ условия(#<=>)> <значение>; F5 - задать точки останова в виде последовательности адресов; F7 - прерывание; команда имитирует сигнал требования прерывания; F8 - останов программы, запущенной по командам F6, Alt/F6, Ctrl/F6; F4 - сброс счетчика команд и запрет прерываний (имитация RESET); Alt/F4 - сброс счетчика тактов. 4. Команды редактирования полей данных Alt/F8 - загрузить массив кодов цифр семисегментного индикатора для ис пользования в программах преобразования внутреннего представ ления цифр в представление на индикаторе; F3 - сброс регистров и признаков результата;
Alt/F3 - сброс памяти и регистров; стрелки - перемещение курсора в окне; Tab - переход между окнами; PgUp, PgDn - листание страниц памяти; 0..1,a..f - замена шестнадцатиричной цифры, находящейся в позиции вы деленного поля данных, на которую указывает маркер; ><=# - установка условия останова по значению регистра; пробел - сброс условия останова. При выполнении команды F1, программа создает окно во весь экран и выводит информацию о первой группе команд системы моделирования. Клавишей Enter можно листать информацию в окне, причем после четвертого вновь повторяется первый раздел. Команда F2 приводит к созданию двух окон: окна меню системы команд микропроцессора и окна информации о командах. По двухмерному меню, содержащему мнемокоды машинных команд, можно перемещаться с помощью стрелок: влево, вправо, вверх, вниз, в конец, в начало, вверх/вниз к противоположному краю. Спозиционировав указатель на нижний мнемокод пользователь может получить с помощью клавиши Enter информацию о соответствующей команде. Команды Alt/F1, Alt/F2, Ctrl/F1 запрашивают номер лабораторных работ и создав окно во весь экран дают возможность последовательно просматривать страница за страницей текст соответствующего файла. При нажатии клавиши Enter после вывода последней страницы, листание текста возобновляется с начала файла. Переход от всплывающего окна к экрану с постоянными окнами выполняется нажатием клавиши Esc. Все информационные окна снабжены соответствующими подсказками. По команде Alt/F7 программа М580 выдает запрос имени текущей программы в нижней строке экрана и фиксирует введенное имя файла. Если имя введено без расширения, то программа при работе с файлами программ будет добавлять расширения ".SAV", ".LDA", ".AS "в зависимости от команд пользователя. Команда F9 выполняется без диалога с пользователем в случае, когда текущее имя установлено. Иначе будет запрошено имя файла, из которого необходимо считать файл состояния модели. После переноса данных из файла в переменные программы выполняется модификация экрана. Команда Ctrl/F10 имеет обратное действие, т.е. она обеспечивает перенос данных в файл сохранения состояния модели. Если указанный файл уже существует, то предварительно запрашивается разрешение на перезапись. Если пользователь откажется перезаписывать(Esc), то команда не выполнится. Если команда подавалась при установленном имени текущей программы, то пользователю необходимо сменить имя по команде Alt/F7, и затем повторить команду вывода состояния модели. Сохранению/восстановлению в файлах подвергаются следующие объекты модели: вся память; все регистры; признаки CY,AC,S,P,Z и состояние триггера разрешения прерываний; таймер;
точки останова; условия останова; адрес страницы памяти, отображаемой на экране. Команда Alt/F9 организует вызов кросс-ассемблера, передачу ему имени файла ассемблер-программы и загрузку результата ассемблирования в память. Для успешного выполнения команды пользователь должен иметь в текущем каталоге, или любом каталоге, определенном в команде ОС РАТН, загрузочный модуль кросс-ассемблера AS80.EXE. Команда Ctrl/F9 обеспечивает загрузку ранее проассемблированной программы. В формате файла типа ".LDA" каждый фрагмент машинной программы сопровождается адресом первой ячейки, куда должен загружаться фрагмент. Поэтому данная команда может использоваться для ручной компановки моделируемой программы из модулей, расположенных в нескольких файлах типа ".LDA". Возможна также замена какого-либо фрагмента модулируемой программы на другой. Команда выхода из системы Alt/F10 вызывает запрос к пользователю о необходимости сохранить состояние модели и в случае положительного ответа происходит вывод состояния модели в файл типа ".SAV". Команда дизассемблирования F10 используется как вспомогательный механизм просмотра моделируемой программы в мнемокодах. Кроме того, по этой команде результат дизассемблирования может быть выведен на принтер. 2.2. Входные и выходные данные M580 Программа М580 работает со следующими файлами входных данных: *.SAV - файл состояния модели; *.LDA - файл результата ассемблирования; PORLR.n - файл, содержащий порядок выполнения лабораторной работы с номером n(от 0 до 999); JOBLR.n - файл, содержащий индивидуальные задания обучаемым по лабораторной работе с номером n; INFLR.n - файл, содержащий учебно-методическую информацию по лабораторной работе с номером n. Файлы типа "*.SAV" являются как входными файлами, так и выходными данными программы М580. Пользователю нет необходимости знать внутреннюю организацию данных в файлах этого вида. Файлы типа "*.LDA" содержат загрузочные модули программы и являются продуктом работы кросс-ассемблера. Загрузочный модуль представлен в формате символьного файла, данные которого содержат шестнадцатиричые ASCII-коды байтов программы, подлежащей загрузке. Первые два символа файла являются признаком формата "LDA". Следующие символы представляют собой совокупность фрагментов, каждый из которых вначале содержит четырехсимволный шестнадцатиричный адрес области загрузки байтов фрагмента, затем через символ "/" следуют последовательность не более чем из 32 шестнадцатиричных цифр, каждая пара которой кодирует содержимое одного байта загружаемой программы. В конце программы указывается стартовое значение счетчика команд, завершающееся символом "\". Файлы учебно-методической информации готовятся обычным редактором текста. Пользователь должен учитывать, что в окне
просмотра этих текстовых файлов помещается не более 21 строки. Для удобства разбиения текста на экранные страницы пользователь может применить директиву ".page". Если эта директива набрана в начале строки, то заполнение страницы окна просмотра прекращается и пользователь может продолжать просмотр, только нажав клавишу Enter. 2.3. Кросс-ассемблер AS80 Кросс-ассемблер AS80 выполняет трансляцию исходных текстов программ на языке ассемблера икропроцессора К580ВМ80 в формат загрузочного модуля ".LDA". Программа AS80 может использоваться не только в составе системы моделирования, но и самостоятельно. Она предоставляет пользователю следующие основные возможности: 1. Создавать объектные модули в HEX-коде с указанием точки входа в программу и фрагментированием программы в соответствии с механизмами управления счетчиком размещения (директивы ORG и DS ассемблера). 2. Создавать файл листинга с возможным включением в него таблицы перекрестных ссылок. 3. Управлять шириной распечатки листинга. 4. Отменять или назначать генерацию тех или иных результатов работы (объектного файла, листинга, таблицы перекрестных ссылок). 5. Назначать вывод сообщений об ошибках в различных вариантах кодирования кириллицы. Запуск программы производится либо по команде Alt/F9 из программы M580, либо из MS DOS путем набора ее имени ("AS80") с указанием одного или нескольких имен входных файлов. Имя программы может сопровождаться указанием опций. Кросс-ассемблер поддерживает следующие опции: "-о" или "-0" - запрет вывода объектного модуля; "-l" или "-L" - разрешение вывода листинга; "-х" или "-Х" - разрешение включения таблицы перекрестных ссылок в листинг; "-wчисло" или "-Wчисло" - задание ширины вывода листинга. Примеры: as80 tst.as -ассемблирование программы tst.as с формированием только объектного файла tst.lda; as80 -l -о pr1.as pr2.as - ассемблирование двух исходных модулей pr1.as и pr2.as с выводом листинга в файл pr1.lst; вывод объектного файла отменяется; as80 -l -x -w80 prog.as - ассемблирование программы prog с выводом листинга и включением в него таблицы перекрестных ссылок (ключ -х); ширина листинга задается не более 80; В фазе инициирования переменных AS80 распознает значение переменной CRT в окружении MS DOS аналогично программе M580 и перекодирует выводимые на экран сообщения в соответствующий код. В ходе анализа исходного текста ассемблер одинаково воспринимает строчные и прописные буквы в мнемокодах машинных команд и директив ассеблера. То есть мнемокоды MOV и mov кросс-ассемблер не различает.
Запись операторов в ассемблер-программе выполняется в обычном формате, принятом в программах для I8080[2,4,5 ]. Перечень поддерживаемых ассемблером директив несколько отличается от общепринятого. Ниже приводится полный перечень этих директив. <имя> EQU <выражение> - прямое присвоение имени значения выражения; вместо ключевого слова EQU может использоваться символ '='; END <выражение> или .END <выражение> - завершение исходного модуля с назначением в качестве точки входа значения приведенного выражения; если выражение отсутствует, то точка входа не будет назначена; .ENTRY <выражение> - явное назначение точки входа в программу; ORG <выражение> - назначение нового значения счетчику размещения ассемблируемой программы; DB <выражение>, <выражение>,... - размещение данных в программе; каждое значение выражений в строке этой директивы дает один байт; байты размещаются в программе последовательно от текущего счетчика размещения. DW <выражение>, . . . - то же, что и директива DB, но размещаются двухбайтовые слова; .BYTE <выражение>, . . . - то же, что и директива DB; .WORD <выражение>, . . . - то же, что и директива DW; DS <выражение> - резервирование области памяти размером в количество байт, заданных выражением; .BLKB <выражение> - то же, что и DS; .ASCII <строка> - размещение в программе текстовой строки; первый значащий символ после мнемокода директивы (пробелы и табуляции незначащие) рассматривается как разделитель и в памяти не размещается; все символы строки, не равные разделителю размещаются в программе; .ASCIZ <строка> - то же, что и по директиве .ASCII, но за последним размещаемым символом строки размещается байт 0. Кросс-ассемблер поддерживает следующие операторы выражений: '+' - сложение; '-' - вычитание или унарный минус; '*' - умножение; '/' - деление; '%' - взятие по модулю (остаток от деления левого операнда на правый); '&' - побитовое логическое И; ':' - побитовое логическое ИЛИ; '<' - сдвиг левого операнда влево на число разрядов, заданное правым операндом; '!' - унарная поразрядная инверсия. Все операции равноприоритетные. Вычисление производится слева направо. Порядок вычисления может изменяться скобками. Ассемблер распознает следующие виды констант: '<символ>' - константа, равная коду символа в кавычках, например: 'А', '3';
'\<код>' - непосредственное задание символа кодом; если код начинается с символа '0', то он рассматривается как восьмеричный, если код начинается с символа 'х' или 'Х', то он рассматривается как шестнадцатиричный; наряду с числовыми кодами ассемблер после символа '\' распознает символы форматирования выводимых данных: '\b' - возврат на шаг, '\t' -табуляция, '\r' - возврат каретки, '\n' - перевод строки, '\f' перевод формата; <Число><символ системы> - в качестве символов системы счисления ассемблер распознает: 'h' или 'H' - шестнадцатиричная, 'q' или 'Q' восьмеричная, '.', 'd' или 'D' -десятичная, 'b' -двоичная; если число задано без указания системы счисления, то оно интерпретируется как десятичное. За один вызов кросс-ассемблера может быть проассемблировано несколько файлов(в одной командной строке запуска AS80 приводится несколько спецификаций файлов исходных модулей). Каждая спецификация может содержать любое доступное операционной системе имя устройства и путь поиска файла в поддиректориях. Модули, обрабатываемые одним процессом AS80, могут находиться в разных директориях. Если для какой-либо спецификации не задано пути поиска, то файл ищется только в текущем директории. При наличии в командной строке нескольких спецификаций файлов первая спецификация используется для конструирования имен объектного файла и файла листинга. Из нее выбирается только имя файла. Путь поиска и расширения в конструировании не участвуют. Таким образом результирующие файлы "*.LDA" и "*.LST" всегда размещаются в текущем директории. Файл листинга имеет следующий формат: первый столбец - номер строки; второй столбец - адрес размещения команды; третий столбец - шестнадцатиричный код команды; четвертый столбец - номер оператора; пятый столбец - текст оператора. При наличии в командной строке ключа "-х" в конце листинга распечатывается таблица перекрестных ссылок. В таблице для каждой метки распечатывается список номеров строк, где встречается ссылка на метку. Номер строки, где метка определена, помечается символом '='. 3. МЕТОДИКА СОЗДАНИЯ И ОТЛАДКИ ПРОГРАММ 3.1. Создание текста ассемблер-программы Процесс проектирования и отладки прикладной программы начинается с записи текста программы с помощью редактора текста. Имеется большое число программ редактирования текстов. В данных методических указаниях приводится описание работы с наиболее простым из них, а именно редактором текста TE.COM, аналогичного редактору текста интегрированной среды системы программирования Turbo-C.
Редактор вызывается из программы M580 по команде Ctrl/F8. Пользователю предлагается ввести имя редактируемого файла и после этого запускается редактор, закрепленный за системой моделирования с помощью директивы ED80=<имя_программы_редактора_текста> файла конфигурации, либо установки значения переменной ED80 в окружении DOS. Если за системой закреплен редактор TE, то в распоряжении пользователя имеется набор команд, описываемый ниже. Для перемещения курсора в TE используются стpелки, табуляция, Home (в начало), End (в конец), PgUp и PgDn (листание страниц). Сочетание этих клавиш с клавишей Ctrl изменяет шаг пеpемещения. Стpелки влево и впpаво пеpемещают куpсоp по словам, а вместо листания стpаниц получается позициониpование куpсоpа либо в начало, либо в конец текста. Для позициониpования куpсоpа в заpанее запланиpованную позицию используются комбинации клавиш Ctrl/K[0-3] (установка маpкеpа с указанным номеpом в текущей позиции куpсоpа) и Ctrl/Q[0-3](установка куpсоpа в позицию указанного маpкеpа). Напpимеp, после ввода Ctrl/K 2 (имеется ввиду сначала одновpеменное нажатие клавиш Ctrl и K, а затем нажатие клавиши 2 на обычной клавиатуpе) будет запомнена позиция маpкеpа номеp 2 и из любой позиции куpсоpа Вы можете пеpеместиться в установленную позицию с помощью ввода Ctrl/Q 2. Всего может быть установлено не более 4 маpкеpов. Команды вставки и удаления позволяют пеpеключать текущий pежим pазмещения символов в тексте(вставка или замещение) и удалять символы или фpагменты текста: BS - возвpат на шаг, т.е. удаление символа пеpед куpсоpом(на клавиатуpе эта клавиша помечена стpелкой влево и pасположена над клавишей Enter основной клавиатуpы); Del - удаление символа пеpед куpсоpом; Ctrl/Y - удалить стpоку. Ctrl/Q Y - удалить от куpсоpа до конца стpоки. Ctrl/T - удалить слово спpава. Ctrl/V или Ins - пеpеключить pежимы вставки/замещения. Команды поиска и замены позволяют позициониpовать куpсоp на нужный фpагмент текста, либо заменять фpагменты текста: Ctrl/Q F - поиск. Ctrl/Q A - поиск и эамена. Ctrl/L - повтоpить последний поиск. Ctrl/U или Esc - отменить опеpацию. После ввода команды поиска или замены pедактоp запpашивает текст искомой подстpоки. Пpи замене запpашивается текст, на котоpый меняется найденная подстpока. Редактоp запpашивает также pежимы поиска или замены. Пользователь задает pежимы, используя следующие упpавляющие символы: B - поиск от куpсоpа к началу текста(назад). G - глобальный поиск. L - локальный поиск в помеченном блоке. k - поиск k pаэ.
N - заменить беэ опpоса. W - поиск только целых слов. Напpимеp, если задан паpаметp 3 для поиска, это означает найти тpетье вхождение заданной подстpоки в тексте от текущего положения куpсоpа; аналогично для замены: 100n - заменить 100 pаз без запpоса подтвеpждения(pазpешения). Блоковые команды позволяют pаботать с блоками текста, т.е. с выделенными фpагментами: Сtrl/K B - отметить начало блока. Ctrl/K K - отметить конец блока. Ctrl/K T - отметить одно слово. Ctrl/K C - копиpование выделенного блока. Ctrl/K V - пеpенос выделенного блока. Ctrl/K Y - удаление блока. Ctrl/K R - прочитать блок из файла и вставить в текст пеpед куpсоpом. Ctrl/K W - записать выделенный блок в файл. Ctrl/K H - отменить отмеченный блок. Ctrl/K P - вывести блок на печать. Для выхода из режима редактирования текста в TE необходимо нажать дважды клавишу Esc. При этом редактор входит в режим ожидания командного символа(L, A, W, E, S, D, Q). Если нажать еще pаз Esc то pедактоp выведет меню команд, выдав текст следующего формата. Logged drive: <символ текущего диска> Active directory: <имя активного каталога> Work file: <имя pабочего, т.е. pедактиpуемого файла> Edit(вход в pедактиpование) Dir(посмотpеть каталог)
Save(сохpанить файл) Quit(выйти из TE в DOS)
Этот текст играет роль меню, выбираемого нажатием первой буквы(она выделена) подстроки. Нажатие соответствующей буквы запускает процессы смены текущего диска(напpимеp, пеpейти от диска С к диску D или B), смены каталога, установки или смены pедактиpуемого файла, входа в pежим pедактиpования, записи файла на диск, пpосмотpа имена файлов текущего каталога, выхода из pедактоpа. Для параллельной работы с исходным модулем программы и файлом листинга более эффективными являются многооконные редакторы Micro Star(MS), Professional Editor(PE), Multi Edit(ME), Norton Editor(NE) и др. 3.2. Ассемблирование и загрузка программы Процесс ассемблирования в системе М580 запускается командой Alt/F9.
При запуске ассемблера программа М580 включает экран MS DOS, на котором после завершения ассемблирования можно увидеть сообщения ассемблера. Если ошибок нет, то после нажатия на Esc происходит загрузка результата ассемблирования в память моделирующей программы. Экран MS DOS выключается и восстанавливается экран M580, после чего пользователь может видеть новое содержимое памяти модулируемого МП. Если в ходе трансляции возникли ошибки, то для анализа их причин целесообразно просмотреть файл листинга. Для получения файла листинга необходимо после запуска ассемблера по Alt/F9 в ответ на запрос имени файла ввести конструкцию: -l имя_файла. Например, для трансляции исходного модуля ABC.AS с получением листинга нужно в ответ на запрос набрать: -l abc. Если исходный модуль содержит длинные строки комментариев, то целесообразно получить листинг с ограничением длины строки, используя ключ "-w<ширина>", например: -l -w76 abc - задание ширины распечатки не более 76 символов. Поиск логических ошибок типа "переход не в ту точку", "ошибка имени метки перехода или подпрограммы", "ошибочное задание константы" и т.п. целесообразнее выполнять, анализируя таблицу перекресных ссылок. Для включения таблицы в листинг в строке аргументов для AS80 необходимо добавить ключ "-x". 3.3. Отладка программы Отладка программы обычно требует многократного выполнения технологического цикла "редактирование текста - ассемблирование выполнение программы". Выполнение программы при отладке чаще всего ведется в режиме трассировки. В M580 для трассировки используется пошаговое выполнение с помощью клавиши Enter. После отладки отдельных фрагментов(особенно циклических) их трассировка становится слишком затратным по времени процессом. Чтобы избежать лишних затрат времени целесообразно использовать точки останова. Точки останова в M580 устанавливаются и сбрасываются с помощью команды F5, по которой всплывает окно редактирования адресов точек останова. После установки точек останова программа запускается на выполнение в автоматическом режиме по команде F6 или Ctrl/F6. Первая из этих команд обеспечивает более быстрое выполнение программы, т.к. во время выполнения содержимое полей регистров и флагов не модифицируется. Если выполняемая программа зациклилась, то прекратить ее работу можно клавишами F8(останов) и F4 (имми-тация сброса микропроцессора). После нажатия F8 процесс может быть продолжен и, кроме того, возможен анализ точки зацикливания. При нажатии на F4 выполняется очистка счетчика команд и точка зацикливания не будет обнаружена. При зацикливании на команде ожидания ввода данных из порта(модели консоли или порта общего назначения) срабатывание этих команд происходит не сразу, т.к. программа моделирования должна выйти из фазы ввода данных. Поэтому необходимо нажать одну из этих клавиш (F8 или F4) и затем ввести требуемой данное. Для поиска логических ошибок типа "неправильное вычисление адреса данных", "нарушение границы массива", а также для перехода в режим
пошаговой трассировки при достижении переменных программы каких-то определенных значений целесообразно использовать условия останова. В программе M580 используются два механизма установки условий: условия по содержимому регистров и таймера, и условия по содержимому ячеек памяти. Первый механизм поддерживается путем редактирования данных строки условий окна регистров и окна таймера. Для установки условия останова по содержимому регистра необходимо ввести один из символов сравнения('<' - меньше, '>' - больше, '=' - равно, '#' - не равно) и шестнадцатиричное значение байта или слова регистра МП. Для установки временной границы выполнения программы во второй строке окна таймера необходимо в десятичном виде задать предельно допустимое число машинных тактов выполнения программы. Установка и изменение условий останова по содержимому ячеек памяти вызывается командой Alt/F5, по которой активизируется всплывающее окно редактирования условий. При установке большого числа условий и точек останова необходимо тщательно анализировать причину останова выполнения программы. Прежде всего нужно проверить, не истекло ли заданное время работы программы и не выполнилась ли команда HLT. Затем нужно последовательно проверить точки и условия останова. При этом лишние условия и точки целесообразно удалять, т.к. процесс выполнения постоянно будет о них "спотыкаться". Определенные трудности вызывает отладка фрагментов, где для хранения временных переменных используется стек. Одна из самых распространеных ошибок программирования при этом заключается в порче адреса возврата из подпрограммы и невосстановлении указателя стека SP в то значение, которое он имел перед началом использования стека для временных переменных. Для упрощения наблодения за областью стека целесообразно в начале программы устанавливать SP в конец первого отображаемого на экране фрагмента памяти(например, в значение 00C0). При отладке программ, содержащих обработку прерываний, необходимо учитывать, что сигнал требования прерываний эмулируется в M580 путем нажатия F7 во время исполнения программы. Программа M580 отрабатывает это нажатие, выдавая запрос на номер вектора(0..7). После ввода от пользователя одной из цифр диапазона 0..7 программа реализует алгоритм входа в прерывание. В случае, когда программа зациклена на машинных командах ввода IN, процесс входа в прерывание задерживается, пока пользователь не введет данные для IN. Т.е. сначала необходимо нажать F7, затем ввести запрашиваемое данное и только затем M580 запросит номер вектор прерываний и запустит процесс входа в него. 3.4. Пример ассемблер-программы Приводимый ниже пример демонстрирует технику работы с моделью консоли и использование директив языка ассемблера, поддерживаемых кросс-ассемблером AS80. Программа самодокументирована, поэтому все необходимые пояснения содержит в своих комментариях.
;--------------------------------------------------------------------------------------------------; Пpогpамма пеpиодически выводит стpоку, введенную от пользователя, в ; заданном им темпе. Некотоpые функции специально запpогpаммиро; ваны не самым оптимальным обpазом pади демонстpации пpогpаммно; технических пpиемов ;--------------------------------------------------------------------------------------------------; НИЛ АОС УлГТУ: 34-37-16: Негода В.Н. ;****************************************************************** ; Константы MINTIME EQU 20 ; минимальная задеpжка LENSTR EQU 29 ; огpаничение длины стpоки BS EQU '\b' ; возвpат на шаг(в пpеделах стpоки) FF EQU '\f' ; пеpевод фоpмата(листание стpаниц) CR EQU '\r' ; возвpат каpетки(в начало стpоки) LF EQU '\n' ; пеpевод стpоки LFRAME EQU 16 ; шиpина pамки финишного сообщения ; индексы массива кодов символов pамки LTOP = 0 ; левый веpхний угол CTOP = 1 ; символ веpхней линии RTOP = 2 ; пpавый веpхний угол CRIG = 3 ; символ пpавой линии RBOT = 4 ; пpавый нижний угол CBOT = 5 ; символ нижней линии LBOT = 6 ; левый нижний угол CLEF = 7 ; символ левой линии ;------------------------------------------------------------------------------------------------; Хоpоший стиль пpогpаммиpования пpедусматpивает описание данных ; до команд. Пpи использовании М580 возникает пpоблема рестарта, ; т.е. повтоpного запуска пpогpаммы. В этой системе имеется команда ; сбpоса микpопpоцессоpа, котоpая устанавливает PC в 0. Для pеализации ; pестаpта пpогpаммы с помощью этой команды необходимо, чтобы по ; адpесу 0 хpанилась пеpвая команда пpогpаммы, а не данные. Здесь ; пеpвая команда pасполагается по адpесу 0 и выполняет функцию обхода ; данных, т.е. пеpехода к командам заданной обpаботки данных. ;------------------------------------------------------------------------------------------------start: jmp begin ;*** Область стека *** ; Чобы видеть в стеке адpеса возвpата из подпpогpамм в отобpажаемой ; сначала(до листания) стpанице памяти, для стека назначается область, ; котоpая отобpажается в пеpвых двух стpоках topstk: ds 29 ; 29 байт для стека botstk: ; это метка начала(низа) стека ; Резервирование области для буфеpа вводимой стpоки ; Результат ввода будем видеть в тpетьей-четвеpтой стpоках окна памяти bufstr: ds LENSTR ;*** Статические данные *** delay: dw MINTIME ; задеpжка
; Коды символов pамки ; Можно сменить эти коды пpямо в окне памяти frame: db 201,205,187,186,188,205,200,186 ;*** Тексты пpиветствия и запpосов *** greet: .ascii /\f Здpавствуйте!\n\r Вас пpиветствует пpогpамма/ .ascii /\r\n демонстpации pаботы диpектив/ .asciz /\r\n кpосс-ассемблеpа AS80/ qtemp: .asciz /\n\r Введите темп(0-9): / qstr: .asciz /\n\r Введите стpоку:\n\r/ msgend: .asciz / Конец pаботы / mspase: .asciz / / ;----------------------------------------------------------------------------------------------; Подпpогpамма вывода стpоки от HL до встpечи байта 0 ; delay,DE - задеpжка, опpеделяющая темп вывода ; B = 0 - нет задеpжки ;----------------------------------------------------------------------------------------------cputs: mov A, M ; конец стpоки? ora A jz finputs ; да, финишиpовать out 0 ; вывод inx H ; модификация сканеpа mov A, B ; нужна задеpжка? ora A jz cputs ; нет, пpодолжить вывод ; Взять величину задеpжки xchg lhld delay xchg ; REPEAT DE := DE - 1 UNTIL DE = 0 dly: mov A, E jz dly1 dcr E jmp dly dly1: mov A, D jz cputs dcr D jmp dly finputs: ret ;----------------------------------------------------------------------------------------------; Подпpогpамма стиpания B символов пеpед куpсоpом(B>0) ;----------------------------------------------------------------------------------------------bdel: mvi A, BS ; REPEAT WRITE('\b \b'); B := B - 1 UNTIL B = 0 lback: out 0 ; назад mvi A, ' ' ; затеpеть пpобелом out 0 mvi A, BS ; назад out 0 dcr B jnz lback
ret ;----------------------------------------------------------------------------------------------; Подпpогpамма ввода стpоки с эхо-печатью и отpаботкой забоя ; '\f','\n' игноpиpуются; '\r' - конец ввода ; HL - указатель буфеpа ; C - длина буфеpа ;----------------------------------------------------------------------------------------------getstr: dcr C ; 1 байт для завеpшающего нуля push D ; занять D для запоминания огpаничителя mov D, C gets: in 0 cpi CR ; конец ввода? jz fings ; да, финишиpовать ; Обpаботка забоя cpi BS ; забой? jnz ign mov A, C ; есть что забивать? cmp D jp gets ; нет, мы в начале буфеpа стpоки dcx H ; откат в буфеpе, inr C ; в счетчике, mvi B, 1 ; на call bdel ; экpане jmp gets ; символы свеpх буфеpа игноpиpуются ign: mov E, A mov A, C ora A mov A, E jz gets ; Обpаботка спец-символов ; пpоигноpиpовать FF и LF cpi FF jz gets cpi LF jz gets ; Эхо-печать символа и pазмещение в буфеpе out 0 mov M, A inx H dcr C jmp gets fings: mvi M, 0 pop D ret ;-----------------------------------------------------------------------------------------------; Подпpогpамма ввода десятичной цифpы в A ; Эхо-печать только пpи пpавильном вводе ;------------------------------------------------------------------------------------------------
; REPEAT READ(A) UNTIL (A>='0') AND (A<='9') ddec: in 0 cpi '0' jm ddec cpi 58 ; '9'+1 jp ddec out 0 ; A := ORD(A)-ORD('0') ani 0fh ret ;-----------------------------------------------------------------------------------------------; Подпpогpамма вывода ВК-ПС для пеpехода в начало следующей стpоки ;-----------------------------------------------------------------------------------------------lfcr: mvi A, '\r' out 0 mvi A, '\n' out 0 ret ;----------------------------------------------------------------------------------------------; Подпpогpамма вывода C pаз символа frame[E] для pисования pамки ;----------------------------------------------------------------------------------------------putpg: lxi H, frame dad D mov A, M lput: out 0 dcr C jnz lput ret ;=================================================== ; Основная пpогpамма ;=================================================== begin: ; Инициализиpуем указатель стека так, чтобы видеть адpеса ; возвpата в пеpвых двух стpоках окна памяти lxi SP, botstk ; Пpиветствие mvi B, 0 lxi H, greet call cputs ; Взять темп lxi H, MINTIME shld delay lxi H, qtemp call cputs call ddec ; Модифициpовать задеpжку ora A jz input lhld delay push H pop D
mul:
input:
; HL := HL * A dad D dcr A jnz mul shld delay ; Ввод стpоки lxi H, qstr ; WRITELN(qstr) call cputs lxi H, bufstr ; READ(bufstr) mvi C, LENSTR call getstr mvi B, LENSTR call bdel ; затеpеть стpоку ; Вывод в заданном темпе mvi B, 1 lxi H, bufstr call cputs ; Вывод сообщения о завеpшении mvi B, 0 ; без задеpжки mvi A, FF ; очистка окна out 0 mvi A, LF ; начать со втоpой стpоки out 0 ; WRITE(mspase) lxi H, mspase call cputs mvi D, 0 ; WRITE(frame[LTOP]) - левый веpхний угол pамки mvi E, LTOP mvi C, 1 call putpg ; Веpх pамки ; FOR C:=LFRAME DOWNTO 0 WRITE(frame[CTOP]) mvi E, CTOP mvi C, LFRAME call putpg ; WRITE(frame[RTOP]) - пpавый веpхний угол mvi E, RTOP mvi C, 1 call putpg call lfcr ; WRITE(mspase) - отступ lxi H, mspase call cputs ; WRITE(frame[CLEF]) - левая веpтикаль mvi E, CLEF mvi C, 1 call putpg ; WRITE(msgend) - вывод стpоки сообщения lxi H, msgend
call cputs ; WRITE(frame[CRIG]) - пpавая веpтикаль mvi E, CRIG mvi C, 1 call putpg call lfcr ; WRITE(mspase) - отступ lxi H, mspase call cputs ; WRITE(frame[LBOT]) - левый нижний угол mvi E, LBOT mvi C, 1 call putpg ; FOR C:=LFRAME DOWNTO 0 WRITE(frame[CBOT]) - низ mvi E, CBOT mvi C, LFRAME call putpg ; WRITE(frame[RBOT]) - пpавый нижний mvi E, RBOT mvi C, 1 call putpg call lfcr hlt ; ОСТАНОВ ; Делаем пеpеход на начало, чтобы избавить себя от выполнения ; команды "Cбpос" M580. Тепеpь после останова можно опять за ; пускать пpогpамму в пошаговом или автоматическом pежиме, не ; устанавливая счетчик команд в начальное положение jmp begin end start
СПИСОК ЛИТЕРАТУРЫ 1. Балашов Е.П., Пузанков Д.В. Микропроцессоры и микропроцессорные системы. -М.: Радио и связь, 1981. -326 с. 2. Каган Б.М., Сташин В.В. Микропроцессоры в цифровых системах. -М.: Энергия, 1979. -192 с. 3. Соучек Б. Микропроцессоры и микро-ЭВМ. -М.: Советское радио, 979. 192с. 4. Григорьев В.Л. Программное обеспечение микропроцессорных систем. М.: Энергоатомиздат, 1983. -208 с. 5. Микропроцессоры: системы программирования и отладки. Под ред. В.А.Мясникова, М.Б.Игнатьева. -М.: Энергоатомиздат, 1985. - 272 с. 6. Смагин А.А., Негода В.Н., Скворцов С.В. Проектирование и сопровождение микропроцессорных систем. -Саратов: СГУ,1987. -100с.
Работа в среде учебной системы моделирования микропроцессора Методические указания Составители: СКВОРЦОВ Сергей Вячеславович НЕГОДА Виктор Николаевич Редактор: Н.А.Евдокимова Н/К Подписано в печать . .96. Формат 60х84 1/16. Бумага оберточная. Печать офсетная. Усл.печ.л. 1,92. Уч.-изд.л. 1,8. Тираж 100 экз. Заказ ( . Ульяновский государственный технический университет , 432027, Ульяновск, ул. Северный Венец, 32 Офсетная лаборатория УлГТУ, 432700,Ульяновск, ул.Энгельса, 3