Учебное методическое пособие. – Томск: кафедра ТУ, ТУСУР

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное
образовательное учреждение высшего
профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ»
(ТУСУР)
Кафедра телевидения и управления
(ТУ)
УТВЕРЖДАЮ
Заведующий кафедрой ТУ, профессор
_________________И.Н. Пустынский
«______»___________________2012 г.
ЦИФРОВЫЕ УСТРОЙСТВА И МИКРОПРОЦЕССОРЫ
Часть 2
Учебное методическое пособие
к выполнению лабораторных работ
РАЗРАБОТАЛ
_________ В.А. Кормилин
«______»_________2012 г.
2012
Кормилин
В.А.
Цифровые
устройства
и
микропроцессоры. Часть 1: Учебное методическое
пособие. – Томск: кафедра ТУ, ТУСУР, 2012. – 23 с.
Пособие
предназначено
для
студентов
радиотехнических специальностей ВУЗа, обучающихся
на всех формах обучения с использованием
дистанционных
образовательных
технологий
и
содержит методические указания для организации
самостоятельной работы при изучении дисциплины.
В пособии рассматривается весь цикл процедуры
создания программ для микропроцессоров, даны
необходимые справочные данные, приведены примеры
диалоговых процедур, даны задания и вопросы для
выполнения компьютерных лабораторных работ и
приведены пояснения, необходимые для выполнения
контрольных работ.
© Кормилин В.А., 2012
© Кафедра Телевидения и управления, ТУСУР,
2012
СОДЕРЖАНИЕ
1 ВВЕДЕНИЕ
2 СОДЕРЖАНИЕ ЛЕКЦИОННОГО КУРСА
3 СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
4 СОЗДАНИЕ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРА
4.1 Редактор текста
4.2 Транслятор ассемблера
4.3 Редактор связей
4.4 Отладчик
4.5 Работа с контрольными точками
5 ТАБЛИЦА СИМВОЛОВ ASCII КОДА (Лабораторная работа 1)
5.1 Введение
5.2 Метод прямого отображения в видеопамять
5.3 Лабораторное задание
6 ШАХМАТНОЕ ПОЛЕ (Лабораторная работа № 2)
6.1 Введение
6.2 Построение шахматного поля
6.3 Лабораторное задание
7 ПОЯСНЕНИЯ ДЛЯ ВЫПОЛНЕНИЯ
КОНТРОЛЬНЫХ РАБОТ №1 И №2
4
4
4
5
6
7
8
10
13
15
15
15
18
20
20
20
21
22
1 ВВЕДЕНИЕ
Дисциплина «Цифровые устройства и микропроцессоры
(2 часть)» изучается в цикле радиотехнических специальностей и
предназначена для освоения общих принципов построения
микропроцессоров, организации их работы. В курсе лекций
изучаются два распространенных МП комплекта, их структура,
система команд, методы адресации, способы построения МП
систем.
В
процессе
изучения
приобретаются
навыки
программирования МП, решения различных вычислительных
задач.
В процессе обучения студент должен выполнить две
компьютерные лабораторные работы по разработке программ для
МП серии К1810ВМ86 и две контрольные работы. Изучение
дисциплины заканчивается экзаменом.
2 СОДЕРЖАНИЕ ЛЕКЦИОННОГО КУРСА
1. Микропроцессоры и микро-ЭВМ. Типовая структура
микропроцессора.
2. Классификация микропроцессоров. Микропроцессоры с
фиксированной системой команд. Микропроцессоры с разрядно модульной организацией.
3. Системы счисления в ЭВМ. Позиционный принцип
представления чисел. Перевод чисел из разных систем счисления.
Арифметические операции с числами. Форматы представления
чисел в МП.
4. Микропроцессор КР580ИК80. Архитектура МП. Форматы
команд и методы адресации. Система команд МП. Примеры
программ для МП.
5. Периферийные элементы серии КР580. Программируемый
таймер КР580ВИ53. Структура, программирование, режимы
работы таймера. ППА КР580ВВ55. Структура, программирование,
режимы работы адаптера. УСАПП КР580ВВ51. Структура,
программирование, режимы работы УСАПП.
6. Микропроцессор К1810ВМ86. Структура, модель МП,
организация памяти, ввод-вывод, режимы адресации МП К1810,
система команд, примеры программ для К1810ВМ86.
3 СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Абель П. Язык Ассемблера для IBM PC и
программирование / Пер. с англ. - М.: Высшая школа, 1992, 447 с.
2. П. Нортон, Р. Уилтон. IBM PC и PS/2. Руководство по
программированию. Пер. с англ. - М.: Радио и связь, 1994.
3. В.А. Вагнер и др. Аппаратура персональных компьютеров
и ее программирование. IBM PC XT/AT и PS/2.- М.: Радио и связь,
1995.
4. Калабеков Б.А. Микропроцессоры и их применение в
системах передачи и обработки сигналов. Учебное пособие для
вузов. – М.: Радио и связь, 1988. – 368 с.
5. Грибов Г.В.,
Ю-Ч.Лю. Аппаратные и программные
средства микроЭВМ - М.: Финансы и статистика. 1983, 254 с.
4 СОЗДАНИЕ ПРОГРАММ ДЛЯ МИКРОПРОЦЕССОРА
При разработке программ для МП на языке ассемблера
используют различные служебные программы – редакторы текста,
трансляторы, компоновщики, отладчики программ.
Наиболее удобно применять специальные пакеты программ,
предназначенные для разработки программного обеспечения
определенного вида микропроцессоров, объединенные общей
идеологией, общей системой меню и справочной информации. При
отсутствии такого пакета используют разрозненные программы,
выполняющие необходимые операции.
Необходимый набор программ разработки программного
обеспечения (ПО) для микропроцессоров включает:
 редактор текста, обеспечивающий ввод, редактирование
