Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
62
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

Список литературы

  1. Скэнлон Л. ПЭВМ IBM PC XT. Программирование на языке Ассемблера, 1989

  2. Шнайдер О.Л. Язык Ассемблера для ПК фирмы IBM, 1989

  3. Абель П. Язык ассемблера для IBM PC и программирования, 1992

  4. Дао Л. Программирование микропроцессора 8086, 1988

  5. Ю-Чжен Л. Микропроцессоры семейства 86/88, 1985

  6. Джордейн Р. Справочник программиста ПК типа IBM PC/XT/AT, 1992

  7. Бредли Д. Программирование на языке Ассемблера для ПК фирмы IBM, 1988

  8. Трусов Б.Г. Инструментальные средства программирования (в 10 книгах)

книга первая Текст. ред., яз. Ассемблера, 1993

книга вторая Программирование на языке Ассемблера, 1993

  1. Hортон П., Уилтон Д. IBM PC и PS/2: руководство по программированию, 1993

  2. Пильщиков В. Программирование на языке Ассемблера IBM PC, 1994

  3. Использование Турбо Ассемблера при разработке программ, 1995

  4. Богословский А.В. Системное программирование на Ассемблере для IBM-совместимых ПК, 1992

  5. Лямин Л.В. Макроассемблер, 1994

  6. Операционная система MS DOS 1810

книга 4 Язык программирования макроассемблер, 1993

книга 5 Описание языка, 1993

  1. Рудаков П.И., Финогенов К.И. Программируем на языке Ассемблера IBM PC (в четырёх книгах), 1995

  2. Шереметьев К. Введение в Турбо ассемблер, 1993

  3. Белецкий Я. Турбо ассемблер, 1994

  4. Kац Я.Я. Системное программирование на ПЭВМ IBM PC: системные ресурсы IBM PC и язык Ассемблера, 1993

  5. Исида Х. Программирование для микрокомпьютера, 1988

  6. Масюков А.В. IBM PC и MS DOS с примерами на TP и Ассемблере

  7. Hортон П., Соухэ Д. Язык Ассемблера для ПК IBM, 1991

  8. Кулаков В. Программирование на аппаратном уровне. Специальный сравочник, 2001

  9. Юров В. Ассемблер. Учебник. 2000

  10. Пуставаров В.И. Ассемблер: программирование и анализ корректности машинных программ. Киев: 2000

Приложение 1 Инструкция по работе с программой Turbo Debugger.

Программа Turbo Debugger (далее - TD) является мощным и удобным средством, предназначенным для отладки программ, написанных на Ассемблере для IBM-совместимых ПК и языках высокого уровня. Данное руководство содержит информацию об основах работы с TD: запуск, загрузка программ, подлежащих отладке, исполнении и трассировке их, просмотре и редактировании информации в памяти и содержимого регистров микропроцессора.

П.1.1. Запуск Turbo Debugger.

Для запуска TD наберите в командной строке DOS или Norton Commander "TD" и нажмите ENTER. Через некоторое время на экране появится изображение, содержащее в верхней своей части меню, а в нижней - строку статуса. Остальная часть экрана будет занята окном CPU. Как правило, оно имеет светло-зеленый цвет. Поверх него программа выведет окно с информацией о версии и разработчиках. Нажмите ENTER для того, чтобы оно исчезло. Если программа запустилась (меню и статусная строка появились), но центральная часть экрана не содержит окна CPU, нажмите клавиши [Alt+ПРОБЕЛ] (сначала нажмите Alt, а затем, не отпуская ее, клавишу ПРОБЕЛ). Слева вверху экрана появится меню, содержащее 3 пункта. Нажмите клавишу "S". Меню исчезнет и на экране появится окно CPU.

Для выхода из Turbo Debugger обратно в DOS нажмите комбинацию клавиш Alt-X.

П.1.2. Общие принципы работы с TD.

Работая с Turbo Debugger, Вам придется столкнуться с такими понятиями, как меню и окно. Самая верхняя строка экрана в TD содержит меню. В нем находятся такие команды, как File, Edit, View, Run и т.д. Вы можете выбрать одну из команд (пунктов) меню и программа исполнит ее. Если необходимо уточнить, как именно исполнить выбранную команду, на экране появится другое меню, называемое подменю.

