- •Методичні рекомендації і контрольні завдання до виконання лабораторних робіт
- •Лабораторна робота № 1
- •1. Теоретичні відомості
- •2. Порядок виконання лабораторної роботи.
- •3. Контрольні питання
- •Лабораторна робота №2
- •1. Теоретичні відомості
- •2. Порядок виконання лабораторної роботи.
- •3. Контрольні питання
- •Лабораторна робота № 3 Системні функції для роботи з пристроями вводу інформації в системах управління
- •1. Теоретичні відомості
- •1.1. Апаратна реалізація пристроїв введення інформації
- •1.2. Введення даних із клавіатури
- •1.3. Системна підтримка клавіатури
- •1.4. Контролер клавіатури
- •Призначення регістрів контролера клавіатури
- •2. Порядок виконання лабораторної роботи.
- •3. Контрольні питання
- •Лабораторна робота № 4
- •1. Теоретичні відомості
- •Значения бітів порта 61h
- •2. Порядок виконання лабораторної роботи.
- •3. Контрольні питання
- •Перелік літератури
- •Додаток а
- •Додаток б Короткий опис команд отладчика
- •Додаток в Використання лічильника тактів для визначення тактової частоти процесора [5]
- •Додаток г Засоби виводу на екран
- •Додаток з введення даних із клавіатури
- •Додаток е інтерфейс клавіатури
- •Додаток і Використання убудованого динамику
Додаток а
Шаблон програми, яка написана на мові асемблер (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. Ця проблема не знімається іншими отладчиками, що також мають потребу в знанні того, яка частина файлу програми відведена під дані.