и запись файла программы на языке ассемблера микропроцессора;
 транслятор, преобразующий исходный текст программы в
файл
объектного
кода,
содержащего
коды
команд
микропроцессора,
информацию
для
редактора
связей,
предупреждения и сообщения об ошибках;
 редактор связей или компоновщик объектных модулей.
Компоновщик связывает несколько объектных модулей в единую
программу, добавляет вызываемые из программы библиотечные
файлы, подставляет вместо ссылок на объекты их реальные или
относительные адреса и формирует исполняемый файл в кодах
процессора;
 отладчик, обеспечивающий эффективный и удобный
механизм покомандной и модульной отладки компонентов
программы с доступом к ресурсам МП: регистрам, ячейкам памяти,
таймерам, портам и т.д.
 справочник по каждой из применяемых программ.
Общая процедура создания и отладки программ для МП
включает следующие этапы, показанные на рисунке 1.
Ошибки
трансляции
Редактор
текста
Ошибки
компоновки
Транслятор
ASM
Ввод
текста
програм- Исходный
текст на языке
мы
ассемблера
МП
Ошибки
отладки
Редактор
связей
Объектный
файл
Отладчик
На
Исполняемый программатор
файл в кодах
микроПЗУ
процессора
Рисунок 1 – Этапы процедуры создания ПО для МП
При создании программы ее исходный текст с помощью
редактора текста вводится в память ЭВМ и записывается в файл. С
помощью транслятора ассемблера этот файл переводится в
промежуточную форму – объектный файл. Объектный файл
требует дополнительной обработки, которая выполняется с
помощью программы - редактора связей. На выходе редактора
связей формируется исполняемый файл, который и является нашей
целью.
На каждом из этапов создания ПО могут быть обнаружены
различные ошибки, что приводит к необходимости возврата к
исходному тексту программы, исправления его и повторения всей
процедуры преобразования. Ошибки исполняемого файла:
неправильная
работа
программы,
зацикливание,
ошибки
выполнения и другие, могут возникать и обнаруживаться только
при запуске программы на исполнение. Эти ошибки можно
исследовать и найти пути устранения с помощью программы
отладчика. Отлаженный файл программы может быть записан с
помощью программатора в ПЗУ для использования в
микропроцессорной системе (МПС).
4.1 Редактор текста
В качестве редактора текста можно использовать любой
редактор, позволяющий вводить и записывать в файл текст
программы в виде ASCII символов. Редактор не должен кодировать
вводимые
символы,
записывать
служебные
комбинации,
производить переключение фонтов.
Наиболее подходят DOS – редакторы текста, например Norton
Editor, PE2, NE, ME, Lexicon, редакторы, встроенные в Norton
Commander, FAR и т.д.
При записи программы следует избегать использования
символов табуляции. Они не всегда правильно обрабатываются в
различных трансляторах.
В выбранном текстовом редакторе нужно создать символьный
файл программы. При закрытии программы редактора текста
нужно не забыть записать созданный файл программы в виде файла
с произвольным именем и расширением *.ASM. Это расширение
является стандартным для файлов на ассемблере. Само имя должно
быть написано английскими буквами и длина его не должна
превышать 8 символов, например Tablic.ASM.
4.2 Транслятор ассемблера
Для трансляции программы, написанной на языке ассемблера
компьютера IBM PC и совместимого с ними, наиболее
распространены трансляторы двух фирм: фирмы Borland и фирмы
Microsoft. Первый называется TASM.EXE, второй – MASM.EXE.
Для выполнения стандартных возможностей при трансляции
ассемблерных программ выбор транслятора не очень важен. Все
различия заключаются в выполнении дополнительных сервисных
функций трансляции. Для их активизации при запуске транслятора
указываются ключи, набор которых специфичен для каждой из
указанных фирм.
В общем случае, для простых программ нужно использовать
только стандартные функции транслятора. Поэтому процесс
трансляции часто выполняется либо вообще без ключей, либо с
ключами по умолчанию.
Рассмотрим процесс трансляции программы, имеющей имя
Tablic.ASM. В качестве транслятора выберем MASM.EXE версии
6.0, в режиме по умолчанию.
На запуск программы без указания имени транслируемой
программы транслятор реагирует подсказкой по-английски,
описывающей использование (usage) транслятора, типа:
usage: MASM [option...] source(.asm),[out(.obj)],[list(.lst)],[cref(.crf)][;]
Run "MASM /H" for more info
В квадратных скобках записываются необязательные
параметры трансляции, например, ключи ( option ), но имя исходного
(source) файла должно быть указано при вызове транслятора.
Причем расширение (.asm) может быть опущено.
Приведем строку правильного вызова транслятора и
формируемые им сообщения. В строке DOS-приглашения D:\>
набираем следующую команду:
D:\> MASM.EXE Tablic.asm
и завершаем ее нажатием клавиши [Enter]. Или возможен
упрощенный вариант команды:
D:\> MASM Tablic [Enter].
Далее на экран выводятся сообщения ассемблера вида:
Microsoft (R) MASM Compatibility Driver
Copyright (C) Microsoft Corp 1991. All rights reserved.
Invoking: ML.EXE /I. /Zm /c /Ta Tablic.ASM
Microsoft (R) Macro Assembler Version 6.00
Copyright (C) Microsoft Corp 1981-1991. All rights reserved.
Assembling: Tablic.ASM
Здесь указано название фирмы-разработчика (Microsoft (R)), год,
перечислены (Invoking) ключи, используемые транслятором по
умолчанию, номер версии (Version 6.00). Для нас самым важным
является последнее сообщение: (Assembling: Tablic.ASM), говорящее
что транслятор не нашел ошибок и преобразует программу в
объектный файл. Результатом работы MASM будет созданный в
данном каталоге или перезаписанный файл с расширением *.OBJ, в
нашем случае Tablic.OBJ.
В случае обнаружения ошибок транслятор выдает на экран
номера строк и тип ошибки (ошибок), например:
Assembling: Tablic.ASM
Tablic.ASM(10): error A2008: syntax error : ax
Tablic.ASM(29): error A2048: nondigit in number
Здесь транслятор сообщил о двух ошибках: в 10 строке
ошибка синтаксиса (ошибка формата команды), в 29 строке
встретился недесятичный символ в десятичном числе. Безусловно,
типов ошибок может быть огромное множество, поэтому
описывать их здесь не имеет смысла. При поиске ошибок нужно
прочитать тип ошибки и просто внимательно проанализировать
строку с указанным номером, определить и исправить ошибку.
4.3 Редактор связей
Использование редактора связей LINK.EXE дает возможность
пользователю писать программы на языке ассемблера, состоящие
из нескольких модулей. Редактор связей решает вопросы
относительно
внешних
ссылок,
а
также
выполняет
перераспределение адресов программы.
Редактор связей может активизироваться в режиме подсказок
и режиме командной строки. Карта загрузки, алфавитный перечень
глобальных символов и все ошибки связей могут сохраняться в
дисковом файле.
Для запуска редактора связей в режиме подсказок задайте
команду
D:\> LINK.EXE
Редактор
связей
будет
реагировать
подсказкой,
запрашивающей имя файла ввода.
Microsoft (R) Segmented-Executable Linker Version 5.15
Copyright (C) Microsoft Corp 1984-1991. All rights reserved.
Object Modules [.OBJ]:
На запрос нужно указать имя объектного файла tablic,
расширение можно опустить, и нажать [Enter]. На все дальнейшие
вопросы можно просто нажимать [Enter], например:
Run File [TABLIC.exe]:
List File [NUL.MAP]:
Libraries [.LIB]:
Definitions File [NUL.DEF]:
Все вопросы имеют в квадратных скобках ответ по
умолчанию, поэтому достаточно согласиться с предложенным
вариантом. Конкретно здесь предлагается имя исполняемого (Run
File) с расширением *.ЕХЕ, пропуск файла листинга ( List File),
отсутствие библиотек пользователя (Libraries) и пропуск файла
определений (Definitions File). Если на любой вопрос ответить вводом
просто точки с запятой «;», то другие вопросы не задаются, а
принимаются по умолчанию. В режиме командной строки имя
объектного файла нужно указать в командной строке и поставить
точку с запятой.
Редактор
связей
выдает
сообщения
двух
типов:
предупреждения (warning) и сообщения об ошибках (error).
Предупреждения часто можно игнорировать, поскольку они не
препятствуют
созданию
исполняемого
файла
и
его
работоспособности. Ошибки либо не позволяют создать
исполняемый файл, либо гарантируют его неработоспособность.
Пример выдаваемых сообщений:
LINK : warning L4021: no stack segment
TABLIC.OBJ(Tablic.ASM) : error L2029: 'ALFA' : unresolved external
TABLIC.OBJ(Tablic.ASM) : error L2029: 'BETA' : unresolved external
There were 2 errors detected
В первой строчке имеется предупреждение, в котором
сообщается, что отсутствует сегмент стека. Игнорирование этого
сообщения чаще всего вреда не приносит. Две следующих строки
говорят, что имеются неопределенные внешние ссылки ('ALFA' и
'BETA'). Здесь это означает, что вызов двух указанных подпрограмм
не может быть выполнен из-за недоступности этих модулей.
Должно быть ясно, что такие ошибки не позволят работать
программе правильно. Прежде всего, оба указанных модуля
должны быть заранее созданы и оттранслированы. В этом случае,
нужен будет запуск LINK.EXE с указанием через пробел имен трех
объектных файлов:
D:\> LINK.EXE TABLIC.OBJ ALFA.OBJ BETA.OBJ
Или более простой вариант:
D:\> LINK TABLIC ALFA BETA;
Первое имя, из перечисленных в строке, выбирается в
качестве имени исполняемого файла. При отсутствии сообщений об
ошибках создается исполняемый файл с расширением *.EXE.
4.4 Отладчик
Количество отладчиков, работающих среде IBM PC и
совместимых с ними компьютеров, достаточно велико. Наиболее
распространен простой отладчик DEBUG.EXE, поставляемый в
составе операционной системы фирмы Microsoft. Отладчики
имеются и в составе пакетов TURBO фирмы Borland и других.
Легкий в освоении, небольшой и достаточно эффективный
отладчик AFD (Advanced Fullscreen Debug) (автор H.-P.
Puttkammer) предназначен для отладки программных модулей на
уровне системы команд языка ASM86, а также разработки
небольших фрагментов ПО МП систем на базе МПК серии КР1810.
Для вызова отладчика необходимо набрать следующую
команду:
D:\> AFD.COM
После вызова отладчика на дисплей выводится (рис 2)
основная картина, отображающая возможности многооконного
взаимодействия с пользователем в режиме прямого доступа к
элементам информации, а также сведения о назначении
функциональных клавиш.
AX 0000
SI 0000
CS 2A02
IP 0100
Stack +0 0000
FLAGS 0200
BX 0000
DI 0000
DS 2A02
+2 0000
CX FEFF
BP 0000
ES 2A02
HS 2A02
+4 0000
OF DF IF SF ZF AF PF CF
DX 0000
SP FEE6
SS 2A02
FS 2A02
+6 0000
0 0 1 0 0 0 0 0
-------------------------------------------------------------------------------=====>
| 1
0 1 2 3 4 5 6 7
--------------------------------------------| DS:0000
CD 20 00 A0 00 9A EE FE
| DS:0008
1D F0 ED 04 DE 19 6D 01
0100 EB2E
JMP
0130
| DS:0010
F7 17 78 01 F7 17 DE 19
0102 8A26A19C
MOV
AH,[9CA1]
| DS:0018
07 01 01 00 02 FF FF FF
0106 FC
CLD
| DS:0020
FF FF FF FF FF FF FF FF
0107 F2AE
REPNZ SCASB
| DS:0028
FF FF FF FF E2 29 C4 FF
0109 263A25
CMP
AH,ES:[DI]
| DS:0030
DE 19 14 00 18 00 02 2A
010C 75F9
JNZ
0107
| DS:0038
FF FF FF FF 00 00 00 00
010E 47
INC
DI
| DS:0040
07 0A 00 00 00 00 00 00
010F C3
RET
| DS:0048
00 00 00 00 00 00 00 00
-------------------------------------------------------------------------------2
0 1 2 3 4 5 6 7
8 9 A B C D E F |
DS:0000
CD 20 00 A0 00 9A EE FE
1D F0 ED 04 DE 19 6D 01 |. ...... ......m.
DS:0010
F7 17 78 01 F7 17 DE 19
07 01 01 00 02 FF FF FF |..x..... ........
DS:0020
FF FF FF FF FF FF FF FF
FF FF FF FF E2 29 C4 FF |........ .....)..
DS:0030
DE 19 14 00 18 00 02 2A
FF FF FF FF 00 00 00 00 |.......* ........
DS:0040
07 0A 00 00 00 00 00 00
00 00 00 00 00 00 00 00 |........ ........
-------------------------------------------------------------------------------1 Шаг 2 Цикл 3Буфер команд 4 Помощь 5Уст.Т.пр 6
7Вверх 8Вниз 9Влево 0Вправ
Рисунок 2 – Вид окна программы-отладчика
Верхнее окно отображает состояние внутренних регистров
микропроцессора, вспомогательных регистров HS и FS, четырех
ячеек стека, регистра и отдельных флагов МП. Окно с символом 
предназначено для ввода командной строки, ниже его отображается
текущий
фрагмент
содержимого
сегмента
кодов
в
шестнадцатеричном и дизассемблированном представлении. В
малом окне на границе показано содержимое ячейки памяти,
косвенно адресуемой текущей командой, выделенной более ярким
фоном в окне кодов. Окна М1 и М2 (отмечены цифрами 1 и 2)
предназначены для отображения фрагментов памяти в заданных
пользователем сегментах. В М1 показан шестнадцатеричный дамп
(содержимое памяти), а в окне М2 дополнительно и символьное
представление памяти. В нижнем окне отображается назначение
функциональных клавиш.
Изменение элементов информации в любом окне (кроме окна
кодового сегмента) может выполняться после установки курсора на
данный элемент. Для перемещения курсора между окнами
используются функциональные клавиши: F7 - вверх; F8 - вниз; F9 влево; F10 - вправо. Внутри окон перемещение выполняется
клавишами управления курсором.
Таким образом, пользуясь средствами перемещения курсора
по экрану дисплея, можно заносить требуемые величины в любой
из регистров МП, в ячейки стека, изменять значения флагов МП,
модифицировать
содержимое
ячеек
сегментов
памяти,
перенастраивать адресацию дампов памяти.
Назначение функциональных клавиш:
F1 - пошаговое выполнение программы. При нажатии на
клавишу выполняется одна команда, отмеченная в кодовом
сегменте как текущая (более яркий фон);
F2 - выполнение процедур. При нажатии на клавишу текущая
команда типа вызова подпрограммы (CALL) или прерывания (INT)
инициализирует выполнение всей вызываемой процедуры вплоть
до команды возврата (RET, IRET);
F3 - просмотр буфера команд. При нажатии на клавишу в
командной строке появляется предыдущая, ранее запомненная в
специальном буфере команда, которая может быть снова
выполнена после нажатия клавиши  (ENTER);
F4 - вывод справочника по системе команд отладчика;
F5 - переход в режим задания точек прерывания
отлаживаемой программы;
F6 - не используется;
F7 - F10 - управление перемещением курсора между окнами.
Клавиши F1 и F2 используются при отладке программ в
пошаговом режиме, F3 позволяет сократить количество
манипуляций клавиатурой, F4 предоставляет возможность
"вспомнить" особенности синтаксиса конкретных команд в нужный
момент, F5 применяется в режиме отладки с заданием контрольных
точек программ.
Для загрузки в отладчик исполняемой программы необходимо
воспользоваться
командой
L
имя_исполняемого_файла,
набираемой в окне приглашения отладчика, например:
 L tablic.exe
