Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Primery_nebolwih_podprogramm_na_Assembl-.doc
Скачиваний:
2
Добавлен:
14.05.2015
Размер:
161.79 Кб
Скачать

Проверка готовности накопителя

Программа проверяет готовность устройства. Если устройство не готово, программа просит нажать клавишу ESC.

; Проверяем корректность и готовность устройства.

; Полностью завершенная COM-программа.

codeseg segment

assume CS:codeseg, DS:codeseg, ES:codeseg

org 100h

Begin: jmp Start

; ----переменные----

Intvec dd ? ;старый вектор прерывания 24h

Luukku db 'Disk not valid or ready. Hit Esc!',10,13,'$'

Start:

;------------ Основная программа -----------

;Перехватываем прерывание 24h

push ES

mov AX,3524h ;вектор int 24h записывается в ES:BX

int 21h

mov word ptr Intvec,BX ;смещение

mov word ptr Intvec[2],ES ;сегмент

pop ES

;load a new int 24h

mov AX,2524h ;новый вектор 24h

mov DX,offset CError ;адрес

int 21h

;код для проверки готовности устройства

mov DL,1 ;1 - A:, 2 - B: и т.д..

mov AH,36h ;функция определения свободного места на диске

int 21h

cmp AX,-1 ;AX - число секторов в кластере -1

je Loppu ;выход если нет диска или не готов

;устройство готово

;здесь ваш код....

Loppu: int 20h ;завершаем COM-программу

;-------- новое прерывание int 24h -----------------

assume DS:nothing ;будут использоваться дальние вызовы

CError proc far

pushf ;сохраняем флаги

or AH,AH

js EiLevyke

push DX

push DS

mov AX,CS

mov DS,AX

assume DS:Codeseg

mov DX,offset Luukku

mov AH,9 ;выводим строку DS:DX

int 21h

mov AH,0

int 16h ;ждем нажатия клавиши

cmp AL,27 ;это Esc ?

jne EiEsc

mov AH,4Ch ;завершаем программу

int 21h

EiEsc: pop DS

assume DS:nothing

pop DX

popf

mov AL,1 ;еще раз

iret ;возвращаем управление главной программе

EiLevyke: popf ;восстанавливаем флаги

jmp CS:Intvec ;вызываем старый обработчик int 24h

CError endp

codeseg ends

end Begin

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]