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

Вернуться в Информатика

Операционная система MS-DOS
Новосибирский Государственный Технический УниверситетОПЕРАЦИОННЫЕ СИСТЕМЫЧАСТЬ 1. ОПЕРАЦИОННАЯ СИСТЕМА MS-DOSМетодические указания к лабораторным работам для студентов 2 и 3 курсаФакультета АВТФ (специальность 2202)дневного и заочного отделенияНовосибирск1997 Составили: к.т.н., доц. В.Г. Качальскийст.преп. Е.Н. ПавенкоРецензенты: к.т.н., доц. В.А. АстапчукРабота подготовлена кафедрой автоматизированных систем управления Способы обращения к ОС 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. Лабораторная работа
Добавить в Одноклассники    

 

Rambler's Top100