Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2011, 16:01   #1
IvanPo
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
По умолчанию Проверка на существование диска

Пожалуйста, помогите с решением такой задачки:
Пользователь вводит с клавиатуры букву (например, D). Необходимо проверить, существует ли такой диск в системе и вывести соотв. сообщение.

Код:
mov ax, @data
mov ds, ax
		
mov dx, offset mesg	;Вывод сообщения Choose Disc:
mov ah, 9h
int 21h
		
mov ah, 1h	;Чтение с клавиатуры
int 21h
;--------------------------------------------
; и вот куда-то сюда надо вкрутить проверку
Есть такая функция:

Цитата:
int 21h
DOS Fn 36H: дать свободную память диска
Вход

AH = 36H
DL = номер диска (0=текущий, 1=A, и т.д.)

Выход

AX = 0ffffH, если AL содержал неверный номер диска или число секторов на кластер, если нет ошибок.
BX = доступных кластеров.
CX = байт на сектор.
DX = всего кластеров на диске.
но как с ней в данном случае работать - не могу разобраться.
IvanPo вне форума Ответить с цитированием
Старый 26.05.2011, 16:43   #2
xxxyyyzzz
Пользователь
 
Регистрация: 25.05.2011
Сообщений: 13
По умолчанию

II. Средство работы с диском.
Все возможности операционной системы MS DOS для работы с дискетами и жесткими дисками основываются на прерывании 1ЗН.
Прерывание 13Н дает весьма обширный сервис работы с дисками на физическом уровне. Среди функций, выполняемых данным прерыванием, - дать статус ошибки последней дисковой операции, проверить сектор, форматировать дорожку, дать параметры диска и т.д. Мы разберем лишь чтение-запись с помощью данного прерывания, а также форматирование дорожки диска. Подробнее о нем можно прочесть, например, в [13,17] или в нашем справочнике (см. Приложение 8).
Чтение. -
Вход:
АН-02,
DL - номер диска (0 - А, 1 - В; для твердого 80Н, для второго-81Н)
DH - номер головки,
AL - число читаемых секторов,
ES:BX - буфер для чтения,
СХ - номер сектора и цилиндра: первые 6 бит - номер сек-
тора, остальные - номер цилиндра, причем 8 и 7 бит следует
поставить перед другими (8-10,7-9).
0:0078Н - адрес таблицы параметров дискеты (Рис. 14.10).
Выход:
если взведен флаг С, то код ошибки в АН.
Запись. Аналогична чтению.
Форматирование дорожки.
Вход:
АН-05,
Глава 14, Структура информации на диске 245
AL - число секторов на дорожке или коэффициент чередования в случае жесткого диска,
СХ - номер сектора и цилиндра (так же, как для чтения-записи),
DL - номер устройства,
DH - номер головки,
ES:BX - буфер с информацией для разметки. Для дискеты это последовательность четырехбайтных величин: 1-й - номер дорожки, 2-й - номер головки, 3-й - номер сектора, 4-й - длина сектора (0-128,1- 256,2 - 512, 3 -1024). Для жесткого диска буфер состоит из пар байт: 1-й либо 0 -разметить как обычный сектор, либо 80Н - разметить как дефектный сектор, 2-й номер сектора. Для некоторых моделей контролеров жест-
ких дисков содержимое буфера игнорируется.Меняя содержимое буфера, можно произвести нестандартное форматирование.Например, изменить нумерацию секторов на дорожке. В некоторых случаях изменения буфера недостаточно - требуется изменить содержимое таблицы параметров дис-
кеты или жесткого диска. Такая ситуация может возникнуть при форматировании с меньшим числом секторов, чем предусматривает дисковод. Если дорожка отформатирована нестандартно, то для чтения-записи на нее также необходимо менять таблицу параметров.
Выход: АН - код ошибки, если флаг С установлен. Возможна ситуация, когда BIOS не поддерживает форматирование жесткого диска. В этом случае в АН будет возвращена ошибка 1 - нераспознанная команда, и Вам не останется ничего иного, как форматировать посредством обращения к контролеру жесткого диска.

Assembler. Учебный курс[Пирогов В.Ю.]
----попробуй эту функцию, может помежет?
xxxyyyzzz вне форума Ответить с цитированием
Старый 26.05.2011, 22:49   #3
IvanPo
Новичок
Джуниор
 
Регистрация: 25.04.2011
Сообщений: 2
По умолчанию

Это всё прекрасно, но главный вопрос в том, как интерпретировать символ, полученный с клавиатуры в номер диска (0=А, 1=В и т.д.)
IvanPo вне форума Ответить с цитированием
Старый 27.05.2011, 07:53   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

IvanPo, если ты ввёл маленькую латинскую букву - sub al,61h. Если большую - sub al,41h.
Только и всего.
vadimych вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на существование инфы в ячейках imbamarik Microsoft Office Excel 21 11.03.2011 13:14
Проверка существование Email адреса на сервере Бутаков_Сергей Работа с сетью в Delphi 7 29.12.2010 01:55
Проверка на существование файлов Vohakisa Помощь студентам 5 01.06.2010 16:40
проверка на существование папки D_E_N Общие вопросы Delphi 3 05.10.2009 22:48
Проверка на существование Lonix Общие вопросы Delphi 2 19.03.2007 19:42