Skip to main content

Операционная система MS-DOS

Операционная система

Способы обращения к ОС MS-DOS. Программы, составленные на языке С, обращаются к прерываниям MS-DOS с помощью таких функций как intdos, int86, intdosx и т.д. Для передачи параметров используются структуры REGS, WORDREGS, BYTEREGS, SREGS, описанные в файле dos.h. Программа записывает параметры в поля структуры, соответствующие регистрам процессора, а затем вызывает одну из перечисленных выше функций, передавая ей адрес структуры. После выполнения прерывания результат записывается в эту же или другую структуру.

Например:
union REGS inregs, outregs;
struct SREGS segregs;
......
inregs.h.ah. = 0x3a;
segregs.ds = FP_SEG(dir_name);
inregs.x.dx = FP_OFF(dir_name);
intdosx(&inregs, &outregs, &segregs);
.....

В этом фрагменте кода вызывается функция 3Ah прерывания INT 21h, для чего используется функция intdosx, которая входит в стандартную библиотеку системы разработки С++. Номер функции записывается в поле h.ah объединения inregs, параметры функции (передаваемые через регистры DS:DX) - соответственно поле ds структуры segregs и в поле x.dx объединения inregs. Функция intdosx записывает содержимое регистров процессора поле выполнения программного прерывания в объединение outregs.

Объединение REGS определено в файле dos.h следующим образом:

UNION REGS
{struct WORDREGS x;
struct BYTEREGS h;};

В нем имеется две структуры - WORDREGS и BYTEREGS. Первая из этих структур предназначена для работы с 16-зфззядными регистрами. Она определена так:

struct WORDREGS
{
unsigned int ax, bx, cx, dx, si. di, cflag, flags;
};
В этой структуре поля ax, bx, cx, dx, si, di соответствуют одноименным регистрам центрального процессора. Значение флага переноса записывается в переменную cflag, поле flags предназначено для остальных флагов процессора.
С помощью структуры BYTEREGS можно задавать и определять содержимое 8-разрядных регистров процессора:
struct BYTEREGS
{
unsigned char al, ah, bl, bh, cl, ch, dl, dh;
};
Для работы с сегментными регистрами предназначена структура SREGS, определенная следующим образом:
struct SREGS
{
unsigned int es;
unsigned int cs;
unsigned int ss,
unsigned int ds;
};
Для использования перечисленных выше структур программа должна одержать следующую строку:
#include
Поле вызова программного прерывания программа должна проверить флаг переноса, который сохраняется в поле cflag. Проверка поля cflag может быть выполнена, например, следующим образом:
union REGS inregs, outregs;
.....
intdos(&inregs,&outregs);
if(outregs.x.cflags != 0) error();
......
Код ошибки при этом записывается в переменную outregs.x.ax.

Лабораторная работа № 1

Исследование логической структуры диска в MS-DOS

Цель работы

Изучение логической структуры диска ОС MS-DOS

Общие положения

Диски ОС MS-DOS организованы по довольно жесткой схеме. Каждый диск включает в себя помимо области файлов еще несколько управляющих областей фиксированного размера. Первый сектор логического диска (сектор 1, дорожка 0, головка 0) содержит загрузочную запись - программу начальной загрузки ОС. Кроме программы начальной загрузки в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Эти параметры располагаются в самом начале сектора.

Отправить комментарий

  • Доступные HTML теги: <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

CAPTCHA
Что бы оставить комментарий, вам надо доказать, что вы не робот. Пожалуйста введите оба нарисованных слова без пробелов и точек. Спасибо
14 + 4 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.