Для того, чтобы начать работать с меню, нажмите клавишу F10. Один из пунктов меню станет выделен цветом. Вы можете выбрать необходимую команду, используя клавиши со стрелками влево/вправо (клавиши курсора), а затем нажать ENTER для того, чтобы исполнить ее. В Turbo Debugger все команды верхнего, главного меню вызывают подменю. В подменю пункты расположены вертикально, то есть для выбора необходимой команды нужно использовать клавиши курсора вверх/вниз. Выбрав команду, также нажмите ENTER. Для того, чтобы выйти из меню, не выбрав никакой команды, нажмите ESC - вы окажетесь в предыдущем меню. Если Вы находитесь в верхнем меню, нажатие ESC приведет к возврату в окно CPU.

Окно CPU, главное окно программы, содержит текст отлаживаемой Вами программы, содержимое регистров, вершины стека и областей данных, используемых Вашей программой. Окно CPU разделено на несколько частей – в этом случае для передвижения курсора (выделенной цветом строки) между частями этого окна используйте клавишу TAB.

В Turbo Debugger все окна можно разделить на рабочие и информационные. К рабочим относятся те, в которых осуществляется ввод, редактирование, просмотр программ, данных и другой разнообразной информации. Примером такого окна может служить окно CPU. Информационные окна, в отличие от рабочих, просто содержат некоторые сообщения, например, сообщения об ошибках и так далее. Для того, чтобы убрать (закрыть) информационное окно, используются клавиши ENTER и ESC (нажатие на любую из них приведет к исчезновению окна с экрана). Для закрытия рабочих окон используется комбинация клавиш Alt-F3.

Кроме того, работая с Turbo Debugger, вы можете нажатием клавиш Alt-F5 посмотреть, что находится "за" его экраном, т.е. увидеть экран MS DOS. По нажатию этой комбинации экран Turbo Debugger исчезает и становятся видимыми сообщения, выводимые DOS, прикладными программами и отлаживаемым Вами модулем. Нажатие на любую клавишу вернет Вас в Turbo Debugger.

П.1.3. Загрузка программы для отладки.

Для того, чтобы отладить программу, нужно предварительно загрузить ее в Turbo Debugger . Программа должна быть предварительно оттранслирована ассемблером (Turbo Assembler, Macro Assembler и др.) и преобразована в файл типа COM или EXE при помощи редактора связей (LINK, TLINK или других).

Войдите в меню FILE и выберите в нем пункт OPEN (нажмите F10; с помощью клавиш курсора влево/вправо выберите пункт File; нажмите ENTER - на экране появится подменю, содержащее команды Open, Change Dir, Get Info и др. Выберите в нем самый верхний пункт, Open, используя клавиши курсора вверх/вниз, и нажмите ENTER). На экране появится окно загрузки файла, содержащее в верхней части строку для ввода имени файла. Наберите в ней имя Вашего файла, например: C:\WORK\ASM\PROGRAM.EXE ,и нажмите ENTER. Если вы неверно ввели имя файла и TD не смог найти его на диске, в верхней левой части экрана появится окно с предупреждением "Program not found" - программа не найдена. Нажмите ENTER, чтобы убрать его и повторите все с самого начала. Если загрузка прошла успешно, вы вернетесь к окну CPU. Перед этим в левом верхнем углу экрана может появиться окно с сообщением "Program has no symbol table" - его можно игнорировать; нажмите ENTER, чтобы оно исчезло. После загрузки в левой верхней части окна CPU будет содержаться ассемблерный текст программы, первая команда которой будет выделена цветом.

П.1.4. Содержимое окна CPU.

Все окно CPU разделено на 4 части. В левой верхней, самой большой, части находится текст отлаживаемой программы, т.е. адреса и коды инструкций МП. В правой верхней части содержится содержимое регистров МП; отдельно выделено содержимое регистра флагов. В правой нижней части расположено окно текущего содержимого вершины стека. И, наконец, слева внизу находится содержимое некоторой области ОЗУ (dump).

Для перемещения курсора между частями окна CPU следует использовать клавишу TAB (по часовой стрелке) или комбинацию Shift-TAB (против часовой стрелки).

П.1.5. Запуск программы на выполнение.

После загрузки программы ее можно начинать отлаживать. Самой простой операцией отладки является запуск программы на выполнение. Это осуществляется нажатием клавиши F9.