Взаимодействие пользователя с отладчиком поддерживается
развитой и удобной системой команд (см. работу функциональной
клавиши F4). В качестве параметров команд используются
значения адресов, имена файлов, идентификаторы регистров,
строки символов, конкретные значения или арифметические
выражения.
Значения адреса задаются в виде: [сегмент:] смещение. Если
сегмент не указан, то он используется для соответствующей
команды по умолчанию. Смещение может быть задано как
конкретное число, арифметическое выражение, или следующее
значение указателя команд IP в виде символа *.
При использовании арифметических выражений следует
помнить, что порядок вычисления для них установлен только слева
направо, а применение скобок недопустимо. Для указания признака
десятичного числа необходим предшествующий символ %
(процент).
Выход из программы отладчика осуществляется по команде
 QUIT
4.5 Работа с контрольными точками
Отладчик
предоставляет
широкие
возможности
по
применению аппарата контрольных точек. В качестве них чаще
всего используются точки прерывания. Отладчик переводится в
режим работы с контрольными точками при нажатии клавиши F5.
В результате на экране появляется картина, озаглавленная
"СПИСОК ТОЧЕК ПРЕРЫВАНИЯ" и включающая следующие
элементы:
 окно задания параметров точек прерывания;
 окно ввода адреса области дизассемблирования;
 окно области дизассемблирования;
 строка, отображающая назначение функциональных
