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

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

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 20.11.2012
Размер файла 43,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://allbest.ru/

Размещено на http://allbest.ru/

Содержание

  • 1. Постановка задачи
  • 2. Описание программы
  • 3. Теория вопроса
  • 4. Описание используемых функций
  • 5. Блок-схема программы
  • 6. Текст программы
  • Список литературы

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

Разработать программу, осуществляющую запись информации в указанное место (головка, дорожка, сектор) гибкого диска.

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

После запуска программа спрашивает оператора о номере головки, дорожки и сектора гибкого диска, куда нужно произвести запись. При указании неправильного номера выводится сообщение об ошибке. При удачном вводе программа запрашивает текстовую информацию, которая вводится с клавиатуры. При нажатии клавиши Enter программа закрывается.

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

Метод доступа к дисковой памяти, поддерживающий использование оглавления, "блокирование" и "разблокирование" записей, обеспечивается прерыванием DOS 21H. Более низкий уровень, обеспечивающий абсолютную адресацию дисковых секторов, также через DOS, выполняется посредством прерываний 25H и 26H. Самый низкий уровень обеспечивается прерыванием BIOS 13H, которое позволяет выполнить произвольную адресацию в дисковой памяти по номеру дорожки и сектора Для дисковых операций можно программировать непосредственно на уровне BIOS, хотя BIOS и не обеспечивает автоматически использование оглавления или блокирование/деблокирование записей. Дисковая операция BIOS INT 13H рассматривает все "записи", как имеющие размер сектора, а адресацию диска осуществляет в терминах действительных номера дорожки и номера сектора.

Для дисковых операций чтения, записи и верификации необходима инициализация следующих регистров:

AH Определяет тип операции: чтение, запись, верификация или форматирование.

AL Определяет число секторов.

CH Определяет номер дорожки.

CL Определяет номер начального сектора.

DH Номер головки (стороны) : 0 или 1 для дискеты.

DL Номер дисковода: 0=A, 1=B и т.д.

ES:BX Адрес буфера ввода/вывода в области данных (за исключением операции верификации).

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

дисковый верификация память адресация

Функция 03h прерывания 13h - запись на диск.

Функция 08h прерывания 13h - получить информацию о носителе.

Функция 00h прерывание 16h - ожидание нажатия клавиши.

Функция 08h прерывание 21h - Ввод с клавиатуры без эха с проверкой Ctrl/Break.

Функция 09h прерывание 21h - Вывод строки символов на экран.

Функция 4сh прерывание 21h - Завершение подпроцесса с возвратом управления.

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

Блок-схема программы представлена на рис.1

Рис. 1. Блок-схема программы

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

model small

.stack

.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)

.code

.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 ;

sub al, 30h ; также получаем значение младшего разряда

add way, al ; добавляем его к старшему, получаем число дорожек (напр. 5*10+8=58)

cmp way, 80 ; смотрим, не превышает ли оно максимума для дискеты 1.44Mb

jna next2

mov ah, 9h ; если были ошибки в процессе ввода - выдаем сообщение

mov dx, offset inperr ;

int 21h ;

mov ah, 8h

int 21h

mov ah, 4ch

int 21h

next2:

mov ah, 9h ; следующее сообщение - ввод номера сектора

mov dx, offset mes3 ;

int 21h ;

mov ah, 08h ; аналогично считываем и получаем номер сектора

int 21h ;

sub al, 30h ;

mov bx, 10 ;

mov ah, 0 ;

mul bx ;

mov sect, al ;

mov ah, 08h ;

int 21h ;

sub al, 30h ;

add sect, al ; номер сектора находится в переменной sect

cmp sect, 18 ; максимальное значение для дискеты 1.44Mb - 18

jna next3

mov ah, 9h ; если были ошибки в процессе ввода - выдаем сообщение

mov dx, offset inperr ;

int 21h ;

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 ; сx - счетчик для массива message

cmp dl, 0Dh ; если нажата кнопка ENTER, прекращаем запись массива символов, идем дальше.

je nextMF

cmp cx, 64 ; если превышена емкость массива - идем дальше

jne intxt

nextMF:

mov ah, 03h ; получить текущую позицию курсора

mov bh, 0 ; экран №0

int 10h ; прерывание

add ch, 1h ; увеличим номер строки курсора на 1

mov dh, ch ;

mov dl, 0 ; столбец тот же

mov ah, 02h ; установить положение курсора

int 10h

чтения с диска - 02h

mov dx, ds ; в dx - содержимое сегмента данных

mov es, dx ; из dx содержимое ds в es, напрямую работать с сегментными регистрами нельзя

mov dl, 0 ; в dl - 0, это номер диска

mov dh, head ; в dh - номер головки

mov ch, way ; в ch - номер дорожки

mov cl, sect ; в cl - номер сектора

mov al, 64 ; в al - объем считываемой информации

mov bx, offset message ; в bx - адрес буфера данных, [es]:[bx]

