Методическое пособие для выполнения лабораторных работ и КР (1075934), страница 7
Текст из файла (страница 7)
Редактирования связей задаются параметры-режимы, список которых может бытьполучен запуском компоновщика в режиме справки (tlink.exe /?). Кроме того можно использовать документацию и справочники для получения описания режимов редактирования. Выделим ниже некоторые самые важные:/t - формирование COM исполнимого модуля/v – включение в исполнимый модуль информации, необходимой для работы отладчика/m - построение специального файла – карты внешних связей/l – включение в исполнимый модуль номеров команд для отладчика/L – задание пути для автоматически подключаемых библиотек (.lib).После редактирования связей, если ошибок не обнаружено, формируется исполнимый модель и файл с расширением .map.
Этот файл, для нашего простого случая имеетследующий вид:StartStopLength Name00000H 00011H 00012H MYCODEAddress0000:0000Address0000:0000ClassCODEPublics by NameLETPublics by ValueLETLine numbers for first.obj(FIRST.ASM) segment MYCODE7 0000:00018 0000:000210 0000:000311 0000:0005252010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”12 0000:000A14 0000:000C15 0000:000EProgram entry point at 0000:0001Warning: No stack16 0000:0010Для иллюстрации листинга редактора связей в текст программы я добавил оператор следующего вида:PUBLIC LETЭтот оператор объявляет переменную LET как доступную другим модулям. В первой части файла описываются используемые сегменты (MYCODE), далее описываютсяпеременные, которые объявлены как внешние (LET), в следующем разделе листинга редактирования дается соответствие номера команды листинга и смещения в оперативнойпамяти (Например: 7 0000:0001).При работе с оболочкой QC25 настройки режимов редактирования производятся вотдельном окне (для его вызова нужно в главном меню выбрать пункт “Options” затемподпункт “Make” и в окне позицию “Linker Flags”.):Основные режимы (Flags), задаются аналогично: режим отладки (Debug Flags) ,генерация СОМ файла (Generate .COM File).
Другие режимы задаются в строках: Global,Debug и Release.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”26Для редактирования нескольких модулей в среде QC25 необходимо создать проект,который здесь называется “Program List”. Создание проекта выполняется в пункте главного меню “Маке” и в подпункте “Set Program List”.В специальном окне можно добавить несколько исходных модулей в проект, чтобудет предопределять их совместное редактирование.
На рисунке показано окно, в котором выполняется добавление новых модулей в проект.После добавления необходимо сохранить проект с определенным именем, в примере имя проекта – FIRST.MAK. В этот проект добавлен пока один модуль FIRSTD.ASM.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”27После создания проекта запуск на совместное редактирование выполняется в позиции главного меню “Make” подпункте “Build Program”.Если редактирование связей прошло успешно, то окна с диагностическими сообщениями не появляется. При наличии ошибок открывается специальное окно, в котороеразмещаются все сообщения об ошибках. На одном из рисунков, расположенных вышеокно диагностических сообщений показано.
Для этого в исходный модуль сознательновнесена ошибка для демонстрации работы редактора связей.3.4. Запуск на отладку программы АссемблераВ различных системах программирования для отладки предусмотрены разные программы. В TASM – это Turbo Debugger (TD). В MASM - это Сode View (CV). В QC25 отладчик встроен в интегрированную оболочку. Справедливости ради скажу, что QCвстроена версия CV.Процесс отладки заключается в поиске ошибок и причин их возникновения.
Дляполнофункциональной работы отладчика в исполнимый модуль должна быть включенаотладочная информация. Для TASM компиляция и редактирование связей должны бытьвыполнены с установкой следующих режимы:− TASM.EXE – режим “/zi” – включение отладочной информации в объектный модуль.− TLINK.EXE – режим “/v” - включение отладочной информации в исполнимыймодуль.Если это выполнено, то запуск на отладку может быть выполнен следующим образом:C:\BORLANDC\TASM>TD.EXE first.exe↵2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”28Отладчики работают в режиме диалога, поэтому на экране появиться специальноеокно отладчика, показанное ниже.В левой части окна отладчика расположен исходный текст отлаживаемой программы (окно - Module), а в правой части ее машинное представление (окно - CPU).
Кроме того в этом окне показаны: регистры микропроцессора (AX-IP), основные флаги (с - d), область сегмента данных (ES) и область сегмента стека (SS). В нижней части экрана показано окно просмотра данных (окно - Watches), в котором могут быть представлены любыепеременные программы.В целом отладчик позволяет выполнять следующие операции:− Выполнять программу по шагам (трассировка по отдельным командам). Существуют несколько возможностей трассировки: F8, F7, F4, F9.− Просматривать регистры, переменные, области памяти по ходу выполнения программы.− Останавливать программу в заданном месте (точки останова – BreakPoint) или позаданному условию.− Выполнять изменение данных в процессе такой трассировки.− Увидеть результаты работы программы (Alt+F5).2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”29Аналогичные действия можно выполнить в среде QC25, однако запускать для этогоотдельного отладчика не нужно, он интегрирован в оболочку. Для запуска отладки достаточно установить параметры компиляции и редактирования с возможностью отладки, создать программу и нажать клавишу F8.
Мы получим следующее окно (см. рисунок ниже), вкотором доступны практически те же возможности, что и в TD..В данном окне мы видим основную программу, которая может быть выполнена пошагам. В пункте меню “Run” перечислены возможности такого выполнения (клавиша “F8”). Текущая строка программы, которая должна быть выполнена на очередном шаге,выделена цветом (в нашем случае - зеленым).
В специальном окне (“Registers”) показанывсе регистры программы и флаги (“FL”). Данное окно может быть вызвано так: “View”=>“Windows” => “Registers”. Окно “Debug” предназначено для индикации текущих значений переменных и выражений программ. Это окно может быть вызвано так: “Debug”=>“Watch values …” => “<имя переменной> - Add ”.
В нижней строке окна дана подсказка для возможных операций трассировки программы. Результаты работы программы(вывод на консоль) можно посмотреть в специальном окне “View” =>“Windows” =>“Output” или нажать в любой момент клавишу “F4”.3.5. Запуск на выполнение программы АссемблераЗапуск на выполнение построенной исполнимой программы выполняется таким жеобразом, как и запускается любая программа. Возможны следующие варианты:− Запуск из командной строки;− Запуск под управлением отладчика;− Запуск из файлового менеджера;− Запуск в среде WINDOWS.При запуске из командной строки мы должны точно знать имя формируемого исполнимого модуля и обеспечить путь к программе в среде операционной системы (Команды CD или переменная PATH). При запуске из командной строки нужно ввестиC:\BORLANDC\TASM>first.exe↵AРезультат работы программы мы увидим следующей строке (“A” выделено шрифтом).2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”30При запуске под управлением отладчика необходимо воспользоваться специальными клавишами.
В TD – это клавиша “F9”, а QC25 - “F5”. Результат работы программымы можем посмотреть: в TD – “Window”=> “User screen” (или комбинация Alt+F5), а вQC25 “View” =>“Windows” => “Output” (или нажать клавишу “F4”).При запуске из файлового менеджера запуск производиться простым нажатиемклавиши “Enter” после выделения конкретной программы в панели просмотра файлов.Для программы, при необходимости, будет запущено окно командной строки, а результаты можно наблюдать в этом окне.При запуске в среде WINDOWS (любым известным Вам способом) будет автоматически запущена командная строка, а в ней программа.
Если в программе не предусмотрено ожидание ввода клавиши, то окно после этого также автоматически закроется. Поэтому желательно в программе предусмотреть еще несколько команд вида перед завершением программы:; Ожидание завершения программыMOV AH, 01HINT 021HВ этом случае окно командной строки не будет закрыто автоматически, но посленажатия на любую клавишу программа и окно командной строки закроется.3.6. Применение командных файлов для работы с АссемблеромЕсли Вы уже попробовали отладить простейшую программу в режиме команднойстроки, а даже под управлением файлового менеджера, то вы убедились, что необходимомногократно вводить команды (“пальчиками!!!”), что достаточно трудоемко и приводитчасто к ошибкам ввода. Наиболее удобно работать в интегрированной среде, освоив возможности управления клавишами или мышкой. Не все программисты желают использовать интегрированные оболочки для работы, хотя трудоемкость их, несомненно, не устраивает.
Для преодоления этого факта можно использовать командные файлы (см. лабораторную работу № 2). Можно создать командный файл, который настраивается на параметры (например, на имя исходного модуля), и использовать его для отладки программ.Такой файл может содержать различные настройки, меню для управления и включать всефазы работы с программой, перечисленные выше. Пример самого простого командногофайла, который я назвал “COMPTASM.BAT” приведен ниже:REM Фаза редактирования исходного модуляnotepad.exe %1.asmREM Фаза компиляцииtasm /l /zi /c %1.asmREM Фаза редактирования связейtlink /v /m /l %1.objREM Фаза отладкиPAUSEtd %1.exeДля запуска такого командного файла достаточно указать один параметр, которыйопределяет имя модуля для компиляции и редактирования.
Кроме того, должны быть определены пути (PATH) ко всем выполняемым в командном файле программам. В этом командном файле я вызываю стандартный редактор текста “notepad.exe” и вставил команду“PAUSE” для контроля предыдущих шагов.
Можно здесь “пофантазировать” и создатьфайл: без отладчика, зациклить его выполнение, сделать контроль вводимого параметра ит.д. Файл с зацикливанием и выполнением без отладчика показан ниже::STARTRKM2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”31IF (%1) ==() GOTO FINISHREM Фаза редактирования исходного модуляnotepad.exe %1.asmREM Фаза компиляцииtasm /l /zi /c %1.asmREM Фаза редактирования связейtlink /v /m /l %1.objPAUSEREM Фаза выполнения%1.exePAUSEGOTO START:FINISHECHO НЕТ ПАРАМЕТРАВ данном случае необходимо обратить внимание на кодировку русских букв и впрограмме и в командном файле.
Кодировка (ANSI или ASCII) должна соответствоватьрежиму командной строки, в котором вы работаете, и при необходимости нужно в командном файле запустить русификатор (RKM). К сожалению, приведенный командныйфайл приходится завершать с помощью кнопки завершения окна в WINDOWS (“X“).Практика.1.
Создайте командный файл для ассемблирования с пунктами меню2. Создайте командный файл с возможностью компиляции нескольких файлов.3. Создайте командный файл с выбором режима отладки: с отладчиком и без него.2010 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”324.