клавиш.
В первом окне отображаются:
 номера точек прерывания (1-8);
 адреса точек прерывания;
 условия прерывания;
 номер прохода, на котором необходимо прерывание;
 счетчик количества проходов через установленную точку
прерывания;
 действие, выполняемое при прерывании.
Адрес точки прерывания должен указывать на первый байт
команды, по достижению которой необходимо прервать
выполнение программы.
Условие прерывания задается программистом и определяет
события, при одновременном выполнении которых требуется
прерывание выполнения программы.
В качестве таких событий могут быть:
 равенство содержимого какого–либо регистра конкретному
значению;
 равенство содержимого косвенно адресуемой ячейки
памяти конкретному значению;
 равенство состояния счетчика команд (IP) конкретному
значению;
 проход через другую точку прерывания;
 различные комбинации перечисленных выше условий.
Номер прохода через установленную точку, на котором
необходимо выполнить прерывание, задается программистом для
выделения требуемого момента прерывания в процессе выполнения
программы и чаще всего используется при исследовании
циклических участков программ. Для отмены точки прерывания
достаточно указать в качестве номера прохода 0.
Содержимое счетчиков числа проходов через точки
прерывания позволяет получить дополнительную информацию о
процессе выполнения программы после останова в какой-либо
одной из нескольких заданных программистом точек.
Если значение счетчика совпадет с заданным числом проходов
до прерывания, и при этом заданные условия будут истинными, то
произойдет прерывание процесса выполнения отлаживаемой
программы.
В качестве реакции на прерывание можно задать:
 включение/выключение режима трассировки программы
