Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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

Ответ
 
Опции темы
Старый 27.12.2016, 19:22   #1
kieyv
Новичок
 
Регистрация: 13.12.2015
Сообщений: 3
Репутация: 10
По умолчанию Определение типа разделов на жестком диске

Здравствуйте, я реализовал программу которая подсчитывает количество разделов на жестком диске, мне нужно сделать еще одну проверку на тип раздела, чтобы выводил какой раздел основной или расширенный и выводил тип файловой системы

Подскажите пожалуйста как это можно сделать

Код:

.386
dseg  segment use16
    buffer db 446 dup (0)
    part1   db   16 dup(0)
    part2   db   16 dup(0)
    part3   db   16 dup(0)
    part4   db   16 dup(0)
    sign    db   02 dup(0)

    errr   db 'Attention sector read error! $'  
    razdel  db  'Part count: $'

    ;Пакет дискового адреса 
    paket db 16 		;длинна пакета 
	  db 0	
	  db 1 			;кол-во секторов для чтения
	  db 0
	  dw buffer 		;внутрисегментная адресация области буфера 
	  dw dseg		;значение указателя сегмента данных
	  dq 0			;номер сектора в LBA

dseg  ends
cseg  segment use16

assume ds:dseg, cs:cseg

m1:
mov cx, dseg
mov ds, cx

	mov ah,42h	
	mov dl,80h	;номер устройства
	lea si,paket	;смещение пакета диского адреса в сегмент данных
	
	int 13h
	jc  short eerr

        mov   ah,9
	lea   dx,razdel
	int   21h

        lea si,part1+4
        mov   cx,4
        mov   al,'0'
find:   cmp   byte ptr [si],0     ; проверка очередного флага
        jz    next
        inc   al             ; счётчик, если не нуль
next:   add   si,16          ; адрес сл.флага..
        loop  find
        int   29h
      

;завершение исполнения
exit:	mov ah,4ch
	int 21h


eerr:
	mov   ah,9
	lea   dx,errr
	int   21h
	jmp   short exit 


cseg ends
end m1

kieyv вне форума   Ответить с цитированием
Старый 27.12.2016, 20:25   #2
7in
Евгений (Jin X)
Форумчанин
 
Аватар для 7in
 
Регистрация: 14.12.2014
Адрес: Самара
Сообщений: 227
Репутация: 147
По умолчанию

Ну, так в строке cmp byte ptr [si],0 проверяется типа раздела.
Вот в зависимости от этого значения можно и выводить разные данные.
Как реализовать? Вариантов куча.

1. Записать 255 строк, оканчивающихся нулём (или '$' для удобства вывода) и отыскивать нужную строку в зависимости от кода файловой системы (если строка пуста, выводим "Unknown").

2. Записать строки в формате:
Код:

db Код,'Файловая система',0  ; или $ в конце

и так для каждой файловой системы. И аналогично сканировать коды и пропускать строки, если код не совпал. Если не ничего найдено, выводим "Unknown". (Я бы сделал именно так)

3. Сделать массив из 255 слов (dw), в которые записать адреса строк, содержащих название. И потом берём код*2, читаем это слово-адрес и находит строку.

4. Комбинируем: массив из 255 байтов+слов. Байт харанит код, слово хранит адрес строки.

5. Все названия файловых систем сделать из, например, 16 символов. И расположить 255 таких строк друг за другом (либо код+строка). Дурной, конечно, способ, но вероятно, самый простой.

И т.д....

Последний раз редактировалось 7in; 27.12.2016 в 20:28.
7in вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бэды на жестком диске. Дима я Железо 5 16.02.2013 18:56
Восстановление инфы на жестком диске Ecosasha Железо 1 29.04.2012 15:12
Свободное пространства на жестком диске optimator Общие вопросы C/C++ 2 08.07.2011 22:44
получение иформации о ЖЕСТКОМ диске ganiebal Общие вопросы Delphi 0 14.05.2010 09:48
Место на жестком диске Gapro Общие вопросы Delphi 3 04.12.2009 21:28




00:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru