русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Turbo Debugger як учитель


Дата добавления: 2015-09-15; просмотров: 999; Нарушение авторских прав


Щоб показати, як використовувати Turbo Debugger при вивченні мови асемблера, досліджуємо програму 2.1 під керуванням відладчика.

 

%TITLE "Посилання на прінтер команди прогону сторінки"

IDEAL

MODEL small

STACK 256

 

ASCIIcr EQU 13 ;ASCII-символ повернення каретки

ASCIIff EQU 12 ;ASCII-код прогону сторінки

 

CODESEG

 

Start:

mov ax, @data ;Встановити в DS адрес

mov ds, ax ;сегменту даних

mov dl, ASCIIcr ;Переслати код повернення каретки в dl

mov ah, 05h ;Функція DOS : Вивід на принтер

int 21h ;Виклик DOS - повернення каретки

mov dl, ASCIIff ;Переслати код прогону сторінки в dl

mov ah, 05h ;Функция DOS : Вивід на принтер

int 21h ;Виклик DOS - прогон сторінки

Exit:

mov ax, 04C00h ;Функція DOS : вихід з програми

int 21h ;Виклик DOS. Зупинка програми

END Start ;Кінець програми/точка входу

Програма 2.1 FF.ASM

Спочатку скопіюйте FF.ASM у LF.ASM і завантажите цю копію у ваш текстовий редактор. Потім змініть три рядки в такий спосіб:

1: %TITLE "Посилка на принтер команди прогону рядка"

11: ASCIIif EQU 10 ;АSCII-код, що керує прогоном рядка

23: mov dl, ASCIIif ; пересилання в dl коду прогону рядка

Ця модифікації перетворюють програму прогону сторінки в програму прогону рядка, що за один раз просуває ваш принтер на один рядок. Це не настільки корисна програма, щоб зберігати її як утиліту, однак ці зміни будуть заощаджувати папір при її багаторазовому виконанні.

Зберігши LF.ASM, асемблюйте і скомпонуйте програму з опціями, що додають віладжувальну інформацію в OBJ- і ЕХЕ-файли. У результаті Turbo Debugger одержить інформацію про програмні символи, розташування змінних, організації сегментів і т.д. Для підготовки програми до налагодження введіть наступні команди:



tasm/zi If tlink/v If

Без цих опцій Turbo Debugger все рівно завантажить вашу програму, однак буде показувати тільки дизасембльовані машинні коди. З опціями командного рядка відладчик може показувати мітки, структури змінних, рядки вихідної програми й іншу інформацію. Надалі, при розгляді прикладів програм, використовуйте ці опції при асемблюванні і компонуванні всякий раз, коли рекомендовано досліджувати програму за допомогою відладчика.

Зауваження:

Використання опцій /zi і /v може значно збільшувати розміри OBJ- і ЕХЕ-файлів на диску; По закінченні налагодження знову виконаєте асемблювання і компонування, але уже без цих опцій, для додання дисковим файлам нормальних розмірів.

 

Після асемблювання і компонування з опціями /zi і /v переконаєтеся, що на диску знаходяться файли LF.ASM і LF.EXE, потім завантажите програму в відладчик за допомогою команди

td Lf

Пам’ятайте: якщо ви установили драйвер пристрою TDH386.SYS і ваша система працює на процесорі 80386, тоді ви можете використовувати версію Turbo Debugger для віртуальної пам'яті, викликавши его командою

td386 Lf

Через якийсь час ви побачите екран Turbo Debugger з вихідним текстом програми. (Якщо Turbo Debugger не знайде файл із розширенням ASM, він не зможе показати вікно з вихідним текстом програми.) Перегляньте програму, використовуючи клавіші керування курсором, пересуваючи його нагору і вниз по тексту. Крім того, для пересування усередині вікна з вихідним текстом можна використовувати клавіші <PgUp>, <PgDn>, <Home>, <End>. Вам дозволено только переглядати цей текст, для виправлення виявлених помилок необхідно вийти з Turbo Debugger і скористатися текстовим редактором.

Зауваження:

Для одержання додаткової довідкової інформації натисніть <F1 > (клавішу довідки) і прочитайте уміст вікна, що з'явиться на екрані. При використанні Turbo Debugger ви можете в будь-який момент за допомогою натискання <F1> одержати довідку про біжуче вікно.

Для одержання іншого представлення програми послідовно натисніть комбінацію клавіш <Alt+V+C>, що вибирає команду View=>CPU=> Window (перегляд вікна центрального процесора). Натисніть <F5> для розкриття вікна на весь екран. У CPU-вікні міститься в скороченому виді вихідний текст вашої програми, дійсні машинні коди, що знаходяться в пам'яті, значення регістрів і прапорців, а також дамп байтів пам'яті. Крім чисто зовнішніх деталей, між цим і попереднім вікном існує принципове розходження. У вікні вихідного коду, також називаному вікном перегляду модуля, ви бачите копію тексту програми. У CPU-вікні ви знаходитеся безпосередньо в пам'яті, бачите дійсні значення розташованих там байтів. CPU-вікно забезпечує вам фантастичну подорож у стилі новел Айзека Азимова, зменшуючи і відправляючи вас у пам'ять комп'ютера. Природно, оперуючи байтами пам'яті, ви повинні бути дуже уважні, щоб не "убити пацієнта". Turbo Debugger допомагає вам уникнути подібних катастроф, однак неакуратні дії все рівно можуть привести до неприємностей.