(T ON или T OFF соответственно). Трасса при этом запоминается в
специальном буфере и впоследствии может быть проанализирована
программистом. Имеется возможность запрещать трассировку
процедур типа INT ( T ON NI );
 продолжение выполнения программы ( C );
 останов выполнения программы и возврат в отладчик ( S );
 сброс счетчика числа проходов для указанных точек
прерывания.
Во второе окно курсор помещается при нажатии клавиши F8.
В этом случае пользователь должен указать адрес команды,
начиная с которой дизассемблированный текст и коды программы
будут отображены в третьем окне.
Перемещение окна по области кодов выполняется клавишами
управления курсором.
Функциональные клавиши в режиме работы с контрольными
точками имеют следующее назначение:
F1 - вывод содержимого буфера трассы на экран;
F2 - не используется;
F3 - считывание ранее сохраненных в файле NA.SET
контрольных точек в рабочую область;
F4 - вывод справочной информации о режиме работы с
контрольными точками;
F5 - возврат на уровень основного режима отладчика;
F6 - не используется;
F7 - сохранение информации о точках прерывания в файле
NA.SET;
F8 - переход в окно задания адреса зоны дизассемблирования;
F9 - отмена всех заданных точек прерывания;
F10 - не используется.
5 ТАБЛИЦА СИМВОЛОВ ASCII КОДА
(Лабораторная работа 1)
5.1 Введение
Целью работы является знакомство с процедурой создания
программ для МП, начальное изучение этапов разработки,
написания, трансляции и отладки программ и основ
программирования на языке ASSEMBLER в IBM PC путем
создания простейшей программы очистки экрана и вывода таблицы
ASCII символов.
В рамках данной лабораторной работы будут рассмотрены
приемы программирования на примере разработки программы,
формирующей изображение на экране монитора в алфавитноцифровом режиме работы методом прямого отображения
информации в видеопамять.
5.2 Метод прямого отображения в
видеопамять
Наиболее наглядным способом демонстрации правильной
работы программ является формирование на экране монитора
статических и динамических изображений. При программировании
на языке АССЕМБЛЕР формирование изображений проще всего
выполнять методом прямого отображения информации в
видеопамять.
Информация,
записанная
в
видеопамять,
отображается на экране монитора платой видеоадаптера.
Конструктивно видеопамять расположена на плате видеоадаптера.
Способ отображения в видеопамять зависит от текущего
режима работы видеоадаптера. Изучение методов управления
режимами видеоадаптера не входит в данную работу. Поэтому
используем видеорежим, устанавливаемый операционной системой
автоматически по умолчанию.
При включении компьютера устанавливается текстовый
(алфавитно-цифровой) режим работы видеоадаптера 80*25. Это
означает, что изображение на экране в виде строк алфавитноцифровых символов располагается в 25 строках по 80 символов в
строке. Данный режим также устанавливается операционной
системой при запуске сессии DOS из WINDOWS (3.1, 95, NT, 98).
Рассмотрим организацию видеопамяти в текстовом режиме 80*25.
Символы на экране располагаются в текстовых позициях.
Позиции обозначаются координатами столбца и строки (X, Y) и
показаны на рисунке 3.
0,0
79,0
0,24
79,24
Рисунок 3 – Адресация позиций экрана текстового
режима 80*25
Строки
символов
в
видеопамяти
располагаются
последовательно в виде линейки, начиная с позиции (0,0) до
позиции (79,0), затем с позиции (0,1) до позиции (79,1) и так далее
до позиции (79,24). Начало видеопамяти данного режима для
большинства видеоадаптеров расположено с адреса B800:0000H,
соответствующего позиции (0,0). Для перемещения по позициям
экрана необходимо изменять только смещение адреса.
На каждую позицию экрана для изображения символа в
видеопамяти отводится 2 байта. Первый байт, расположенный с
четного адреса, содержит ASCII – код символа, который с
помощью специального знакогенератора преобразуется в точечный
образ символа на экране.
Второй байт (нечетный адрес) является байтом атрибута. Байт
атрибута управляет характеристиками символа и фона: цвет
символа, цвет фона, яркость символа, мерцание (рисунок 4).
7
6
5
4
M
R
G
B
3
I
2
1
0
R
G
B
Цвет фона
Цвет символа
Рисунок 4 – Назначение битов байта атрибутов
в текстовом режиме 80*25
Цвет фона и цвет символа в байте атрибута составляется из
трех цветовых компонентов: R (RED) – красный, G (GREEN) –
зеленый и B (BLUE) –синий. Бит I отвечает за яркость изображения
символа, а бит M– за мерцание символа.
Сочетание битов цвета R, G, B и яркости I позволяет задавать
до 16 цветов символа, описанных в таблице 1.
Таблица 1 – Значения цвета символа, задаваемого
в байте атрибутов
Значение
битов
I_R_G_B
0000
0001
0010
0011
0100
0101
Цвет
символа/ф
она
Черный
Синий
Зеленый
Бирюзовы
й
Красный
Фиолетов
Значение
битов
I_R_G_B
1000
1001
1010
1011
1100
1101
Цвет символа
Серый
Голубой
Салатовый
Светлобирюзовый
Розовый
Светло-
Значение
битов
I_R_G_B
0110
0111
Цвет
символа/ф
она
ый
Коричнев
ый
Белый
Значение
битов
I_R_G_B
Цвет символа
1110
фиолетовый
Желтый
1111
Ярко-белый
Цвет фона задается в диапазоне от 0 до 7 и соответствует
второму столбцу таблицы 1. Обычно байт атрибута равен 07Н, что
соответствует светлому символу (0111) на темном фоне (0000).
5.3 Лабораторное задание
1. Процесс программирования на ассемблере довольно
трудный, хотя трудности носят чисто психологический характер.
Поэтому для начала создадим и исполним простую программу,
которая выводит 10 символов «О» в четвертую текстовую строку
экрана.
Воспользуемся шаблоном программы (См. подраздел 6.7
учебного пособия). Шаблон является формой, которую нужно
наполнить требуемым содержанием.
Исходя из простоты задачи, нам не нужен ни сегмент данных,
ни сегмент стека. В текстовом редакторе создадим следующий
фрагмент:
COD_SEG
NACHALO
модуля
‘CODE’
SEGMENT
ASSUME
PROC
PARA
PUBLIC
CS:COD_SEG
FAR
;
PUSH
DS
; Стандартный прием в
MOV
AX,0
;
PUSH
AX
;
последующего
;
операционную
Настраиваем
Начало
головного
головной
программе,
нужный для
возврата в
систему.
MOV
AX, 0B800H
;
MOV
MOV
ES, AX
SI, 640
; гистр на видеопамять
;
Смещение
в
сегментный ревидеопамяти на
;
текстовой
начало
4той
сверху
MOV
CX, 10
; строки ((80*2) байт*4)
;
Счетчик
числа
MOV
AL,’O’
;
MOV
ES:[SI], AL
; для вывода на экран
;
Пишем
его
в
ADD
SI, 2
; Перейдем к адресу
; следующей позиции
LOOP
RET
ENDP
CIKL
; Замыкаем цикл
; Выход из модуля
;
Конец
головного
повторений
Определяем
код
символа
CIKL:
видеопамять
экрана
NACHALO
модуля
COD_SEG
ENDS
END
NACHALO
; Закрыли сегмент кода
; Последний обязат.
оператор
2. Запишем эту программу с именем NUM1.asm.
Оттранслируем программу с помощью команд:
D:\> MASM NUM1
D:\> LINK NUM1;
и получим исполняемый файл NUM1.ЕХЕ. Запустим программу на
выполнение.
3. На экране в 4 строке сверху должна отобразиться
десятка символов «ОООООООООО». Изменим в
текстовом редакторе текст программы: увеличим число
в счетчике повторений в команде MOV CX, … до 100.
Повторим пункт 2. Объясните, почему текст
расположился на двух строках?
4. Изменим
в
текстовом
редакторе
текст
программы: увеличим число в регистре смещения в
команде MOV SI, … до 2000. Повторим пункт 2.
Объясните, почему текст сместился вниз и на середину
строки? Как начало текста сместить на начало текущей
строки?
5. Изменим в текстовом редакторе программу:
изменим код в команде MOV AL,’O’ на MOV AL,134.
Повторим пункт 2. Объясните, почему изменился
выводимый символ и почему именно на этот?
6. Составьте текст программы, выполняющей очистку
экрана и вывод таблицы всех 256 символов ASCII. Для очистки
экранной области используется запись во все позиции экрана
(ячейки видеопамяти) кода пробела 20H. Символы ASCII
получаются при выводе на экран всех возможных кодов
символов от 0 до 255. Таблица 256 символов ASCII должна быть
сформирована в центре экрана в виде симметричной матрицы 16
на 16 символов. Проверьте работу программы. Почему адрес
смещения позиции экрана каждый раз нужно изменять на 2, а не
на 1?
7. Ответьте на контрольные вопросы:
 Укажите достоинства и недостатки управления
