русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Прерывание 25Н


Дата добавления: 2014-11-27; просмотров: 747; Нарушение авторских прав


Читает диск по секторам

*Вход:

AL - номер дисковода ( 0-А, 1-В и т.д.)

DS:BX - адрес буфера диска

СХ - количество секторов

DX - начальный относительный сектор

*Выход:

Флаг переноса установлен:

AL - код ошибки

Флаг переноса сброшен: нет ошибок

*Примечание.

Прерывание 25h читает с диска в буфер обмена количество секторов, указанных в DX. При вызове прерывания разрушаются все регистры кроме сегмен­тных, поэтому необходимо сохранять перед вызовом все регистры. В момент прерывания система помещает регистр флагов в стек, а при возвращении не выби­рает его, поэтому не забывайте очищать стек после прерывания.

Прерывание 26Н

Записывает диск по секторам

*Вход:

AL - номер дисковода ( 0-А, 1-В и т.д.)

DS:BX - адрес буфера диска

СХ - количество секторов

DX - начальный относительный сектор

*Выход:

Флаг переноса установлен:

AL - код ошибки

Флаг переноса сброшен: нет ошибок

*Примечание.

Прерывание 26h пишет на диск буфер обмена количество секторов, указанных в DX. При вызове прерывания разрушаются все регистры, кроме сег­ментных, поэтому необходимо сохранять перед вызо­вом все регистры. В момент прерывания система помещает регистр флагов в стек, а при возвращении не выбирает его, поэтому не забывайте очищать стек после прерывания.

Пример выполнения работы

Создать новую директорию new_dir на диске а:, сделать ее текущей, записать туда файл newfile.txt и в него записать сообщение - "Это вновь создан­ный файл".

date segment

path_l db "new_dir",0

path_2 db 'newfile.txt',0

hendle dw 0

mes db 'Это вновь созданный файл', 10,13

date ends

code segment

assume cs:code,ds:date

start: mov ax, date

mov ds,ax

mov dl,0 ; текущий диск - A:

mov ah,OEh ; загрузка функции ОЕ

int 21h ; смена текущего диска



mov dx, offset path_l ; загрузка маршрута нового каталога

mov ah,39h ; загрузка 39-й функции

int 21h ; создание нового каталога

jc m1 ; переход, если есть ошибка

mov dx,offset path_l ; маршрут нового каталога

mov ah,3bh ; загрузка функции 3b

int 21h ; смена каталога

jc ml ; переход, если нет ошибки

mov dx, off set path_2 ; загрузка маршрута нового каталога

mov сх,0 ; установка атрибута чте­ние/запись

mov ah,3Ch ; загрузка функции ЗС

int 21h ; создание файла

jc ml ; переход, если есть ошибка

mov hendle,ах ; сохранить хендл

mov bx,hendle ; установить хендл

mov сх,26 ; количество символов для записи

mov dx,offset mes ; начало записывае­мого текста

mov ah,40h ; загрузка 40-й функции

int 21h ; записать в файл сообщение

jc ml ; переход, если есть ошибка

сmр ах,2б

jz m3

mov ах,13 ;код ошибки при неправильной передаче

jmp ml ; переход при несовпадении

mЗ: mov bx,hendle ; загрузить хендл

mov ah,3Eh ; загрузка функции ЗЕ

int 21h ; закрыть хендл

jc ml ; переход, если есть ошибка

jmp m2

m1: call er_disk ; переход на конец

m2: mov ax,4c00h ; выход

int 21h

er_disk proc near ; выдача сообщений об ошибках

push ds ; сохранить сегмент данных

mov cx,cs ; изменить

mov ds,cx ; сегмент данных

сmр ах,2 ; ошибка 2 ?

jnz @3 ; нет, продолжить анализ

mov dx,offset message2 ; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@3: сmр ах,3 ; ошибка 2 ?

jnz @4 ; нет, продолжить анализ

mov dx,off set message3 ; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@4: сmр ах,4 ; ошибка 4 ?

jnz @5 ; нет, продолжить анализ

mov dx, offset message4 ; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@5: сmр ах,5 ; ошибка 5 ?

jnz @6 ; нет, продолжить анализ

mov dx,offset message5 ; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@6: сmр ах,б ; ошибка 6 ?

jnz @12 ; нет, продолжить анализ

mov dx,offset message6 ; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@12: сmр ах,12 ; ошибка 12 ?

jnz @13 ; нет, продолжить анализ

mov dx,offset messagel2 ;загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@13: сmр ах,13 ; ошибка 12 ?

jnz @14 ; нет, продолжить анализ

mov dx,offset messagel3; загрузка буфера сообщения

jmp @15 ; переход на вывод сообщения

@14: mov dx,offset messagel4; ошибка не распознана

@15: mov ah,9 ; загрузка 9-й функции

int 21h ; вывод сообщения об ошибке

mov dx,offset wait_

mov ah,9 ; загрузка 9-й функции

int 21h ; вывод сообщения

mov ah,8 ; загрузка 8-й функции

int 21h ; ожидание pop ds

ret ; выход из процедуры

message2 db 10,13,'Файл не найден',10,13,'$'

message3 db 'Маршрут не найден',10,13,'$'

message4 db 'Слишком много открытых фалов',10,13,'$'

message5 db 10,13,'Нет доступа',10.13,'$'

message6 db 'Несуществующий хендл',10,13,'$'

message12 db 'He разрешен доступ',10,13,'$'

message13 db 'Неверная передача данных в файл',10,13,'$'

message14 db 'Неопределенная ошибка',10,13,'$'

wait_ db 'Нажмите любую клавишу',10,13,'$'

er_disk endp

code ends

end start



<== предыдущая лекция | следующая лекция ==>
Определяет параметры диска | Порядок выполнения работы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.238 сек.