[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП (Всякие мелочи), страница 6
Описание файла
Файл "[2009] Большаков С.А. - Методическое пособие по выполнению ЛР по СП" внутри архива находится в папке "Всякие мелочи". PDF-файл из архива "Всякие мелочи", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "системное программирование" в общих файлах.
Просмотр PDF-файла онлайн
Текст 6 страницы из PDF
Уровень (степень серьезности)предупреждений, формируемых компиляторами может быть установлен специальнымипараметрами режимами. Для TASM эти параметры имеют следующий вид:/w0, /w1, /w2 - формирование компилятором уровня предупреждений: w0=нет, w1=w2=включены/w-xxx, /w+xxx Отключить (-) или назначить (+) предупреждения с номером xxxПри запуске компилятора программы с предупреждениями мы получим:Assembling file:first.asmLET2 DB*Warning* first.asm(4) Missing operand - trailing ? assumedError messages:NoneWarning messages: 1В данном примере переменная LET2 (я специально ввел эту строку с ошибкой) неимеет начального значения (она не инициализирована). Компилятор формирует предупреждение (*Warning* - выделено жирным шрифтом), но компиляцию завершает успешно. Число предупреждений указывается в последней строке.
Уровень выдачи сообщенийАссемблера в QC25 настраивается в специальном окне настроек компилятора.2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”22Для этого нужно в главном меню выбрать пункт “Options” затем подпункт “Make”и в окне позицию “Assembler Flags”. Установка режимов “Warn Level” в нужную позицию позволяет задать требуемый уровень предупреждений. Отметим также, что в этомокне могут быть выполнены и другие настройки компилятора, например, включение иливыключение режима формирования листинга Ассемблера.О листинге программы и его составляющих речь пойдет ниже.
Здесь мы только отметим, что компилятор формирует листинг Ассемблера в отдельный файл, который можно просмотреть в обычном текстовом редакторе и распечатать при необходимости.Пример листинга нашей простейшей программы приведен ниже:Turbo Assemblerfirst.asm12345данных DS67891011121314151617Version 3.10000Page 1MYCODE SEGMENT 'CODE'ASSUMECS:MYCODE, DS:MYCODELET DB 'A'START:; Загрузкасегментногорегистра0000000141000100020E1F00030005000AB4 022E: 8A 16CD 21000C000E00100012B0 00B4 4CCD 21Turbo AssemblerSymbol Table24/02/09 12:46:17PUSH CSPOP DS; Вывод одного символа на экранMOV AH, 020000rMOV DL, LETINT 21H; Выход изпрограммыMOV AL, 0MOV AH, 4CHINT 21HMYCODE ENDSEND STARTVersion 3.1Symbol NameType??DATE??FILENAME??TIMEText24/02/09 12:46:17ValueText"24/02/09""first"Text"12:46:17"Page 2232009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”??VERSIONNumber 030A@CPUText0101H@CURSEGTextMYCODE@FILENAMETextFIRST@WORDSIZEText2LETByteMYCODE:0000STARTNearMYCODE:0001Groups & SegmentsMYCODEBit Size Align16 0012 Para#4#317Combinenone10ClassCODEЛистинг программы условно разделен на четыре части (я условно разделил их цветом заполнения): заголовок, текст программы, таблица переменных и описание сегментов.В заголовке (Turbo AssemblerVersion 3.1) указывается версия компилятора идата компиляции.В часть текста программы помимо операторов программы включено: имя компилируемого модуля (первая строка - first.asm), номера строк после компиляции (первая колонка), смещение операторов и данных в оперативной памяти, вычисленное с учетомдлинны команд и данных (вторая колонка) и машинное представление команд и данных(третья колонка).
Эта информация очень полезна для программиста при отладке.В таблицу переменных включаются: имена переменных и меток программы (у насэто LET и START) с указанием сегмента и смещения в программе. Кроме того здесь выделены предопределенные переменные, которые доступны в программе (такие как -@CPU ,@FILENAME и другие).В части описания сегментов дается описание сегментов программы и их свойств (внашем случае сегмент - MYCODE).
Наш сегмент имеет размер 12 байт, Выровнен на границу параграфа (Para – 16 байт) и входит в класс CODE.Листинг Ассемблера в QC25 также формируется и может быть просмотрен в отдельном окне, сохранен в виде файла и распечатан. Для доступа к листингу нужно в главном меню выбрать позицию “View” “Show Listing…”.
После этого в окне редактированиямы можем наблюдать листинг программы, полученный после компиляции.Данный документ может быть сохранен в виде отдельного файла или распечатан.Нужно иметь виду, что процедуры распечатки настроены на версии ДОС и, скорее всего,на матричные принтеры, которые уже вышли из употребления, поэтому желательно сохранить данный листинг в файл, выполнить процедуру перекодировки (см.
выше) и затемраспечатывать.2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”243.3. Запуск на редактирование связей программы АссемблераВторой фазой создания программы является редактирование связей между модулями. Иногда этот процесс называют редактирование внешних связей. Данная операцияпоказана на рисунке, расположенном выше. Основной смысл такой операции заключаетсяв объединении множества объектных модулей в единый исполнимый модуль и контроль“разрешения/раскрытия” внешних ссылок/связей. Под внешними ссылками мы понимаемследующее:− Один объектный модуль напрямую использует данные (переменные) из другогообъектного модуля.
В этом случае он должен знать адрес этой переменной в общемисполнимом модуле и тип данных, который ей соответствует.− Один объектный модуль вызывает процедуру из другого объектного модуля. Вэтом случае он должен знать адрес этой процедуры в общем исполнимом модуле испособ ее вызова.Для выполнения редактирования связей могут быть использованы следующие программные компоненты, в зависимости от выбранной системы программирования:TLINK.EXE (TASM), LINK.EXE (MASM) и QLINK.EXE (QC25). В интегрированной оболочке QC25 редактор связей вызывается неявно на основе параметров, настроенных вспециальном окне.Запуск редактора связей (или, по-другому, компоновщика) в системе программирования TASM основан на следующих правилах:>TLINK[.EXE][<множестворежимов>]<списокобъектныхмодулей>[,<исполнимый модуль>] [,<карта связей>] [,<список библиотек>]Где:− TLINK[.EXE] – название исполнимого модуля редактора связей.
При непосредственном запуске и при запуске из командного файла путь к модулю должен бытьопределен.− <множество режимов> - множество режимов - параметров работы редактора связей, разделенных пробелами. Каждый режим начинается служебным символом ‘/’ иимеет символьное значение.− <список объектных модулей> - перечень объектных модулей, подлежащих включению в общий исполнимый модуль. Имена файлов модулей должны разделятьсяпробелами.
Для указания большого числа модулей может быть указан текстовыйфайл подсказки, имени которого должен предшествовать символ “@”. Например:@mod_list.rsp, содержащий перечень редактируемых объектных модулей. Данныйфайл может иметь следующее содержание:/t +mod1.obj mod2.obl +mod3.obj +mod4.objПримечание: знак “+” используется для продолжения списка на следующуюстроку. Отметим также, что длина командной строки не может превышать 128символов, а при редактировании сложных проектов число модулей может бытьбольшим, поэтому трудно обойтись без таких файлов. Обратим внимание также нато, что данный список не может быть пустым, хотя бы один объектный модульдолжен быть использован для создания исполнимого модуля. В файл подсказкидопускается включать также режимы настройки редактора связей и другие параметры.− <исполнимый модуль> - имя исполнимого модуля, создаваемого компоновщиком.Если этот параметр не указан, то имя исполнимого модуля задается на основе пер-2009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”25вого объектного модуля в списке, а его расширение зависит от режима редактирования: “.COM” для параметра “/t” и “.EXE” в других случаях.− <карта связей> - имя создаваемого специального текстового файла (.МАР) содержащего результаты процесса редактирования связей.
Компоновщик создает такойфайл, если указан параметр ‘/m’.− <список библиотек> - перечень библиотек объектных модулей, их которых автоматически должны выбираться объектные модули для разрешения недостающихмодулей при разрешении внешних связей. Библиотеки могут быть стандартными ипользовательскими. Библиотеки друг от друга разделяются пробелами. При подключении модулей из библиотек не должны возникать неоднозначности (одинаковые внешние имена в различных подключаемых модулях).
Вместо списка библиотек, как и в случае со списком объектных моделей, может быть использован файлподсказки (Например: @list_lib.txt), правила, записи которого аналогичны. Допускается использование нескольких файлов подсказки одновременно при одном запуске редактора связей.Пример запуска TLINK из командной строки выполняется так (на примере системыпрограммирования TASM):C:\BORLANDC\TASM>tlink.exe /v /l /m first.obj , first.exe , first.map↵Здесь в строке запуска редактора связей введены: имя исполнимого модуля компоновщика (tlink.exe), настройки-режимы редактора связей (/v /l /m) и имя модуля подлежащего редактированию (в нашем случае - first.obj), имя создаваемого исполнимого модуля (в нашем случае - first.exe) и имя файла карты памяти (first.map).При успешном редактировании связей создается исполнимый модуль, а на экранформируются следующие сообщения:C:\BORLANDC\TASM>tlink.exe /v /l /m first.obj , first.exe , first.map↵Turbo Link Version 5.1 Copyright (c) 1992 Borland InternationalWarning: No stackВ первой строке указывается версия редактора связей, используемая в нашем случае (Turbo Link Version 5.1 …), а во второй строке выдается предупреждение (Warning)о том, что явно в программе не объявлен сегмент стека, он будет использован по – умолчанию.
Редактирования связей задаются параметры-режимы, список которых может бытьполучен запуском компоновщика в режиме справки (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:00052009 год 2 курс 4-й семестр Большаков С.А.“Системное программирование”12 0000:000A14 0000:000CProgram entry point at 0000:0001Warning: No stack2615 0000:000E16 0000:0010Для иллюстрации листинга редактора связей в текст программы я добавил оператор следующего вида:PUBLIC LETЭтот оператор объявляет переменную LET как доступную другим модулям.