Додаток 2. Інструкція по роботі з програмою Turbo Debugger.
Після запуску на екрані з'явиться зображення, що містить у верхній своїй частині меню, а в нижній - рядок статусу (рис.1). Решта частини екрану буде зайнята вікном CPU. Процесор, як правило, воно має світло-зелений колір. Поверх нього програма виведе вікно з інформацією про версію і розробників або повідомлення про відсутність таблиці символів (рис.1)
ріс.1.Окно програми TD після запуску файлу TD.exe.
Натисніть [ENTER] для того, щоб воно зникло. Якщо програма запустилася (меню і статусний рядок з'явилися), але центральна частина екрану не містить вікна CPU. натисніть клавіші [Alt + ПРОБІЛ] (спочатку натисніть [Alt]. а потім, не відпускаючи її, клавішу [ПРОБІЛ]). Зліва вгорі екрана з'явиться меню, що містить 3 пункти. Натисніть [S]. Меню зникне і на екрані з'явиться вікно CPU (або натиснути [S] і клавішами [] [] вибрати меню View, далі CPU) (рис.2).
ріс.2.Визов вікна CPU в пункті меню View.
Для виходу з TD в DOS натисніть комбінацію клавіш [Alt-X].
Для того, щоб почати працювати з меню, натисніть клавішу [F10]. Один з пунктів меню стане виділений кольором. Ви можете вибрати необхідну команду, використовуючи клавіші зі стрілками вліво / вправо (клавіші курсора), а потім натиснути [ENTER] для того, щоб виконати її. В TD все команди верхнього, головного меню викликають підменю. У підміню пункти розташовані вертикально, тобто для вибору необхідної команди потрібно використовувати клавіші курсора вгору / вниз. Вибравши команду, також натисніть [ENTER]. Для того, щоб вийти з меню, не вибравши ніякої команди, натисніть [ESC] - ви опинитеся в попередньому меню. Якщо Ви перебуваєте в верхньому меню, натискання [ESC] призведе до повернення в вікно CPU.
Вікно CPU містить текст налагоджують програму, вміст регістрів, вершини стека і областей даних, що використовуються програмою.
Вікно CPU розділене на кілька частин - в цьому випадку для пересування курсору (виділеної кольором рядки) між частинами цього вікна за допомогою клавіші [TAB] або [SHIFT + TAB].
ріс.3.Від вікна CPU.
Вікно CPU розділене на кілька частин - в цьому випадку для пересування курсору (виділеної кольором рядки) між частинами цього вікна за допомогою клавіші [TAB] або [SHIFT + TAB].
Інформаційні вікна, на відміну від робітників, просто містять деякі повідомлення, наприклад, повідомлення про помилки і так далі. Для того, щоб прибрати (закрити) інформаційне вікно, використовуються клавіші [ENTER] та [ESC] (натискання на будь-яку з них призведе до зникнення вікна з екрану). Для закриття робочих вікон використовується комбінація клавіш [Alt-F3].
Крім того, працюючи з TD. ви можете натисканням клавіш [Alt-F5] подивитися, що знаходиться "за" його екраном, тобто побачити екран MSDOS. При натисканні цієї комбінації екран TD зникає і стають видимими повідомлення, що виводяться DOS. прикладними програмами і налагоджувати Вами модулем. Натискання на будь-яку клавішу поверне Вас в TD.
П.3.Загрузка програми для налагодження.
Увійдіть в меню FILE і виберіть в ньому пункт OPEN (натисніть [F10]; за допомогою клавіш курсору вліво / вправо виберіть пункт File; натисніть [ENTER] - на екрані з'явиться підменю, що містить команди; виберіть в ньому пункт OPEN. І натисніть [ENTER ]). На екрані з'явиться вікно завантаження файлу, що містить у верхній частині рядок для введення імені файлу. Наберіть в ній ім'я Вашого файлу, наприклад: C: \ WORK \ ASM \ PROGRAM.EXE, і натисніть [ENTER].
ріс.4.Окно завантаження файлу.
Якщо ви невірно ввели ім'я файлу і TD не зміг знайти його на диску, у верхній лівій частині екрана з'явиться вікно з попередженням "Program not found" - програма не знайдена. Натисніть [ENTER], щоб прибрати його і повторіть все з самого початку. Якщо завантаження пройшла успішно, ви повернетеся до вікна CPU. Перед цим в лівому верхньому кутку екрану може з'явитися вікно з повідомленням "Program has no symbol table" - його можна ігнорувати; натисніть [ENTER], щоб воно зникло. Після завантаження в лівій верхній частині вікна CPU буде міститися асемблерний текст програми, перша команда якої буде виділена кольором.
У правій верхній частині міститься вміст регістрів МП; окремо виділено вміст регістра прапорів. У правій нижній частині розташовано вікно поточного вмісту стека, починаючи з його вершини. І, нарешті, зліва внизу ви побачите уміст деякої області ОЗУ (dump), зазвичай після завантаження програми в TD - вміст PSP.
Для переміщення курсору між частинами вікна CPU слід використовувати клавішу [TAB] (за годинниковою стрілкою) або комбінацію [Shift-TAB] (проти годинникової стрілки).
рис.5. Вид вікна CPU.
П.5.Запуск програми на виконання.
Після завантаження програми її можна починати налагоджувати. Найпростішою операцією налагодження є запуск програми на виконання. Це здійснюється натисканням клавіші [F9].
Після виконання програми на екрані з'явиться вікно з повідомленням "Terminated. Error code N.", де N - код помилки ДОС, з яким завершилася Ваша програма. Натисніть [ENTER], щоб прибрати його.
Не забудьте, що запуск програми на виконання - небезпечна операція: якщо ваша програма містить помилки, то, швидше за все, це призведе до "зависання" машини. Тому, перш ніж запускати програму, не полінуйтеся виконати її трасування.
рис.6. Вид вікна CPU після запуск програми на виконання.Трасуванням називають процес покрокового виконання програми. У TurboDebugger це здійснюється за допомогою клавіш [F7] і [F8]. При натисканні будь-якої з них відбувається виконання поточної (поміченої символом трикутника в вікні CPU) ассемблерной команди, після чого відображається нове вміст регістрів, областей даних, вершини стека і TD повертається до очікування натискання клавіші. А ресурси, які беруть участь у виконанні команди, виділяються кольором.
рис.7. Вид вікна CPU при покроковому виконанні програми.
Відмінність [F7] від [F8] полягає в тому, що при використанні [F8] команда CALL виконується як один крок (власне асемблерна підпрограма, що викликається по цій команді, чи не трасується), а виконання CALL по клавіші [F7] призводить до трасуванні самої підпрограми.
Завершити трасування, не доходячи до кінця програми, можна натисканням комбінації клавіш [Ctrl-F2].
П.7.Ісполненіе частини програми.
Якщо Ви хочете почати трасування програми, наприклад, з її середини, то зовсім не обов'язково виконувати її по кроках, послідовними натисканнями [F7] або [F8], до цього місця. Досить просто встановити курсор на той рядок, з якої необхідно почати трасування, і натиснути [F4]. Програма запуститься на виконання і виконається до тієї команди, на якій був встановлений курсор. Далі можна виконувати звичайну трасування. Клавіша [F4] може бути корисна також у багатьох інших ситуаціях. Наприклад, коли Вам в процесі трасування необхідно запустити деякий блок програми, що не трассіруя його, встановіть курсор на останню інструкцію цього блоку і натисніть [F4]. Програма буде виконуватися від останньої виконаної команди до команди, на яку встановлений курсор, а потім TD знову повернеться в режим трасування.
П.8.Редактірованіе вмісту регістрів.
В процесі трасування Ви можете не тільки переглядати, але і змінювати вміст регістрів мікропроцесора. Внесені Вами зміни будуть дійсні тільки протягом одного прогону програми. Для того, щоб ввести значення в певний регістр, виконайте наступні кроки:
рис.8. Курсор вказує на регістр AX, виділений для зміни його вмісту.
Перебуваючи в лівій верхній частині, вікна CPU натисніть клавішу [TAB] Курсор переміститься вправо, в ту частину вікна, де ви побачите уміст регістрів.
Використовуючи клавіші курсора вгору / вниз, виберіть той регістр, вміст якого ви хочете змінити.
Натисніть [Ctrl + C] або [ПРОБІЛ]. На екрані з'явиться вікно введення значення в регістр.
рис.9. Вікно введення значення в регістр.
У верхньому рядку вікна, що з'явилося введіть нове значення. Не забувайте про правила запису числових констант в Асемблері: h-число повинні закінчуватися символом "h" та, якщо вони починаються з літери (A, B.), В першому розряді числа повинен стояти 0. Після введення числа натисніть [ENTER].
Якщо ви змінюєте вміст регістрів вже не в перший раз, то в другій, третій і наступних рядках вікна введення знаходитимуться попередні введені Вами значення. Замість того, щоб вводити старе значення заново, можна, використовуючи клавіші курсора, вибрати одне з них і натиснути [ENTER]. Регістру присвоїти нове значення - це буде відображено на екрані. Якщо Ви введете число неправильно, то з'явиться вікно "Symbol not found", яке повідомить Вам про допущену помилку. Натисніть [ENTER], щоб воно зникло і повторіть все, починаючи з пункту 2.
Після введення всіх необхідних значень в регістри натисніть [Shift + TAB] для повернення назад до тексту програми.
рис.10. Переміщення курсора в подокно даних.
Де: XX - шістнадцяткове значення осередки пам'яті;
A - ASCII -представлення вмісту відповідної комірки.
2.) Натисніть [Ctrl + C]. У вікні "Enter new data bytes" введіть один або кілька байт, розділених пробілами, наприклад:
і натисніть [ENTER].
3.) Якщо введення був проведений правильно, вікно зникне, і нові значення будуть побайтно записані в комірки ОЗУ, починаючи з того байта, на який було встановлено курсор. Якщо Ви помилилися, з'явитися вікно з повідомленням "Syntax error" - синтаксична помилка. Швидше за все ви невірно записали одне з чисел, Вам доведеться повторити все з початку.
Крім перерахованих вище функцій TD надає можливість елементарного редагування програм в процесі налагодження і записи отриманого коду в пам'ять на один прогін програми або до повторної її завантаження в TD.
Для того, щоб ввести в пам'ять TD потрібну команду процесора, виконайте наступні дії:
1.) Перебуваючи в подокне відображення програми, натисніть [Ctrl + A]. На екрані з'явиться вікно "Enter instruction to assemble".
ріс.11.Окно для введення ассемблерной інструкції.
2.) Введіть в першому рядку цього вікна асемблерну інструкцію. Наприклад, MOV AX, 0123h і натисніть [ENTER]. (Рис.)
ріс.12.Переход на зазначену асемблерну інструкцію.
Якщо при введенні інструкції була допущена помилка, TD не зможе перевести її в відповідний код команди. У цьому випадку буде видано вікно з повідомленням про помилку, наприклад, "Invalid instruction mnemonic" - невірна інструкція. Спробуйте ще раз.
Не забувайте, що при зміні таким чином існуючих в програмі команд, нова команда може виявитися довшим старої. В результаті подальша команда (або кілька команд) будуть зіпсовані. Тому при розробці програм, що підлягають налагодженню, не забувайте вставляти в програму кілька інструкцій NOP. щоб згодом знову введені команди займали саме їх місце в пам'яті.
В Turbo Debugger є цікава функція, яка дозволяє дізнатися інформацію не тільки про програму та її статус, а й інформацію про систему.
Щоб активізувати цю функцію, необхідно зайти в меню File, далі Get info.
ріс.13.Вивод на екран інформації про систему.
рис.15. Висновок на екран додаткової інформації натисканням клавіші [F1].