Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_лаб_ПЗСУ.doc
Скачиваний:
0
Добавлен:
17.04.2019
Размер:
524.8 Кб
Скачать

Додаток а

Шаблон програми, яка написана на мові асемблер (exe-формат)

; Программа

; после ";" находится коментарий

SEG_code segment byte public ;'CODE'

assume cs:seg_code,ds:seg_code,es:seg_code

start: jmp begin

;-------- Здесь находятся общие данные (переменные) ----------------------------

; Например

soob4 db 30

Timer_ml dw 0

;-------- Конец данных----------------------------

begin: push cs

pop ds

; Непосредственно прграмма

; Конец программы

mov ah,4Ch ;

int 21h

SEG_code ends

end start

Додаток б Короткий опис команд отладчика

Отладчики призначені для вирішення широкого кола задач. До них відносяться, наприклад, наступні задачі:

  • Вивчення поточного вмісту оперативної пам'яті;

  • Редагування окремих секторів на носіях;

  • Дизасемблювання СОМ- і ЕХЕ- файлів;

  • Розробка і налагодження власних програм мовою асемблеру (точніше, на мнемомокодах);

  • Вивчення роботи програм і їхня модифікація;

  • Тестування периферійного устаткування для роботи з портами вводу/виводу безпоседньо (у діалоговому режимі);

  • Вивчення системи команд процесора;

  • Вивчення програм переривань BIOS і операційної системи.

Отладчики мають обовязковий стандартний набір функцій, реалізований різними способами в залежності від виробника програмного забезпечення.

Розглянемо безпосередньо деякі команди отладчика DEBUG фірми Microsoft, який входить до складу операційних систем цієї фірми.

А – команда асеблювання.

Ця команда дозволяє вводити програми з використанням мнемокода команд процесора в оперативну пам'ять. Уведення команди отладчика:

А<число> (Enter)

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

Наприклад:

DB 1,2,3, "EXAMPLE"

DW 1000,2000, "FFFF"

Приклад 1:

Спочатку наберіть A100. Потім уведіть програму

SUB CX,CX

LOOP 102

LOOP 104

INT 20

Вихід з режиму введення програми здійснюється натисканням клавіші (Enter) після переходу до порожнього рядка слідом за останньою командою програми.

У даному прикладі показаний метод організації затримки шляхом "прокручування"двох порожніх циклів.А запустити цю програму можна,набравши команду

G=100 (Enter)

Приклад 2:

Тут наведена програма забивання екрана символом "!"

A 200 (Enter)

потім треба ввести програму

MOV CX,1000

MOV AX,0E21

INT 10

LOOP 203

INT 20

Наприкінці програм у цих прикладах коштує команда INT 20, що забезпечує повернення керування назад на монітор отладчика.Запуск цієї програми здійснюється по команді

G=200 (Enter)

D - дамп оперативної пам'яті.

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

У рядку відображається 16 байт. При цьому праворуч указується повна адреса самого лівого байта. Таким чином, в одному рядку приводиться шыстнадцятирычный дамп, а також ASCII-дамп шістнадцяти байт оперативної пам'яті.

Якщо команда D дана без параметрів, то всього на екрані відображається 128 байт(80H) у восьми рядках. У кожнім рядку містиця знак "-", що розділяє 16 байт навпіл: між восьмим і дев'ятим байтами.

Приклад 1.

Для того, щоб переглянути покажчики вектора перших тридцяти двох переривань (20H), треба ввести команду

D0:0,7F ENTER

Інший варіант без указівки діапазону:

D0:0 ENTER

Перші чотири байти дають вектор переривання INT0, наступні чотири INT1 і т.д.

Приклад 2

Перегляд наступний шістнадцяти байт із ПЗУ.

D FFF0:0L10 (Enter)

Приклад 3

Перегляд області оперативної пам'яті, який використовуваної BIOS:

D 40:0L1000 (Enter)

G - команда запуску програми.

Ця команда призначена для запуску програми на виконання. При цьому, якщо тієї області пам'яті, де зберігаються дані, передається управління як програмі, комп'ютер "зависає", і потрібно здійснити його повторний запуск. У випадку, коли в програмі є серйозні помилки (наприклад, відсутній оператор INT 20 − повернення на командний рівень отладчика), спроба виконати її за допомогою оператора G також приводить до зависання комп'ютера.

Цей оператор звичайно використовується в одній з наступних чотирьох форм:

а) G ENTER

Виконання цього оператора зводиться до передачі управління адресі CS:IP. Значення CS і IP можна довідатися, набравши команду R ENTER дампа всіх регістрів процесора;

б) G = <адреса> ENTER

При цьому виробляється запуск програми по зазначеній адресі.

Наприклад, оператор

G = FFFF:0 ENTER

приводить до запуску процедури POST;

в) G<адреса> ENTER

