
- •В.А. Афанасьев
- •Часть 1 Лабораторный практикум
- •Предисловие
- •1. Краткая характеристика операционной среды ms-dos в компьютерах с операционной системой Windows
- •2. Составные части ms-dos и её инициализация
- •3. Взаимодействие Ассемблерной программы с ms-dos и аппаратными средствами Компьютера
- •4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде ms-dos
- •Распределение первого мегабайта памяти компьютера
- •Содержание некоторых полей области данных bios
- •5. Программная модель 32-разрядных процессоров i80x86
- •Назначения сегментных регистров
- •6.2.2. Путь выполнения команды
- •6.2.3. Трансляция программы. Опции командной строки
- •6.2.4. Структура программы для .Exe- и .Com-файлов. Образ программы в памяти
- •Сегменты упрощенной модели памяти Small
- •%Title "Имя exe-файла программы"
- •%Title "Имя com – файла программы"
- •6.2.5. Работа с отладчиком Turbo Debugger (td)
- •6.2.6. Форматы машинных команд и их кодирование
- •Определение эффективного адреса
- •Косвенные виды адресации
- •6.2.6.2. Использование 32-битных регистров
- •6.2.7. Работа над синтаксическими ошибками при ассемблировании программы
- •6.3. Задание к работе. Порядок выполнения
- •6.4. Контрольные вопросы
- •Приложения к лабораторной работе № 1 п.1.1. Машинные коды команд базового процессора i8086
- •Машинные коды команд базового процессора i8086
- •П.1.2. Демонстрационные файлы
- •П.1.3. Форматы исполняемых файлов .Exe и .Com на диске
- •А) Листинг prog_com. Lst
- •Содержимое префикса программы psp
- •А) Листинг prog_exe.Lst
- •Б) Машинный код исполняемого файла prog_exe.Exe на диске объёмом 624 байта
- •Формат заголовка исполняемого .Exe – файла на диске
- •7.2.2. Ввод с клавиатуры символьной информации
- •7.2.2.1. Буфер ввода данных с клавиатуры
- •7.2.2.2. Системные функции dos ввода данных с клавиатуры
- •Сравнительная характеристика функций dos ввода с клавиатуры
- •7.2.3. Функции dos вывода данных на экран
- •7.2.4. Расширенные коды ascii и управление программой с клавиатуры
- •Расширенные коды для функциональных клавиш
- •7.2.5. Строковые команды. Общая характеристика
- •Команды обработки строк
- •7.3. Задания к работе. Подготовка и выполнение
- •7.4. Контрольные вопросы
- •Приложения к лабораторной работе № 2 Приложение п.2.1. Примеры реализаций типового задания
- •Приложение п.2.2. Esc-последовательности
- •Параметры Esc-последовательности
- •Приложение п.2.3. Таблица символов в кодировке ascii
- •8.2.2. Прямое программирование видеобуфера в текстовом режиме
- •8.2.3. Справочные данные по функциям bios
- •8.2.3.1. Прерывание int 10h. Видеофункции bios
- •Текстовые видеорежимы и страницы в стандарте vga, поддерживаемые современными видеоконтроллерами
- •8.2.3.2. Рекомендации по использованию видеосервиса bios
- •8.2.3.3. Прерывание int 16h
- •8.2.3.4. Задержка программных операций
- •Int 15h, функция 86h
- •8.3. Варианты индивидуального задания
- •8.4. Контрольные вопросы
- •Приложения к работе № 3 Примеры реализаций типовых заданий п.3.1. Листинг 3.4. Программа получения скан-кодов клавиш клавиатуры
- •П.3.2. Листинг 3.5. Демонстрационная программа использования функций bios для работы с экраном и клавиатурой
- •9.2.1. Представление знаковых и беззнаковых чисел в 16-разрядном компьютере
- •Представление чисел в 16- разрядном компьютере
- •9.2.2. Преобразование ascii-кодов чисел с произвольным основанием в двоичное число
- •9.2.3. Преобразование двоичного числа в ascii-строку числа по произвольному основанию
- •9.2.4. Задание к работе. Порядок выполнения
- •Варианты заданий 1-7
- •Варианты заданий 8-14
- •9.2.5. Вопросы построения многомодульных программ
- •9.2.6. Ассемблирование и компоновка отдельных модулей в программу. Создание библиотеки объектных модулей
- •9.3. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
9.3. Контрольные вопросы
Изложите алгоритм преобразования ASCII-кода числа с произвольным основанием в двоичное число.
Изложите алгоритм преобразования двоичного числа в ASCII-строку числа с произвольным основанием.
В чём заключается концепция модульного программирования?
Укажите основные синтаксические различия в организации программных модулей, принадлежащих одной программе?
Как вы понимаете принцип локализации переменных в модуле и деление переменных модуля на внутренние и внешние.
Как экспортировать из модуля процедуры, числовые константы и переменные в другие модули?
Как импортировать в модуль процедуры, числовые константы и переменные из других модулей?
Напишите команду, создающую библиотеку mta.lib из объектных модулей a.obj, b.obj и c.obj.
Напишите команду создания исполнительного файла программы с главным модулем main.obj, вспомогательные модули которого находятся в библиотеке mylib.
Список использованной и рекомендуемой Литературы
Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке Ассемблер. Пер. с англ. – M.: Радио и связь. 1989. – 336 с.
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Тома 18,19. MS-DOS для программиста, М.: Диалог-МИФИ, 1995. – 507 с.
Пильщиков В.Н. Программирование на языке ассемблера IBM PC. – М.: "Диалог-МИФИ", 2001. – 288 c.
Финогенов К.Г. Самоучитель по системным функциям MS-DOS. – Изд.2. – М.: Радио и связь, Энтроп, 1995. – 382 с.
Сван Т. Освоение Turbo Assembler. – Киев: Диалектика, 1996. – 544 с.
Юров В., Хорошенко С. Assembler: учебный курс. – СПБ: Питер Ком, 1999. – 672 с.
Зубков С.В. Assembler. Для DOS, Windows и Unix. – 2-е изд. – М.: ДМК, 2000. – 640 с.
Assembler /В. Юров. – СПб: Издательство "Питер", 2000. – 624 с.
Юров В. Assembler: Специальный справочник. СПб: Питер, 2000.
Пирогов В. Ю. Assembler. Учебный курс. – М.: "Нолидж", 2001. – 848с.
Юров В. Assembler: практикум. – СПб: Питер, 2001. – 400 с.
Рудаков П.И., Финогенов К.Г. Язык ассемблера: уроки программирования. – М.: ДИАЛОГ-МИФИ, 2001. – 640 с.
Голубь Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения. – СПб.: ООО "ДиаСофтЮП", 2002. – 656 с.
Ирвин Кип. Язык ассемблера для процессоров Intel, 3-е изд.: Пер. с англ. – М.: Изд. Дом "Вильямс", 2002. – 616 с.
Оглавление
Стр.
В.А. АФАНАСЬЕВ 3
Assembler IBM PC 3
Лабораторный практикум 3
Предисловие 5
1. Краткая характеристика операционной среды MS-DOS в компьютерах с операционной системой Windows 6
2. Составные части MS-DOS и её инициализация 7
3. Взаимодействие Ассемблерной программы с MS-DOS и аппаратными средствами Компьютера 9
4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде MS-DOS 11
5. Программная модель 32-разрядных процессоров i80x86 17
6. ЛАБОРАТОРНАЯ РАБОТА № 1 20
АССЕМБЛИРОВАНИЕ И ОТЛАДКА ГОТОВЫХ ПРОГРАММ. ИЗУЧЕНИЕ СИСТЕМЫ КОМАНД И СПОСОБОВ АДРЕСАЦИИ ОПЕРАНДОВ 20
6.1. Целевые установки 20
6.2. Методические рекомендации 20
6.2.1. Этапы создания программы 20
6.2.2. Путь выполнения команды 21
6.2.3. Трансляция программы. Опции командной строки 22
6.2.4. Структура программы для .exe- и .com-файлов. Образ программы в памяти 24
6.2.5. Работа с отладчиком Turbo Debugger (TD) 28
6.2.6. Форматы машинных команд и их кодирование 31
6.2.6.1. 16-битный режим адресации операндов в памяти 32
6.2.6.2. Использование 32-битных регистров 36
6.2.7. Работа над синтаксическими ошибками при ассемблировании программы 38
6.3. Задание к работе. Порядок выполнения 39
6.4. Контрольные вопросы 40
Приложения к лабораторной работе № 1 41
П.1.1. Машинные коды команд базового процессора i8086 41
П.1.2. Демонстрационные файлы 47
П.1.3. Форматы исполняемых файлов .exe и .com на диске 51
7. ЛАБОРАТОРНАЯ РАБОТА № 2 56
СИСТЕМНЫЕ ФУНКЦИИ DOS ВВОДА-ВЫВОДА ИНФОРМАЦИИ. ОБРАБОТКА СТРОКОВЫХ ПЕРЕМЕННЫХ 56
7.1. Целевые установки 56
7.2. Методические рекомендации 56
7.2.1. Вызовы функций MS-DOS для ввода-вывода символьной информации 56
7.2.2. Ввод с клавиатуры символьной информации 59
7.2.2.1. Буфер ввода данных с клавиатуры 59
7.2.2.2. Системные функции DOS ввода данных с клавиатуры 60
7.2.3. Функции DOS вывода данных на экран 65
7.2.4. Расширенные коды ASCII и управление программой с клавиатуры 66
7.2.5. Строковые команды. Общая характеристика 68
7.3. Задания к работе. Подготовка и выполнение 71
7.4. Контрольные вопросы 73
Приложения к лабораторной работе № 2 74
Приложение П.2.1. Примеры реализаций типового задания 74
Приложение П.2.2. Esc-последовательности 77
Приложение П.2.3. Таблица символов в кодировке ASCII 80
8. Лабораторная работа № 3 81
ПРИМЕНЕНИЕ СЕРВИСНЫХ ФУНКЦИЙ BIOS ДЛЯ РАБОТЫ С ЭКРАНОМ И КЛАВИАТУРОЙ 81
8.1. Целевые установки 81
8.2. Методические рекомендации 81
8.2.1. Введение 81
8.2.2. Прямое программирование видеобуфера в текстовом режиме 82
8.2.3. Справочные данные по функциям BIOS 85
8.2.3.1. Прерывание int 10h. Видеофункции BIOS 85
8.2.3.2. Рекомендации по использованию видеосервиса BIOS 89
8.2.3.3. Прерывание int 16h 91
8.2.3.4. Задержка программных операций 92
8.3. Варианты индивидуального задания 94
8.4. Контрольные вопросы 95
Приложения к работе № 3 96
Примеры реализаций типовых заданий 96
П.3.1. Листинг 3.4. Программа получения скан-кодов клавиш клавиатуры 96
Ideal 96
Model small 96
П.3.2. Листинг 3.5. Демонстрационная программа использования функций BIOS для работы с экраном и клавиатурой 97
9. Лабораторная работа № 4 104
ПРЕОБРАЗОВАНИЕ ФОРМАТОВ ЧИСЛОВЫХ ДАННЫХ В ОПЕРАЦИЯХ ВВОДА-ВЫВОДА 104
9.1. Целевые установки 104
9.2. Методические рекомендации 104
9.2.1. Представление знаковых и беззнаковых чисел в 16-разрядном компьютере 105
9.2.2. Преобразование ASCII-кодов чисел с произвольным основанием в двоичное число 106
9.2.3. Преобразование двоичного числа в ASCII-строку числа по произвольному основанию 108
9.2.4. Задание к работе. Порядок выполнения 109
9.2.5. Вопросы построения многомодульных программ 111
9.2.6. Ассемблирование и компоновка отдельных модулей в программу. Создание библиотеки объектных модулей 115
9.3. Контрольные вопросы 117
Список использованной и рекомендуемой Литературы 117
оглавление 119
1 Особенности инициализации среды для запуска DOS-программ из командной строки программ-оболочек Far и Windows Commander будут рассмотрены далее в п. 6.2.2.
2 Ram указывает, что система должна распределить только 64 Кбайт из области UMB для буфера страниц EMS -памяти и оставить остальное место (если таковое имеется) для использования DOS, чтобы обеспечить поддержку команд LOADHIGH и DEVICEHIGH. По умолчанию система использует всю доступную память из области UMB для буфера страниц EMS-памяти. Размер Emm указывается в PIF-файле для данного приложения, либо в файле _default.pif. Если в PIF-файле в качестве размера EMS задан нуль, то строка Emm в файле настройки DOS игнорируется.
3 Файл Autoexec.nt в системе Windows 2000 можно использовать для указания путей поиска (как и указывалось выше) только для программ DOS или с ней совместимых. Программы FAR и Windows Commander к таким не относятся, поэтому при использовании командных строк данных программ для работы с DOS-программами, требуется прописать соответствующие пути поиска в окне Переменные среды для пользователя. Наиболее просто открыть это окно можно следующим образом. Выделим на зкране монитора значок Мой компьютер с последующим вызовом диалогового меню. Выполним последоватльно команды: Свойства/Дополнительно/Переменные среды. Далее в окне Переменные среды для пользователя нажимаем кнопку Создать и, в диалоговом окне Новая пользовательская переменная, прописываем c помощью команды Path нахождение каталогов с програм- мами – оболочками и пакетом Tasm5.
4 Некоторая информация представленная на рис. 1.2, будет понятна из рассмотрения материала п. 6.2.5.
5 Использование драйвера ANSY.SYS требует включения в файл Config.sys (Config.nt) строки:
Device=C:\Win98\Command\Ansy.sys
Или нечто аналогичное, определяющее полный путь к драйверу в вашем компьютере.