Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Традиційний сервіс BIOS



Традиційний дисковий сервіс працює в 16-розрядному режимі процесора, всі параметри виклику передаються через регістри процесора. Адреса сектора задається в системі CHS і розміщений вельми специфічно. Сервіс викликається програмним перериванням Int 13h, при виклику приймаються наступні угоди:

номер функції задається в регістрі АН і не повинен перевищувати 3Fh;

· логічний номер диска задається в регістрі DL (біт 7 = 0 - ознака звернення до НГМД);

· номер циліндра (0-1023) задається в регістрі СН (молодші 8 біт) і СЦ7:6] (старші 2 біта);

· номер голівки (0-255) задається в регістрі DH;

· номер початкового сектора (1-63) задається в регістрі CL [ 5 :0];

· кількість секторів, що беруть участь в операції, 8 біт - в регістрі AL (0-255);

· покажчик на початок буфера оперативної пам'яті для прочитуваних і записуваних даних (address of buffer) - в регістрах Е S: ВХ;

· результат виконання операції визначається по прапору перенесення: З F = 0 -успешное виконання операції, CF = 1 - виявлені помилки (код стануповертається в регістрі АН, код завершення останньої операції з дискетами зберігається за адресою 40:41h, з жорсткими дисками - 40:74h);

· таблиця параметрів диска для дискет (DPT) задана покажчиком в пам'яті за адресою 0:78h, для жорстких дисків (HDPT) - 0:104h або 0:118h.

Список функцій традиційного сервісу приведений в таблицю. 12.7, детальніше вони описані в [4, 9]. Пристрої можуть не підтримувати деякі функції, про що драйвери повинні «чесно повідомити» кодом повернення Olh.

1 Лише для фіксованих дисків.

2 Лише для дискет і інших змінних носіїв.

3 Призначення відрізняється від звичайного.

Формально традиційний сервіс дозволяє працювати з дисками, що мають до 1024 х 256 х 63 = 16 515 072 секторів (близько 8,4 Гбайт). Ряд операційних систем має помилку, що не дозволяє використовувати повний об'єм, допустимий даним сервісом. Для дисків об'ємом більше 15 481 935 секторів слід користуватися лише функціями розширеного сервісу (див. нижчий). Проте при роботі з пристроями АТА є ще і бар'єр в 528 Мбайт. Річ у тому, що контроллер жорсткого диска АТА, на який орієнтовані драйвери Int 13h, має лише 4-бітовий регістр номера голівки (а в BIOS - 6 біт). Правда, цей же контроллер здатний приймати 16-бітовий номер циліндра (у BIOS - 10 біт). Зрозуміло, що безпосередньо без спотворень через ці два фільтри (формат виклику і формат регістрів контроллера) може пройти лише виклик з найжорсткішими обмеженнями по кожній координаті. Тоді обмеження, отримане тим же перемножуванням діапазонів координат, виходить близько 528 мільйонів байт:

(210 = 1024 циліндри) х (24 = 16 голівок) х (26 - 1 = 63 сектори) х 512 байт = 528 482 304 байт.

Для подолання 528-мегабайтного бар'єру дисків АТА, не чіпаючи програмного інтерфейсу, в BIOS ввели розширення традиційного дискового сервісу. Інтерфейс АТА в тривимірній геометрії дозволяє реалізувати досить великий (але вже не позамежний) об'єм диска:

(216 = 65 536 циліндрів) х (24 = 16 голівок) х (28 - 1 = 255 секторів) х 512 байт = 136,9 Гбайт.

Аби досягти хоч би інтерфейсного обмеження BIOS (8,4 Гбайт), стали застосовувати трансляцію параметрів виклику функцій Int 13h, які теперназиватимемо логічними, у физические* параметри, передавані контроллерам АТА-дисков. У функції, яка повідомляє параметри диска (функція 8), виробляється зворотна трансляція, так що на стороні виклику програмного інтерфейсу Int 13 h присутньо лише логічні параметри. Природно, логічний об'єм диска не може перевищувати фізичного: (З х Н х 5) трансляції (LBA, Large Disk, ЕСН5) см.в [1,4,9].

Розширений сервіс BIOS

Аби дістати можливість роботи через BIOS з дисками об'єму більше 8,4 Гбайт, потрібно було ввести нові функції дискового сервісу.

Розширений дисковий сервіс BIOS, Enhanced Disk Drive Services (EDD), просувний фірмою Phoenix Technologies LTD, реалізується багатьма розробниками BIOS і пристроїв масової пам'яті. Він дозволяє працювати з пристроями, що мають об'єм до 264 секторів, ефективно використовуючи архітектуру процесорів IA-32 і IA-64. Сервіс оперує лінійною логічною адресою сектора (LBA). Замість традиційних таблиць параметрів дисків в нім використовуються нові, такі, що дають вичерпну інформацію про пристрої, їх фізичну організацію і інтерфейс. Пристрої можуть мати змінні носії і самі бути знімними в процесі роботи комп'ютера (наприклад, підключені до шини USB або IEEE1394), так що поняття «Змінюваність носія» декілька розмивається. Такі пристрої повинні підтримувати механізм повідомлення про зміну носія і програмне блокування зміни носія. По прогнозах ємкості даного інтерфейсу повинно вистачити на 15-20 років.

Розширення BIOS Int 13 h використовують ОС Windows 95, Windows 98, Windows 2000. Правда, це використання обмежене лише початковим завантаженням і процесом установки (FDISK, FORMAT), оскільки в регулярній роботі застосовуються власні 32-розрядні драйвери. Розширення BIOS Int 13 h не використовують DOS (всі версії), Windows 3. lx, Windows NT, Novell NetWare, OS/2 Warp, Linux, Unix.