После выполнения программы на экране появится окно с сообщением "Terminated. Error code N.", где N - код ошибки ДОС, с которым завершилась Ваша программа. Нажмите ENTER, чтобы убрать его.

Не забудьте, что запуск программы на выполнение – опасная операция: если ваша программа содержит ошибки, то, скорее всего, это приведет к "зависанию" машины. Поэтому, прежде чем запускать программу, не поленитесь выполнить ее трассировку.

П.1.6. Трассировка.

Трассировкой называют процесс пошагового выполнения программы. В Turbo Debugger это осуществляется при помощи клавиш F7 и F8. По нажатию любой из них происходит выполнение текущей (помеченной символом треугольника в окне CPU) ассемблерной команды, после чего отображается новое содержимое регистров, областей данных, вершины стека и TD возвращается к ожиданию нажатия клавиши. А ресурсы участвующие в выполнении команды выделяются цветом.

Отличие F7 от F8 состоит в том, что при использовании F8 команда CALL выполняется как один шаг (собственно ассемблерная подпрограмма, вызываемая по этой команде, не трассируется), а выполнение CALL по клавише F7 приводит к трассировке самой подпрограммы.

Непосредственно после загрузки программы активной считается первая ее команда (точка входа). Например, для COM-файлов это всегда будет команда, находящаяся по адресу со смещением 100h от текущего значения регистра CS.

Завершить трассировку, не доходя до конца программы, можно нажатием комбинации клавиш Control-F2.

П.1.7. Исполнение части программы.

Если Вы хотите начать трассировку программы, например, с ее середины, то совсем не обязательно выполнять ее по шагам, последовательными нажатиями F7 или F8, до этого места. Достаточно просто установить курсор на ту строку, с которой необходимо начать трассировку, и нажать F4. Программа запустится на выполнение и выполнится до той команды, на которой был установлен курсор. Далее можно выполнять обычную трассировку. Клавиша F4 может быть полезна также во многих других ситуациях. Например, когда Вам в процессе трассировки необходимо запустить некоторый блок программы, не трассируя его, установите курсор на последнюю инструкцию этого блока и нажмите F4. Программа будет выполняться от последней выполненной команды до команды, на которую установлен курсор, а затем TD снова вернется в режим трассировки.

П.1.8. Редактирование содержимого регистров.

В процессе трассировки Вы можете не только просматривать, но и изменять содержимое регистров микропроцессора. Внесенные Вами изменения будут действительны только в течение одного прогона программы. Для того, чтобы ввести значение в некоторый регистр, выполните следующие шаги:

  1. Находясь в левой верхней части окна CPU нажмите клавишу TAB. Курсор переместится вправо, в ту часть окна, где находится содержимое регистров.

  2. Используя клавиши курсора вверх/вниз, выберите тот регистр, содержимое которого вы хотите изменить.

  3. Нажмите [Control+C] или ПРОБЕЛ. На экране появится окно ввода значения в регистр.

  4. В верхней строке появившегося окна введите новое значение. Не забывайте о правилах записи числовых констант в Ассемблере: h-числа должны заканчиваться символом "h" и, если они начинаются с буквы (A,B...), в первом разряде числа должен стоять 0. После ввода числа нажмите ENTER.

Если вы изменяете содержимое регистров уже не в первый раз, то во второй, третьей и последующих строках окна ввода будут находиться предыдущие введенные Вами значения. Вместо того, чтобы вводить старое значение заново, можно, используя клавиши курсора, выбрать одно из них и нажать ENTER. Регистру присвоится новое значение - это будет отображено на экране. Если Вы введете число неправильно, то появится окно "Symbol not found", сообщающее Вам о допущенной ошибке. Нажмите ENTER, чтобы оно исчезло и повторите все, начиная с пункта 2.

  1. После ввода всех необходимых значений в регистры нажмите [Shift+TAB] для возврата назад к тексту программы.

П.1.9. Просмотр данных в памяти.

Для просмотра областей данных в окне CPU выделена нижняя левая его часть. Она содержит строки вида:

АДРЕС: XX XX XX ... XX AAAA..AAA

Где : XX - шестнадцатеричное значение ячейки памяти;

A - ASCII-представление содержимого соответствующей ячейки.

