2.2. Функції переривання INT 21h MS DOS, що використані при роботі програм

 

2.2.1. Функції роботи із DTA

Середовище MS DOS пропонує набір функцій переривання INT 21h, що дозволяють працювати із DTA – встановити його адресу (1Ah), дати поточний DTA (2Fh), заповнити DTA при знаходженні першого файлу (4Eh), заповнити DTA при знаходженні наступного файлу (4Fh). Розглянемо кожну з цих функцій окремо:

1Ah функція INT 21h [6]

Вхід: AH 1Ah

DS:DX адреса для DTA

Вихід: не має

Дана функція встановлює адресу для DTA. В регістрову пару DS:DX заноситься, відповідно, сегмент і зміщення буфера розміром >43 байтів, в який буде зберігатись DTA. Якщо адреса DTA змінюється вашою програмою, бажано зберегти попередню адресу DTA (за допомогою функції 2Fh INT 21h) і відновити її після завершення програми.

Приклад:

mov ah, 1Ah ; в ah номер функції

mov dx, offset buffer ; в dx поміщується зміщення буфера,

; сегмент лишається незмінний

int 21h

В даному прикладі перевизначається адреса для буфера DTA.

2Fh функція INT 21h [6]

Вхід: AH 2Fh

Вихід: ES:BS адреса початку поточної DTA.

Функція повертає адресу початку області вводу/виводу DTA. В AH заноситься номер функції; в регістровій парі ES:BS повертається адреса початку DTA.

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

Приклад:

push es ; збереження у стеку регістрів es, bx, що зміняться

push bx

mov ah, 2Fh ;в ах номер функції

int 21h

mov [DTAs], es ; збереження адреси DTA

mov [DTAo], bx

pop bx ; відновлення попередніх значень регістрів bx і es

pop es ; із стеку

В даному прикладі у змінних DTAs і DTAo зберігається адреса DTA, регістри bx, es незмінні.

4Eh функція INT 21h [6]

Вхід: AH 4Fh

DS:DX адреса ASCII рядка із маскою імені файлу

СХ атрибут файлу для порівняння

Вихід: АХ код помилки, якщо в CF=1 буфер DTA заповнений даними.

Дана функція знаходить ім'я першого файлу у переліку, що відповідає заданій масці і атрибуту, і поміщує інформацію про нього в буфер DTA. В AH поміщується номер функції; регістрова пара вказує на рядок, що задає маску імені файлу; в СХ міститься атрибут файлу.

В імені файлу і розширенні допускаються узагальнені символи "*" і "?".

Функція повертає код помилки в AX, якщо файл не знайдений, або заповнює буфер DTA даними про файл.

4Fh функція INT 21h [6]

Вхід: AH 4Fh

DS:DX адреса даних, повернутих попередньою 4Eh

функцією INT 21h

Вихід: AX код помилки, якщо CF=1

DTA заповнена даними

Дана функція викликається після функції 4Eh INT 21h і знаходить наступний файл, що відповідає параметрам пошуку, заданим при визові 4Eh INT 21h.

В AH заноситься номер функції, в регістрову пару DS:DX – адреса даних, повернутих попередньою функцією.

Функція повертає в AX код помилки, якщо вона не відбулась, або поміщує в буфер DTA дані про файл, що відповідає узагальненому імені і атрибуту.

Приклад:

mov ah, 4Eh ; в аh номер функції першого пошуку

mov dx, affset mask ; в dx зміщення маски

mov cx, 10h

int 21h

jc end

@@01:

mov ah, 4Fh ; в аh номер функції наступного пошуку

int 21h

jnc @@01

end:

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

2.2.2. Інші функції переривання INT 21h, що необхідні для використання у програмі, що розробляється

2h функція INT 21h [6]

Вхід: AH 02h

DL код символу, що виводиться на вивід

Вихід: символ на екрані

В AH поміщується код функції, в DL код символу, що необхідно вивести на екран.

Слід відмітити, що при наявності в DL коду 8 (ASCII код Backspace) функція переміщує курсор вліво на одну позицію.