В даний час визначено три набори функцій:

доступ до фіксованих дисків (fixed disk access subset) - функції 41-44h, 47h і 48h;

· блокування і зміна носія (device locking and ejecting subset) - функції 41h, 45h, 46h, 48h і 49h;

· підтримка розширених дисків (enhanced disk drive (EDO) support subset) -функции 41h і 48h.

Розширений сервіс, як і традиційний, викликається програмним перериванням Int13h з номерами функцій зверху 3Fh (регістр АН); номер пристрою (регістр D L) допустимий в діапазоні 80h-FFh. Основні параметри виклику - початкова адреса блоку, число секторів для передачі і адреса буфера - передаються через адресний пакет (device address packet). Формат пакету порівняно з передачею параметрів традиційного сервісу через регістри процесора досить просторий.

· Оскільки розширення BIOS може бути і відсутнім, є функція перевірки його наявності (номер 41h). Розширення може діяти вибірково (не для всіх пристроїв), так що перевірку треба виробляти для конкретного пристрою, що цікавить програму. Перевірка дає номер версії розширення і карту підтримуваних наборів функцій. Функції розширеного читання, запису, верифікації і пошуку (42h, 43h, 44h і 47h) по сенсу не відрізняються від їх аналогів з традиційного сервісу. Для роботи із змінними носіями введені функції отпирания/запирания, витягання і перевірки факту зміни носія (45h, 46h і 49h). Від ідеології традиційного сервісу сильно відрізняється функція здобуття параметрів пристрою (48h). Вона повертає в ОЗУ буфер з набором параметрів і детальним описом пристрою, що дозволяє ОС і додаткам працювати з ним, минувши BIOS. Функція установка апаратної конфігурації (4Eh) дозволяє управляти режимом передачі (Рio, DMA), а також попередньою вибіркою (пошуком).

· Для емуляції дисків на завантажуваних CD-ROM до сервісів BIOS Int 13h додається декілька нових функцій:

почати /завершить емуляцію диска (4Ah/4Bh), почати емуляцію диска і виконати завантаження (4Ch);

· прочитати сектори завантажувального каталога (4Dh); функції 41 -48h дозволяють звертатися до будь-яких логічних секторів CD-ROM (у режимі LBA з розміром сектора 2048 байт), коли для даного приводу включена емуляція.

 

2.написати і оформити згідно вимог програму на Асемблері для рисування вказаним кольором прямокутника заданого розміру у певній точці екрану

(задані координати лівої верхньої вершини) з використанням циклів.

Ширина 90

Висота 50

Колір 12

Х 90

У 50

 

 

title

sseg segment stack

db 256 dup(?)

sseg ends

dseg segment

dseg ends

cseg segment

assume cs:cseg,ds:dseg,ss:sseg

start: jmp main

main: push ds

mov ax,0

mov ax,dseg

mov ds,ax

;-----------------------------------------------------

mov ax,4F02h

mov bx,012h

int 10h

;-----------------------------------------------------

mov ah,0Ch

mov bx,0

mov al,12

mov cx,50

mov dx,50

a: int 10h

inc dx

cmp dx,140

jle a

;-----------------------------------------------------

mov ah,0Ch

mov bx,0

mov cx,140

mov dx,50

b: int 10h

inc dx

cmp dx,140

jle b

;-----------------------------------------------------

mov ah,0Ch

mov bx,0

mov cx,51

mov dx,50

c: int 10h

inc cx

cmp cx,139

jle c

;-----------------------------------------------------

mov ah,0Ch

mov bx,0

mov cx,51

mov dx,140

d: int 10h

inc cx

cmp cx,139

jle d

;-----------------------------------------------------

mov ax,4c00h

int 21h

cseg ends

end start

 

3.Перейти в існуючий каталог(прізвище студента).Відкрити файл(ім’я студента).Прочитати текст( N символів). Вивести текст на екран. Закрити файл. Знищитти файл. Перейти в кореневий каталог. Знищити існуючий каталог.

 

 

sseg segment stack робота з каталогами

db 256 dup(?)

sseg ends

dseg segment

path1 db 'c:\TASM\Narushunska',0

path2 db 'olya.txt',0

path3 db 'c:\tasm',0

buf2 db 10 dup(?)

buf21 db '$'

error2 db 'The folder is not found$'

lola3 db 0ah,'$'

dseg ends

cseg segment

assume ss:sseg,cs:cseg,ds:dseg

start: jmp main

main: push ds

xor ax,ax

push ax

mov ax,dseg

mov ds,ax

; перехід в каталог

m1: mov dx, offset path1

mov ah,3bh

int 21h

jc error

;відкрити файл

mov dx,offset path2

mov ah,3dh

mov al,0

int 21h

jc error

mov bx,ax

;читання даних з файлу

mov cx,19

mov dx,offset buf2

mov ah,3fh

int 21h

jc error

;друк результату

mov dx,offset buf2

mov ah,9

int 21h

mov dx,offset lola3

mov ah,9

int 21h

; закриття файлу

mov dx,offset path2

mov ah,3eh

jc error

;видалення файлу

mov ah,41h

mov dx,offset path2

int 21h

;перехід в кореневий каталог

mov dx,offset path3

mov ah,3bh

int 21h

jc error

;видалення каталогa

mov ah,3ah

mov dx,offset path1

int 21h

jc error

;вихід з програми

mov ah, 7 ;затримка тексту на екрані

int 21h

jmp exit

exit: mov ax,4c00h

int 21h

error:

mov dx,offset error2

mov ah,9

int 21h

mov ah, 7 ;затримка тексту на екрані

int 21h

jmp exit

jmp exit

cseg ends

end start

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.