Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
01.05.2014
Размер:
33.28 Кб
Скачать

Санкт-Петербургский государственный университет

Кафедра МО-ЭВМ

Отчёт по лабораторной работе №9

по дисциплине «Организация и функционирование ЭВМ»

Выполнил: Добряков М.М.

Ст. гр. 0341

Проверил:

Санкт-Петербург

2002

  1. Постановка задачи

1) Разработать программу устанавливаемого драйвера символьного типа, реализующую функции:

- инициализация (фиксация границы драйвера и вывод титульной таблички );

- ввод с клавиатуры строки символов, длиной не более Nmax;

- Преобразование всех заглавных латинских букв входной строки в строчные.

2) Разработать на языке С тестирующую программу для проверки функционирования драйвера.

  1. Цель работы

Научиться писать символьные драйвера для операционной системы MS-DOS.

  1. Теоретическая подготовка

Драйвер символьного устройства состоит из 18-и байтного заголовка.

Первые 4 байта содержат адрес следующего загружаемого драйвера ДОС – так как в момент загрузки драйвер будет последним в цепочке, адрес должен быть равен 0ffff:0ffff. Следующие 2 байта атрибуты драйвера. Затем идут смещение процедуры стратегий (отвечающей за получение адреса буфера запроса) и прерываний (которая выполняет требуемые команды). В следующих 8-ми байтах содержится название драйвера.

За заголовком следует код процедур стратегии и прерывания с используемыми ими подпрограммами.

Для компиляции драйвера для данной лабораторной работы используется файл Make.bat, в результате его работы получится файл lab9.sys путь к данному файлу записываем в файл CONFIG.SYS и перезагружаем компьютер. Для проверки работоспособности драйвера используем файл test.bat, в результате его работы на экране должна отобразиться следующая строка:

аaabbbzzzaaabbbzzzаааАААбббвввёёёЁЁЁпппррр

Lab9.asm

.model small

.code

.186

org 0

dd -1

dw 0a800h

dw offset strategy

dw offset interrupt

db "DRVCON "

request dd ?

command_table label

dw offset init

dw offset unsupported

dw offset unsupported

dw offset unsupported

dw offset read

dw offset read

dw offset unsupported

dw offset unsupported

dw offset write

dw offset write

dw offset unsupported

dw offset unsupported

dw offset unsupported

dw offset unsupported

dw offset unsupported

dw offset unsupported

dw offset write

dw offset invalid

dw offset invalid

dw offset unsupported

dw offset invalid

dw offset invalid

dw offset invalid

dw offset unsupported

dw offset unsupported

dw offset unsupported

strategy proc far

mov word ptr cs:request,bx

mov word ptr cs:request+2,es

ret

strategy endp

interrupt proc far

pushf

pusha

push ds

push es

push cs

pop ds

les si,dword ptr request

xor bx,bx

mov bl,byte ptr es:[si+2]

cmp bl,19h

jbe command_ok

call invalid

jmp short interrupt_end

command_ok:

shl bx,1

call word ptr command_table[bx]

interrupt_end:

cmp al,0

je no_error

or ah,80h

no_error:

or ah,01h

mov word ptr es:[si+3],ax

pop es

pop ds

popa

popf

ret

interrupt endp

unsupported proc near

xor ax,ax

ret

unsupported endp

read proc near

mov al,0bh

ret

read endp

invalid proc near

mov ax,03h

ret

invalid endp

write proc near

push si

mov cx,word ptr es:[si+12h]

jcxz write_finished

lds si,dword ptr es:[si+0eh]

cld

comment @

crypt:

lodsb

cmp al,'A' ; < A

jl no_print

cmp al,'z'

jg no_print ; > z

cmp al,'Z'

jle print

cmp al,'a'

jge print

jmp no_print

print:

int 29h

no_print:

loop crypt

@

crypt:

lodsb

cmp al,'A'

jl ex

cmp al,'Z'

jg ex

xor al,20h

int 29h

ex:

loop crypt

write_finished:

xor ax,ax

pop si

ret

write endp

init proc near

mov ah,9

mov dx,offset load_msg

int 21h

mov word ptr es:[si+0eh],offset init

mov word ptr es:[si+10h],cs

xor ax,ax

ret

init endp

load_msg db "Драйвер загружен",13,10,'$'

start:

push cs

pop ds

mov dx,offset exe_msg

mov ah,9

int 21h

mov ah,4ch

int 21h

exe_msg db "Загружать из CONFIG.SYS",13,10,'$'

.stack

end start

Файл: Make.bat

cls

tasm lab9.asm

tlink lab9.obj,lab9.sys

Файл: dt

аaabbbzzzAAABBBZZZаааАААбббвввёёёЁЁЁпппррр

Файл: test.bat

type dt >drvcon

Файл: CONFIG.SYS

DEVICE=lab9.sys

Соседние файлы в папке Лабораторная работа №91