Для пересування виділеного прямокутного курсору по різних командах використовуйте клавіші <Up> і <Down>. Інструкції, що належать вашим програмам, відзначаються ромбами. Помітимо, що, на відміну від вікна вихідного коду, тут крім відзначених рядків можна побачити й інші області. Для пересування курсору з однієї секції вікна в іншу натискайте клавішу <Таb>. Переходячи між секціями, можна змінювати значення регістрів і модифікувати байти пам'яті. (У даний момент не вносьте ніяких змін.)

Натискайте клавішу <Таb> доти, поки прямокутний курсор знову не проявиться в більшій секції. Для зміни виду цього вікна натисніть <Alt+F10> чи виберіть команду Mixed (для цього натисніть клавішу <М> чи перемістіть курсор на команду Mixed і натисніть <Enter>). Цю же команду можна вибрати, просто натиснувши <Ctrl+M>. Вона має три установки: No, Yes і Both, що дозволяють змінювати, тип перегляду вашої програми:

No показує дизасембльовані машинні коди, аналогічні командам мови асемблера. Це зручно для перегляду коду у випадку, якщо у вас немає відповідного ASM-файлу. Багато програмістів воліють використовувати це представлення, тому що в порівнянні з іншими воно найбільше практично.

Yes показує вихідний текст вашої програми разом з дизасембльованим машинним кодом. Використовується для відображення рядків у мовах програмування високого рівня разом з відповідним їм відкомпільованим машинним кодом. Як правило, ми не користаємося цією установкою при перегляді асемблерних програм.

Both установлюється за замовчуванням і, можливо, є найкращим способом перегляду в CPU-вікні, показуючи в лівому стовпчику байти машинного коду разом з їхніми рядками вихідного тексту, що створюють. Порожні рядки при цьому не відображаються.

Turbo Debugger, крім різних способів перегляду" вашої програми і пам'яті, може по-різному виконувати ваш код. Розглянемо це на прикладі. Включіть принтер і виконайте наступну послідовність дій для виконання програми під керуванням Turbo Debugger.

1. Для запуску програми натисніть <F9>, При цьому лист паперу в принтері повинний протягнуться на один рядок. Виконаєте цю команду і досліджуйте стан пам'яті, регістрів і прапорів по завершенні програми.

2. Після виконання програми натисніть <Ctrl+F2> для повернення в початковий стан. При цьому програма знову завантажиться з диска і Turbo Debugger відновить свої вихідні опції. (Якщо ви не зробите цього, а знову натиснете <F9>, те побачите повідомлення з питанням про необхідність перезавантаження програми.)

3. Двічі натисніть <F6> для повернення у вікно вихідного коду.

4. Натисніть <Alt+V+R> для вибору команди перегляду регістрів. При необхідності натисніть <Ctrl+F5> (переміщення поточного вікна) і скористайтеся клавішами зі стрілами для переміщення цього вікна вправо або виберіть і перетягніть його мишкою, відкриваючи при цьому команди програми. Натисніть <Esc> для фіксації нового положення вікна. Вікно регістрів показує значення регістрів і прапорців процесора вашого комп'ютера. Воно надзвичайно корисно для дослідження результатів виконання різних машинних команд, більшість з який змінюють значення одного чи декількох регістрів.

5. Маленька стрілка ліворуч від першої команди програми mov ax, @data у вікні вихідного тексту показує, что вона є наступною командою, що виконується. Для виконання цієї команди натисніть <F8>. Стрілка перейде на наступну команду і зміниться значення регістра ах у вікні регістрів. Ця команда "занесла" значення в регістр – назвемо її успішною. Пересування по окремих командах за допомогою клавіші <F8> дозволяє вам виконувати програму поступово, виконуючи за одне натискання одну команду, і зупинятися для перегляду результатів роботи кожної команди.

6. 6. Знову натисніть <F8> для виконання наступної команди – mov ds, ax. Зверніть увагу на вікно регістрів – ви повинні помітити, що значення в регістрі ds стало таким же, як і значення в регістрі ах. Команда mov перемістила значення ах у ds. (Зараз не потрібно задумуватися над тим, для чого це робиться.)

7. Понатискайте <F6>, поки курсор знову не з'явиться у вікні вихідного коду, що при цьому закриє вікно регістрів. (<F6> дозволяє переключатися між усіма відкритими вікнами, але ви можете також натискати комбінацію <Alt+#>, де # — номер вікна від 1 до 9.)

8. 8. Пересуньте курсор униз на рядок mov dl, ASCIIlf – при цьому три команди, розташовані вище, будуть відзначені стрілками. Натисніть <F4> і програма виконається від поточної команди до курсору. Використовуйте цей прийом для виконання невеликих фрагментів програми, якщо немає необхідності зупинятися після кожної команди.

9. Декілька разів натисніть <F6>, поки знову не з'явиться вікно регістрів. Потім двічі натисніть. <F8>, виконавши дві наступні команди. При цьому спостерігайте за значенням регістра ds – воно повиннео частково змінитися.

10. Тепер стрілка вказує на команду Int 21h (рядок 25 у програмі 2.1). Ця команда викликає функцію DOS, активізуючи одну з багатьох можливостей операційної системи, у нашому випадку, посилаючи символ на принтер. Для виконання команди натисніть <F8>. Якщо принтер включений, лист паперу в ньому повинний просунутися на один рядок.

11. Немає необхідності виконувати цю програму далі, тому що команди, що залишилися, просто повертають керування DOS чи, у нашому випадку, – Turbo Debugger. Натисніть <Alt+X> для завершення роботи з відладчиком.

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

 



<== предыдущая лекция | следующая лекция ==>
Налагодження на процесорах 80386 і вище | КУРСОВАЯ РАБОТА


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.