Используя подсистему прерываний, написать программу, которая выводит на экран информацию о параметрах НЖМД - Turbo Pascal
Формулировка задачи:
Используя подсистему прерываний написать программу, которая выводит на экран информацию о параметрах НЖМД.
$ 13 - дисковые службы
Перечень функций (номер функции при вызове прерывания должен содержаться в регистре АН):
0 - сброс дисковой системы;
1 - определение состояния диска;
2 - чтение секторов диска;
3 - запись секторов диска;
5 - форматирование дорожки;
8 - определение текущих параметров диска;
10 - проверка готовности диска;
При задании входных параметров обычно используется следующая схема: АН = номер функции;
AL = количество секторов (1-128)
СН - количество цилиндров (0-1023)
CL = номер сектора (1-17)
DH = номер головки (0-15)
DL = номер дисковода (0 = А :, 1 = 2-й флоппи; $ 80 = жесткий диск 0, $ 81 = жесткий диск 1).
возвращает:
CF = 0 в случае успеха, = 1 в случае ошибки.
Решение задачи: «Используя подсистему прерываний, написать программу, которая выводит на экран информацию о параметрах НЖМД»
textual
Листинг программы
var DiskCnt, MaxCyl, MaxHead, MaxSect: Byte; begin asm mov ah,8h mov dl,80h int 13h mov DiskCnt,dl mov MaxHead,dh mov MaxCyl,ch mov MaxSect,cl end; WriteLn('Количество дисков: ',DiskCnt); WriteLn('Диск 0, C H S: ',MaxCyl,' ',MaxHead,' ',MaxSect); end.
Объяснение кода листинга программы
- Объявляются переменные DiskCnt, MaxCyl, MaxHead, MaxSect типа Byte.
- В ассемблерной части кода происходит следующее:
- mov ah,8h - переводит режим работы в режим ввода-вывода 8 (INT 13H)
- mov dl,80h - записывает в регистр DL число дисков
- int 13h - выполняет команду INT 13H, которая осуществляет чтение данных из устройства
- mov DiskCnt,dl - записывает число дисков в переменную DiskCnt
- mov MaxHead,dh - записывает значение голов в переменную MaxHead
- mov MaxCyl,ch - записывает значение цилиндров в переменную MaxCyl
- mov MaxSect,cl — записывает значение секторов в переменную MaxSect
- Основная часть программы выводит на экран информацию о параметрах НЖМД:
- WriteLn('Количество дисков: ',DiskCnt) — выводит на экран строку
Количество дисков:
и значение переменной DiskCnt - WriteLn('Диск 0, C H S: ',MaxCyl,' ',MaxHead,' ',MaxSect) — выводит на экран строку
Диск 0, C H S:
и значения переменных MaxCyl, MaxHead, MaxSect Весь код написан на языке Turbo Pascal.
- WriteLn('Количество дисков: ',DiskCnt) — выводит на экран строку
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д