Для виконання переходу на новий рядок слід послідовно вивести символи із кодами 13 і 10 на екран [5].

Приклад:

mov ah, 2 ; номер функції

mov dl, 13 ; вертикальна табуляція

int 21h

mov dl, 10 ; зсув каретки

int 21h

Даний фрагмент коду переводить курсор на новий рядок.

40h функція INT 21h [6]

Вхід: AH 40h

BX описувач файлу

DS:DX адреса буфера, що містить дані, що записуються

CX число байт, що записуються

Вихід: AX код помилки, якщо CF=1

AL число реально зчитаних байт

Дана функція записує CX байт даних в файл, або пристрій, заданий описувачем в BX. В AH поміщується номер функції, BX містить описувач [6]:

0 Стандартний пристрій вводу (звичайна клавіатура)

1 Стандартний пристрій виводу (звичайний екран)

2 Стандартний пристрій помилок (CON-екран)

3 Стандартний пристрій AUX (COM 1)

4 Стандартний принтер (LPT1)

Регістрова пара DS:DX адресується на буфер. В CX міститься кількість записуваних байт.

Функція повертає в AX код помилки при умові, що CF встановився в 1, або кількість реально зчитаних байтів в AL.

Для нас дана функція цікава як інструмент для виводу даних на екран, тому в BX має бути занесено 1.

Приклад:

mov ah, 40h ; код функції

mov bx, 1 ; вивід на екран

mov dx, offset sstring ; в dx зміщення рядка виводу

mov cx, FFh ; в cx кількість символів, що виводяться

int 21h

Даний фрагмент коду виводить на екран рядок символів, що містяться в змінній sstring.

4Ch функція INT 21h [6]

Вхід: AH 4Ch

AL код виходу

Вихід: не має

Функція завершення програми (EXIT). Повертає управління від породженого процесу його батьківському процесу. Встановлює код виходу (його можна опитати функцією WAIT (4Dh)).

В AХ міститься номер функції, в AL – код виходу:

0 нормальне завершення

1 завершення через Ctrl-Break (INT 23h)

2 завершення по критичній помилці пристрою (INT 24h)

3 завершення через функцію KEEP (31h)

Приклад:

mov ax, 04ch ; в al – код виходу

int 21h ; в ah – номер функції

Даний фрагмент коду задає нормальне завершення роботи програми (повертається код виходу – 0).

3. Розробка задачі на мові асемблер

 

3.1. Допоміжні процедури

Очевидно, що основна програма потребує допоміжні процедури для отримання необхідних параметрів, які задає користувач в командному рядку при визові програми. Серед них: процедури вводу/виводу даних на консоль, обробки ASCII рядків, а також перетворення числових даних у ASCII формат для подальшого їх виведення на екран. Для цього були розроблені спеціальні модулі PARAMS.asm, STRIO.asm та BINASC.asm, які містять необхідні процедури. Розглянемо їх окремо.


Информация о работе «Вивід вмісту каталогу y середовищі MS DOS»
Раздел: Информатика, программирование
Количество знаков с пробелами: 56313
Количество таблиц: 3
Количество изображений: 3

Похожие работы

Скачать
213419
24
23

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

Скачать
206879
0
16

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

Скачать
139853
0
2

... ів» (Tools Palette), яка дозволяє (як у PageMaker) переключатися між виділеними рамками та редагувати їх вміст. При запуску програми ця панель не з’являється і її потрібно спеціально викликати із меню «Графика» (Graphics) — погодьтесь, це досить неочікуване місце для цієї команди. Програма підтримує тільки один рівень відкату, у той час як багато інших пакетів підтримують до ста таких рівнів. ...

Скачать
148745
30
12

... обміну даними з ПЭВМ у процесі виконання програми користувача; 11.      Вкажіть типи буферних схем, використаних в УУМС-2. Їх призначення та особливості роботи. 12.      Дайте визначення адресного простору мікропроцесорної системи та розпишіть його розподіл в УУМС-2. Адресний простір УУМС складається з областей, состав яких показаний у табл.2. Варто звернути увагу, що внутрішні адресні області ...

0 комментариев


Наверх