У цьому випадку програма запускається з адреси CS:IP і при досягненні оператора з зазначеною адресою здійснюється BREAK - зупинка виконання програми. Розповсюдженою помилкою початківців є пропуск знака = при використанні команди G. У цьому випадку зазначена адреса сприймається як адреса зупинки, і якщо CS:IP указував, наприклад, на область даних, то комп'ютер "зависне".

2) G=<адреса> <інший_адреса> ( Enter)

У цьому випадку відбувається запуск програми з зазначеного послу знака = адреси й у випадку досягнення програмою команди з величиною адреси, зазначеного другим (інша адреса), відбувається зупинка.

Приклад:

Спочатку введемо програму ( за допомогою команди А 100 ):

MOV BX, 10

MOV WO[BX+110], 1234

DEC BX; тут поставити контрольну точку

;

DEC BX

JNE 103

INT 20

Запустимо програму командою G=100 109 (Enter)

Програма, дійшовши до адреси 109, зупинилася і дала повний дамп регістрів.

O - команда виводу даних у порт.

Ця команда дозволяє вивести зазначений байт у порт із заданою адресою.

Вона корисна для тестування роботи периферійних пристроїв і корпусів на системній платі в діалоговому режимі.

Синтаксис команди:

O<адреса_порту><вершина>

Тут замість "адреси порту" використовується адреса необхідного порту в діапазоні 0-FFFF, а замість "величина" - значення, що потім завантажується в порт. Якщо порт шістнадцяти бітний, то "величина" може бути чотирьохрозрядним шістнадцятирічним числом, що завантажується в порт.

Приклад 1.

Мотор дисководу A: для флоппи-дисков можна включити наступною командою:

O 3F2 10 ENTER

Q - команда виходу з отладчику.

Команда Q приводить до виходу з отладчику на наступний верхній програмний рівень. При цьому робочі файли не зберігаються.

R - команда дампу/корекції регістрів.

Ця команда дозволяє переглядати уміст усіх регістрів відразу, а також прапори, і переглядати значення окремих регістрів і регістра прапорів з можливістю їхньої зміни.

Команда:

R ENTER

дає роздруківку всіх регістрів, а також команди, на яку вказує CS:IP.

Команда:

R<ім'я_регістра> ENTER

дає роздруківку вмісту зазначеного регістра і потім друкує двокрапка на наступному рядку. Після цього користувач може написати клавішу ENTER і вийти назад на монітор команд отладчику, або задати нове значення регістра перед натисканням клавіші ENTER. В останньому випадку старе значення регістра заміниться на нове. Перелічимо можливі імена регістрів:

AX,BX,CX,DX,SP,DI,DS,ES,SS,CS,IP,F(регістр прапорів).

При використанні команди:

RF ENTER

треба враховувати, що кодування значень прапорів вироблятися досить специфічним образом. Нижче приводитися таблиця кодування, де символьна пара ліворуч відповідає значенню O відповідного прапора, а праворуч - значенню, рівному 1 (прапор піднятий):

прапор переносу NC CY

прапор паритету PO PI

прапор додаткового переносу NA AC

прапор нуля-результату NZ ZR

прапор знака PL NG

прапор маскування переривання DI EI

прапор напрямку UP DN

прапор переповнення NV OV

При виконанні команди:

R F ENTER

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

T - команда трасування.

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

Команда Т Еntеr

робить трасування однієї поточної інструкції ,на яку вказує CS : IP,c відповідною зміною IP

Команда Т <число> Enter

робить послідовне трасування декількох інструкцій, загальне число яких задається в команді:

T = <адреса> ENTER

трасує одну інструкцію з зазначеної адреси:

Загальний вид команди T наступний:

T = <адреса> <число_інструкцій> ENTER

Приклад 1.

Команда T = FFFF:0 ENTER робить трасування першої інструкції, що виконується, при первісному запуску комп'ютера.

Приклад 2.

Уведемо програму, починаючи з адреси CS:100.

MOV AX , 123

MOV BX , 456

MUL BX

INT 20

Потім , виконавши команду отладчику Т = 100 3 ENTER ми одержимо представлення про виконання цієї програми множення двох чисел.

U - команда дизасемблювання.

Ця команда дозволяє дизасемблювати .COM і .EXE програми , завантажені в робочу область отладчика.

Загальний синтаксис:

U - <початковий_адреса> <довжина> ENTER

або

U - <початковий_адреса> <кінцевий_адреса> ENTER

Команда

U ENTER

викликає дизасемблювання 32 байт, починаючи з байта, на який указує CS:IP з виводом результуючого листингу на дисплей.

Якщо при запуску отладчика переадрессовать вивід у файл, то можна одержати листинг дизасембльованої програми. При цьому команду U і команду Q (вихід з отладчика) доведеться набирати "наосліп" без його печатки на дисплеї.

Приклад:

Дизассемблювання BIOSa комп'ютера PC / AT можна (у першому наближенні) зробити по команді

U F000 : E000 L2000 ENTER

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