видеосистемой методом прямого отображения в
видеопамять.
 Какой код байта атрибута необходим для задания
синего символа на красном фоне и черного символа на
белом фоне?
8. Файл отчета с ответами на вопросы пунктов 3, 4, 5, 6, 7, и
текстом программы по пункту 6, снабженной комментариями по
командам, переслать в Томск для зачета выполнения контрольной
работы №1.
6 ШАХМАТНОЕ ПОЛЕ
(Лабораторная работа № 2)
6.1 Введение
Целью работы является дальнейшее изучение этапов создания
и методов отладки программ на примере программы,
формирующей на экране сложное статическое изображение в виде
шахматного поля.
6.2 Построение шахматного поля
Изображение шахматного поля (рисунок 5) характеризуется
наличием регулярно повторяющихся участков, имеющих разные
цвета.
Рисунок 5 – Изображение шахматного поля
Размер каждой элементарной клетки шахматного поля должен
превышать одно знакоместо, как по строке, так и по кадру. Темное
знакоместо соответствует символу пробела, а светлое знакоместо
получается с символом с кодом 219.
При формировании изображения такой структуры необходимо
в программе использовать несколько циклов. Для повышения
производительности программы циклы должны быть вложены друг
в друга. Структуру поля необходимо проанализировать для выбора
оптимального построения программы.
6.3 Лабораторное задание
1. Составьте текст программы, формирующей изображение
шахматного поля размером 8 на 8 клеток. Размер клетки поля
выбирайте, исходя из условия заполнения всего экрана. Какой
размер клетки в знакоместах у Вас получился и почему?
2. Проверьте работу программы. Можно ли легко
перестроить программу на размер клетки на одно
знакоместо меньше, чем сейчас и почему?
3. Ответьте на контрольные вопросы:
 Сколько циклов в Вашей программе? Какое
