
- •В.А. Афанасьев
- •Часть 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. Контрольные вопросы
- •Список использованной и рекомендуемой Литературы
- •Оглавление
6.2.2. Путь выполнения команды
Если в ответ на приглашение DOS ввести команду или имя исполняемого файла (без расширения) и нажать клавишу Enter, то путь поиска системой (командным процессором Command) необходимого объекта будет следующим.
Проверяется, не ввёл ли пользователь имя внутренней команды DOS. Если введена внутренняя команда, она будет выполнена.
Проверяется текущая директория на предмет выявления программного файла с именем и расширением .com или .exe. и только затем ищется командный файл с расширением .bat. Найденный файл исполняется.
Если ничего из перечисленного в пп. 1 и 2 не найдено, то система начнёт поиск по путям, записанным в файле Autoexec.bat (Windows 9x) или в Autoexec.nt (Windows 2000). Оператор пути может быть примерно таким (допустим, что в компьютере используются ещё программы-оболочки FAR и Dos Navigator):
Path=с:\;с:\windows\command;c\program files\far;f:\tasm5\bin;f:\dn для Windows 9x
Path= f:\tasm5\bin;f:\dn для Windows 20003
Если система не находит ни команду, ни имя исполняемого файла, то выводится соответствующее сообщение.
Уменьшает время поиска, таким образом, ввод расширения имени файла. Если же, кроме всего прочего, в командной строке указывается полный путь поиска, то он предельно упрощается.
6.2.3. Трансляция программы. Опции командной строки
Рассмотрим процесс трансляции программы на примере простой интерактивной программы Hello.asm (см. приложение П.1.2 к работе № 1). Для ассемблирования файла Hello.asm в командной строке наберите: tasm hello.asm и нажмите клавишу Enter. Поскольку Вы не задали другое имя для объектного файла, то будет создан объектный файл с этим же именем hello.obj. Заметим, что расширение имени файла .asm вводить не требуется, т.к. tasm принимает это по умолчанию. На экране вы увидите следующее:
Turbo Assembler Version 4.1 Copyright (C) 1988,1996 Borland International
Assembling file: Hello.asm
Error messages: None
Warning messages: None
Passes 1
Remaining memory: ***K
Из сообщения следует, что ассемблирование завершено без ошибок и отсутствия предупреждений. Предупреждение не является ошибкой, однако его игнорирование может привести к неприятностям в дальнейших этапах работы с программой, поэтому лучше своевременно реагировать на данный тип замечаний.
Для компоновки программы введите в командную строку: tlink hello.obj.
Здесь, также как и при ассемблировании, расширение имени obj не является обязательным. По завершению компоновки будет сформирован файл hello.exe с выводом на экран сообщения.
Turbo Linker Version 7.1. 30.1 Copyright (C) 1987,1996 Borland International
Теперь программу hello.exe можно запустить на исполнение, результатом которого будет вывод на экран сообщения:
Это время после полудня? (Да/Нет-Y/N)
Курсор будет мерцать после последнего символа в ожидании ввода ответа. Введите букву y. Программа ответит:
Здравствуйте!
Если будет введена строчная буква n, то программа ответит:
Доброе утро!
В процессе ассемблирования или компоновки вы можете выбирать различные исполнения процесса, которые задаются опциями в командной строке Tasm или Tlink. Для вывода списка опций командной строки Turbo Assembler наберите tasm и нажмите <Enter>; то же самое проделайте с командой tlink.
Опции описываются одной или несколькими буквами. Для задания опции наберите косую черту (или дефис) и соответствующую букву между командой tasm или tlink и именем программы, которую вы ассемблируете либо компонуете. Например, для ассемблирования программы Hello.asm и получения файла с листингом (файл, в котором содержится описание процесса ассемблирования), используйте команду: tasm/l hello. Опции разрешается набирать как прописными, так и строчными буквами. Исполните эту команду и затем рассмотрите файл с листингом Hello.lst, используя текстовый редактор. В листинге каждая строка начинается с номера, затем следуют байты объектного кода и, наконец, собственно текст программы. Кроме того, TASM выводит в файле листинга таблицу идентификаторов, где содержится информация о метках и сегментах, включая значение и тип каждой метки и атрибуты каждого сегмента. При ассемблировании программы вы можете использовать в одной командной строке несколько опций, разделяя их косыми чертами. Рассмотрим некоторые примеры для команды tasm:
tasm/l/c hello – команда дополняет файл листинга таблицей перекрёстных ссылок, в которой указывается, где была определена каждая метка и где на неё есть ссылка;
tasm/l/n hello – исключает таблицу идентификаторов из листинга;
tasm/ml – включает различие прописных и строчных символов в пользовательских идентификаторах;
tasm/zi hello – команда добавляет в Hello.obj информацию, необходимую для использования отладчика Turbo Debugger.
Для команды tlink:
tlink/v hello – опция /v включает в Hello.exe информацию, необходимую для последующего открытия этого файла в отладчике Turbo Debugger;
tlink/m hello – опция /m приводит к созданию файла отображения или файла загрузки Hello.map. В нём перечисляются имена, адреса загрузки и размеры всех сегментов, входящих в программу;
tlink/x/v hello – команда даёт возможность загрузить Hello.exe в отладчик Turbo Debugger, запрещает создание (опция /x) файла отображения.
Tlink/3 <file_name.obj> – компоновщик создаёт файл типа .exe с поддержкой 32-битного кода.
Tlink/t <file_name.obj> – опция /t создаёт файл типа .com.