mov ah, 03h ; 3-я функция 13-го прерывания - запись на диск

int 13h ;

cmp ah, 0 ; ищем ошибки, при удачном завершении в ah остается 0

je noer ;

cmp ah, 03h ; 03 - диск защищен от записи

je err03 ;

cmp ah, 04h ; 04 - сектор не найден

je err04 ;

cmp ah, 07h ; 07 - повреждена таблица параметров дисковода

je err07 ;

cmp ah, 0ah ; 0А - дефектный сектор

je err0a ;

cmp ah, 0bh ; 0В - дефектная дорожка

je err0b ;

cmp ah, 0ch ; 0С - нестандартный формат носителя

je err0c ;

cmp ah, 80h

je err80

mov ah, 9h ; Если какая-то неизвестная ошибка

mov dx, offset xzerror ;

int 21h ;

jmp exit ; на выход

noer:

mov ah, 9h

mov dx, offset noerr ; ошибок нет

int 21h

jmp exit

err03:

mov ah, 9h

mov dx, offset err03

int 21h

jmp exit

err04:

mov ah, 9h

mov dx, offset err04

int 21h

jmp exit

err07:

mov ah, 9h

mov dx, offset err07

int 21h

jmp exit

err0a:

mov ah, 9h

mov dx, offset err0a

int 21h

jmp exit

err0b:

mov ah, 9h

mov dx, offset err0b

int 21h

jmp exit

err0c:

mov ah, 9h

mov dx, offset err0c

int 21h

jmp exit

err80:

mov ah, 9h

mov dx, offset errnd ; нет диска (превышен таймаут обращения)

int 21h

jmp exit

exit: ; выход из программы

mov ah, 0 ; ждем нажатия любой кнопки клавиатуры

int 16h

mov ax, 3h ; очистка экрана

int 10h

mov ah, 4Ch ; выход в DOS

int 21h

end ; конец :)

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

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

2. Джордан. Программирование на ассемблере. М.:

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

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

Размещено на Allbest.ru


Подобные документы

  • Твердотельный накопитель SSD, его виды: на основе микросхем памяти и флеш-памяти. Сравнение производительности HDD и SDD в рабочих условиях. Способы записи информации на винчестер. Технология структурированного носителя. Суперпарамагнитный предел.

    курсовая работа [53,3 K], добавлен 15.05.2012

  • Дисковод (FDD) - это устройство, предназначенное для чтения информации с гибких магнитных дисков, а также записи на них (как правило, используется для переноса информации с одного компьютера на другой). Информация записывается на гибкий магнитный диск.

    контрольная работа [502,1 K], добавлен 28.02.2004

  • Проектирование микропроцессорного устройства для записи и чтения данных из памяти flash-типа и осуществления взаимодействия с персональным компьютером посредством универсальной последовательной шины (USB). Программное обеспечение для устройства.

    курсовая работа [868,3 K], добавлен 23.12.2012

  • Внутренние и внешние устройства персонального компьютера. Особенности смешанной и разделенной кэш-памяти. Технология перпендикулярной записи на жестком диске. Основные устройства лазерной записи и их функции. Назначение источника бесперебойного питания.

    курсовая работа [410,0 K], добавлен 05.12.2012

  • Сущность и виды компакт-привода (оптического привода), история его появления. Формат хранения данных на диске. Считывание информации с диска. Скорость чтения/записи CD. Суть технологии записи высокой плотности. Технические особенности CD и DVD дисков.

    контрольная работа [26,1 K], добавлен 04.10.2011

  • Средства машинного хранения данных, используемые в персональных компьютерах. Особенности механизмов чтения-записи. Контроль достоверности хранимых в памяти данных. Уровни кэш-памяти. Политика записи при кешировании, сравнение производительности.

    презентация [2,7 M], добавлен 10.08.2013

  • Первая оптико-цифровая система записи и воспроизведения, изобретенная Расселом. Физические характеристики и конструкция компакт-диска. Особенности оптического способа считывания информации. Что находится внутри кадра. Принципы доступа к информации.

    реферат [71,7 K], добавлен 26.03.2010

  • Предназначение дисковых накопителей, схема устройства жесткого диска. Критерии эффективности физической организации файлов. Схема адресации кластеров файла, используемая в стандартной на сегодняшний день для UNIX файловой системе ufs. Функции флэш-памяти.

    реферат [4,0 M], добавлен 09.12.2009

  • Анализ работы параллельных вычислений на видеокарте GeForce GT 540M с использованием текстурной памяти. Рассмотрение специфических особенностей по адресации текстурной памяти. Изучение основ чтения и записи данных. Описание примеров данных программ.

    лабораторная работа [3,1 M], добавлен 04.12.2014

  • Физическая и логическая структура жёстких дисков персонального компьютера. Методы организации файлов. Процесс форматирования жёсткого диска. Разработка программы, реализующей функции файлового обмена, чтения и записи с образом файловой системы FAT16.

    курсовая работа [166,3 K], добавлен 09.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.