Разработка программы записи информации на гибкий диск - Лабораторная работа

бесплатно 0
4.5 100
Особенности инициализации регистров для дисковых операций чтения, записи и верификации. Анализ метода доступа к дисковой памяти, поддерживающей использование оглавления, блокирование и разблокирование записей. Обеспечение адресации дисковых секторов.


Аннотация к работе
Разработать программу, осуществляющую запись информации в указанное место (головка, дорожка, сектор) гибкого диска.После запуска программа спрашивает оператора о номере головки, дорожки и сектора гибкого диска, куда нужно произвести запись.Метод доступа к дисковой памяти, поддерживающий использование оглавления, "блокирование" и "разблокирование" записей, обеспечивается прерыванием DOS 21H. Более низкий уровень, обеспечивающий абсолютную адресацию дисковых секторов, также через DOS, выполняется посредством прерываний 25H и 26H. Самый низкий уровень обеспечивается прерыванием BIOS 13H, которое позволяет выполнить произвольную адресацию в дисковой памяти по номеру дорожки и сектора Для дисковых операций можно программировать непосредственно на уровне BIOS, хотя BIOS и не обеспечивает автоматически использование оглавления или блокирование/деблокирование записей.Функция 03h прерывания 13h - запись на диск. Функция 08h прерывания 13h - получить информацию о носителе.Блок-схема программы представлена на рис.1.data mes1 db "номер головки, 0 или 1",13,10,"$" headdb 0 mes2 db "номер дорожкиб максимум 80",13,10,"$" way db 0 mes3 db "номер сектораб максимум 18",13,10,"$" sectdb 0 inperr db "неправильное значение",13,10,"$" derror db "неизвесный тип дискеты",13,10,"$" xzerror db "неизвестная ошибка",13,10,"$" error03 db "дисск защищен от записи",13,10,"$" error04 db "Сектор не найден",13,10,"$" error07 db "повреждена таблица параметров дисковода",13,10,"$" error0a db "обнаружен дефектный сектор",13,10,"$" error0b db "обнаружена дефектная дорожка",13,10,"$" error0c db "нестандартный формат носителя или дорожки",13,10,"$" noerr db "все нормально",13,10,"$" errnd db "не мешало бы вставить дискету!!!",13,10,"$" meseos db "",13,10,"$" welkome db "write please:",13,10,"$" message db 512 dup (0) .startup mov ah, 08h ; 8-я функция 13-го прерывания - получить информацию о носителе mov dl, 0 ; в dl - номер диска (0-A, 1-B b и т.д.) int 13h ; прерывание 13 - дисковый ввод-вывод cmp al, 4 ; если дискета 1.44 Mb - идем дальше, если любая другая - выдаем сообщение об ошибке jne next mov ah, 9h ; выдается сообщение о том, что дискета "неправильная" mov dx, offset derror int 21h mov ah, 0 ; сразу завершение и выход, чтобы не использовать far jump int 21h next: mov ah, 9h ; 9-я функция 21-го прерывания - вывод строки на экран mov dx, offset mes1 ; в dx - адрес строки "number of head, 0 or 1" int 21h ; прерывание 21 - функции DOS mov ah, 08h ; 8-я функция 21-го прерывания - ждать символ, считать его в al int 21h ; прерывание 21 - функции DOS sub al, 30h ; al=al-30h, 30h - смещение в ASCII, чтобы взять значение цифры mov head, al ; значение - в переменную head, тут будет храниться номер головки флоппика mov ah, 9h ; 9-я функция 21-го прерывания - вывод строки на экран mov dx, offset mes2 ; в dx - адрес строки "number of way, max 80" int 21h ; прерывание 21 - функции DOS mov ah, 08h ; считываем первый символ int 21h ; sub al, 30h ; al=al-30h mov bx, 10 ; в bx - основа десятичной системы mov ah, 0 ; в ah - 0, чтобы не было ошибок mul bx ; умножаем al на 10 - получаем значение старшего десятичного разряда mov way, al ; полученное значение - в переменную way, тут будет храниться номер дорожки mov ah, 08h ; считываем второй символ int 21h ; 5*10 8=58) cmp way, 80 ; смотрим, не превышает ли оно максимума для дискеты 1.44Mb jna next2 mov ah, 9h ; если были ошибки в процессе ввода - выдаем сообщение mov dx, offset inperr ; mov ah, 8h int 21h mov ah, 4ch int 21h next3: mov ah, 9h mov dx, offset welkome ; приглашение к набору записываемых символов int 21h mov cx, 0 intxt: mov ah, 8h ; читаем символ int 21h mov si, cx mov message[si], al ; пишем символ в массив mov dl, al mov ah, 02h ; выводим символ на экран int 21h inc cx ; cx - счетчик для массива message cmp dl, 0Dh ; если нажата кнопка ENTER, прекращаем запись массива символов, идем дальше.

План
Содержание

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

2. Описание программы

3. Теория вопроса

4. Описание используемых функций

5. Блок-схема программы

6. Текст программы

Список литературы

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

Список литературы
1. Питер Абель. Ассемблер. Язык и программирование для IBM PC: пер. с англ. - К.: Век , М.: ЭНТРОП, К.: НТИ, 2003 - 736 с.

2. Джордан. Программирование на ассемблере. М.: 3. Ризаев И.С. Лекционный курс по дисциплине: «Системное программное обеспечение». Казань: КАИ, 2004.

4. Кулаков В. Программирование на аппаратном уровне. Специальный справочник. Питер, 2003.

Размещено на .ru
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?