Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра електронних
обчислювальних машин
Звіт
про виконання лабораторної роботи № 2
з курсу „ Системне програмування ”
Тема:
Технологія виконання системних робіт на ІBM PC.
Львів – 2004
Мета роботи: оволодіння навичками роботи із системною програмою DEBUG (наладчик).
Короткі теоретичні відомості
РОБОТА ІЗ ПРОГРАМОЮ DEBUG
Програма DEBUG - це наладчик програм у системі MS-DOS. Debug можна викликати за допомогою наступної команди MS-DOS: DEBUG[<специф._файла] [<список_аргум.>]
Якщо вказане ім'я файлу, то можна задавати ще й список параметрів запуску даної програми. Команди debug складаються з літери та одного чи декількох параметрів.
Команда debug | функція
A [<address>] асемблювання
С <range> <address> порівняння
D [<range>] вивід дампа на екран
E <address> [<lіst>] ввід байтів з клавіатури
F <range> <lіst> наповнення (зони в пам'яті)
G [=<address> [<address>...]] запуск програми
H <value> <value> hex-арифметика
І <value> ввід байта з порту
L [<address>[<drіve:> <record> <record>]] завантаження
M <range> <address> пересилання блока пам'яті
N <fіlename>[<fіlename>] задати ім'я [файла]
O <value> <byte> вивід байта до порту
Q вихід до MS-DOS
R <regіster-name> вміст регістра
S <range> <lіst> пошук
T [=address>][<value>] трасування
U [<range>] деасемблювання
W [<address> [<drіve:> <record> <record>] запис
Якщо у команді debug присутня синтаксична помилка, він виводить помилковий командний рядок та вказує на помилку символом "^" та словом error. Під час вводу команд дозволені довільні сполучення символів верхнього та нижнього регістрів.
Параметри у команді можуть бути розмежовані комами або пропусками.
Опис деяких команд DEBUG.
1. Команда ASSEMBLE активує режим вводу команд асемблера та переводу їх в машинні коди. Встановлення початкової адреси здійснюється за допомогою команди: A nnnn <Enter>,
де nnnn - адреса зміщення в кодовому сегменті, з якої буде здійснюватись ввід команд.
Завершити ввід команд можна двічі натиснувши клавішу <Enter>.
2. Команда UNASSEMBLE деасемблює вказаний діапазон байтів з вказівкою адрес та значень байтів. Напр: U04BA:0100 L10 debug деасемблює 16 байтів, починаючи від адреси 04BA:0100.
3. Команда TRACE має наступний формат: T[=адреса][значення]
Якщо наведено значення параметра [=адреса], буде виконана команда, що розташована за вказаною адресою. Якщо наведений параметр <значення, команда трасування Т буде виконана відповідне число разів. Наприклад: T=011a 10
debug виконає 16(10h) інструкцій, починаючи від адреси 011A у поточному сегменті.
4. Команда GO має наступний формат: G [=адреса][адреси]
Здійснює/поновлює виконання програми з адреси вказаної в IP. Якщо наведено значення параметра [=адреса], будуть виконані всі програмні інструкції, що знаходяться в діапазоні адрес зміщень між поточним значенням IP та [=адреса], після чого виконання буде призупинено.
5. Команда DUMP виводить на екран вміст вказаної зони пам'яті. Наприклад: dcs:100 110
debug друкує дамп у наступному форматі: 04BA:0100 42 45 52 54 41 ... 4E 44 TOM SAWYER
6. Команда REGISTERS виводить на екран вміст регістрів та ознак. В якості необов'язкового параметра можна вказати який-небудь окремий регістр, значення якого необхідно вивести на екран. По замовчуванню команда виводить значення всіх регістрів.
Регістр прапорів:
Назва
Встан./Скинуто
Значення
O
OV / NV
Переповнення старшого біта при арифметичних командах
D
DN / UP
Напрям пересилання / порівняння для стрічкових даних
I
EІ / DІ
Дозвіл на переривання
S
NG / PL
Результуючий знак після арифметичних операцій (0 - "+" / 1 - "-")
Z
ZR / NZ
Результат арифметичних операцій та операцій порівн. (0-не нуль / 1-нуль)
A
AC / NA
Використовується для спеціальних арифметичних операцій
P
PE / PO
Контроль парності молодших 8-бітових даних (0 - парне / 1 - непарне)
C
CY / NC
Перенос із старшого біта після арифметичних операцій, а також останній біт при звичайних або циклічних зсувах
Завдання на лабораторну роботу
Варіант 9.
0B1D:0100 B101 MOV CL,01
0B1D:0102 B80300 MOV AX,0003
0B1D:0105 D3E8 SHR AX,CL
0B1D:0107 A800 TEST AL,00
0B1D:0109 D0C8 ROR AL,1
Запускаємо наладчик: C:\>debug
За допомогою команди а 100 вводимо команди. Щоб перевірити внесені дані використовуємо команду u 100. Щоб переглянути вміст регістрів використовуємо команду r. Для покрокового виконання програми вводимо команду t для кожного кроку.
Вміст регістрів та наступна команда:
AX=0000 CX=0000 IP=0100 NV UP EI PL NZ NA PO NC
0B1D:0100 B101 MOV CL,01
MOV CL,01 – записує в молодший байт регістра CX значення 01;
AX=0000 CX=0001 IP=0102 NV UP EI PL NZ NA PO NC
0B1D:0102 B80300 MOV AX,0003
MOV AX,03 – записує в регістр AX значення 0003;
AX=0003 CX=0001 IP=0105 NV UP EI PL NZ NA PO NC
0B1D:0105 D3E8 SHR AX,CL
SHR AX,CL – зсовує вміст регістра AX на кількість розрядів, що зберігається в CL, тобто на 1, оскільки зсунутий біт був одиницею, то встановлюється прапорець переносу С ( CY;
AX=0001 CX=0001 IP=0107 NV UP EI PL NZ AC PO CY
0B1D:0107 A800 TEST AL,00
TEST AL,00 – виконує логічну операцію І над своїми операндами, але змінює тільки значення прапорців, зокрема встановлює прапорець Z ( ZR – результат виконаної операції дорівнює нулю;
AX=0001 CX=0001 IP=0109 NV UP EI PL ZR NA PE NC
0B1D:0109 D0C8 ROR AL,1
ROR AL,01 – циклічно зсовує вміст AL на 1 ( 0000 0001 (01h) ( 1000 0000 (80h) ), оскільки зсунутий біт був одиницею, то встановлюється прапорець переносу С ( CY;
AX=0080 CX=0001 IP=010B OV UP EI PL ZR NA PE CY
0B1D:010B 90 NOP
Висновок: Виконуючи дану лабораторну роботу, я оволодів навичками роботи із системною програмою DEBUG (наладчик).