минимальное количество циклов необходимо для
построения всей структуры? Попробуйте это
обосновать.
 Как в Вашей программе изменить порядок
следования светлых и темных клеток?
 Как изменить узор шахматной доски от размера 8
на 8 клеток до размера 10 на 10 клеток?
4. Файл отчета с ответами на вопросы пунктов 1, 2, 3 и
текстом программы, снабженной комментариями по командам,
переслать в Томск для зачета выполнения контрольной работы № 2.
7 ПОЯСНЕНИЯ ДЛЯ ВЫПОЛНЕНИЯ
КОНТРОЛЬНЫХ РАБОТ №1 И №2
Для ответа на большинство вопросов контрольных работ
нужно либо выбрать пункт меню, либо выполнить требуемые
действия и указать числовой или символьный ответ. Некоторые
вопросы требуют указания нескольких пунктов меню для полноты
ответа.
В ряде вопросов контрольных работ необходимо указать
значение, получаемое на семисегментном индикаторе, подключенном
к порту 50 микропроцессорной системы. Семисегментный индикатор
представляет из себя полупроводниковый оптический прибор,
составленный из излучающих светодиодов, расположенных в виде
некоторой матрицы. При подаче на любой светодиод небольшого
напряжения, он будет излучать видимый свет. Светодиоды
называются сегментами или разрядами индикатора, а сам индикатор
называется знакосинтезирующим.
Если выходы регистра емкостью один байт, соединить с
разрядами семисегментного
индикатора
в
следующей
последовательности (рис 6):
Бит 6
Бит 0
Бит 5
Бит 1
Бит 4
Бит 2
Бит 7
Бит 3
Рисунок 6 – Соединение разрядов индикатора с битами
регистра
то запись байта в регистр будет зажигать сегменты индикатора,
соответствующие единичным битам байта. Комбинацией
записываемых битов можно изменять отображаемый знак.
Например, запись байта 00000110В зажигает два сегмента
индикатора, которые образуют изображение символа единицы (рис
7):
Рисунок 7 – Изображение цифры 1 на семисегментом
индикаторе
На семисегментном индикаторе можно отобразить все
символы шестнадцатеричной системы счисления (рис. 8)
Рисунок 8 – Символы шестнадцатеричной системы на
индикаторе
Символы от 0 до 9 отображаются привычными цифрами, а
символы свыше 9 изображаются буквами от A до F, заменяя
заглавные буквы B и D прописными.
В ряде заданий контрольных работ необходимо выполнить с
двоичными и шестнадцатеричными числами ряд арифметических,
логических и других операций, задаваемых в мнемонике команд
микропроцессора КР580ИК80 или К1810ВМ86 и полученный
результат записать в порт 50, к выходам которого подключен
семисегментный индикатор. Подключение битов регистра порта 50
соответствует рис.6.
Ответ в задании нужно записать в виде цифры или буквы,
отображаемой на индикаторе. Латинские буквы в ответе можно
писать как заглавными, так и прописными. Если в задании
специально не оговорено, переносы при арифметических
операциях не учитывается.
Download