В качестве адреса указываются пары СЕГМЕНТ:СМЕЩЕНИЕ; вместо числа СЕГМЕНТ может выступать любой из сегментных регистров. Сразу после загрузки TD в этом подокне отображаются данные, начиная с адреса DS:0000.

Для того, чтобы переместить курсор в подокно данных, нажмите [Shift+TAB]. При помощи клавиш курсора можно перемещаться внутри этого окна, просматривая различные области памяти. Кроме того, для изменения адреса начала просматриваемой области памяти, можно выполнить следующие шаги:

  1. Находясь в подокне просмотра данных, нажмите [Ctrl+G]. В нижней части экрана появится окно "Enter adress to position:".

  2. В первой строке этого окна введите адрес начала области ОЗУ, дамп которой Вы хотите просмотреть. В качестве адреса может выступать смещение, например "100h", или пара СЕГМЕНТ:СМЕЩЕНИЕ, например "FFF0h:0000h" или "DS:100h" (в последнем случае подлежащая просмотру область памяти будет начинаться со смещения 100h в текущем сегменте данных). Нажмите ENTER. Как и в окне ввода содержимого регистров, здесь также можно выбрать любое введенное Вами ранее значение адреса вместо того, чтобы вводить его заново.

  3. После нажатия ENTER окно исчезнет и, если адрес был введен правильно, в подокне просмотра данных будет отображаться дамп памяти, начиная с введенного Вами адреса. В противном случае появится окно "Symbol not found" - Вы допустили ошибку и Вам придется повторить все снова.

П.1.10. Редактирование данных.

В подокне просмотра данных можно не только просматривать, но и изменять содержимое областей ОЗУ. Для того, чтобы ввести последовательность байт в некоторую область памяти, выполните следующие действия:

1.) В подокне просмотра данных установите курсор на первый байт области памяти, которую вы хотите изменить (см. Просмотр данных).

2.) Нажмите [Control+C]. В появившемся окне "Enter new data bytes" введите один или несколько байт, разделенных пробелами, например:

0FDh 18h 0

и нажмите ENTER.

3.) Если ввод был произведен правильно, окно исчезнет, и новые значения будут побайтно записаны в ячейки ОЗУ, начиная с того байта, на который был установлен курсор. Если Вы ошиблись, появиться окно с сообщением "Syntax error" - синтаксическая ошибка. Скорее всего вы неверно записали одно из чисел, Вам придется повторить все с начала.

П.1.11. Редактирование программ.

Кроме вышеперечисленных функций Turbo Debugger предоставляет возможность элементарного редактирования программ в процессе отладки и записи полученного кода в память на один прогон программы или до повторной ее загрузки в Turbo Debugger.

Для того, чтобы ввести в память TD нужную команду процессора, выполните следующие действия:

1.) Находясь в подокне отображения программы, нажмите [Control+A]. На экране появится окно "Enter instruction to assemble".

2.) Введите в первой строке этого окна ассемблерную инструкцию. Например, MOV AX,0123h и нажмите ENTER.

3.) Если команда введена правильно, то она преобразуется Turbo Debugger'ом в соответствующую инструкцию МП и запишется по тому адресу, на котором находился курсор. После этого курсор перемещается на следующую после введенной команды ячейку памяти.

Если при вводе инструкции была допущена ошибка, TD не сможет перевести ее в соответствующий код команды. В этом случае будет выдано окно с сообщением об ошибке, например, "Invalid instruction mnemonic" - неверная инструкция. Попробуйте еще раз.

Не забывайте, что при изменении таким образом существующих в программе команд, новая команда может оказаться длиннее старой. В результате последующая команда (или несколько команд) будут испорчены. Поэтому при разработке программ, подлежащих отладке, не забывайте вставлять в программу несколько инструкций NOP, чтобы впоследствии вновь введенные команды занимали именно их место в памяти.

Данное описание программы Turbo Debugger является далеко не полным. В нем не рассмотрены символьная отладка программ, написанных на языках высокого уровня, использование множества дополнительных возможностей TD по отладке резидентных модулей, и многое другое. Очень полезно самостоятельно просмотреть всю систему меню, начиная с главного. За любой дополнительной ин формацией Вы можете обращаться в фирменное руководство по работе с пакетом программ Turbo Debugger или в систему контекстно-зависимой помощи, которая может быть вызвана в любой момент работы с программой нажатием клавиши F1.