Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.03.2010
Сообщений: 23

Форматирование дорожки гибкого диска FDD

23.03.2010, 19:53. Показов 4315. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

пишу вам из-за проблемы связанной с форматированием дорожки гибкого диска при использовании 13го прерывания. Собственно при выполнении операции ожидаемых изменений (а именно обнуление данных форматируемой дорожки) не происходит. Подскажите пожалуйста в чем я туплю:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
.386
assume cs:code, ds:data
 
 
data segment use16
    bufsize  equ 512
    ;max_sctr equ 18
    ;max_t   equ 79
    ;tmp     dd 04030201h
    buf     db bufsize dup (?)
    bufr    db 512 dup (30h)
    fsize   dd ?
    
    track   db 13
    head    db 00h
    drive   db 00h
    secsize db 01h  ; 256 bytes per sector!
 
    header   db 'FORMAT TRACK', 10, 13
    end_header equ $
data ends
 
 
code segment use16
entry:
        mov ax, data
        mov ds, ax
        mov es, ax
 
        ; HEADER
        mov cx, end_header - header
        mov bx, offset header
        mov ah, 02h
output: mov dl, [bx]
        int 21h
        inc bx
        loop output
        
       
        ; FDD RESET
        mov ax, 0000h
        mov dl, [drive]
        int 13h
        
        ; FDD PREFORMAT (bad)
        mov ax, 1800h
        mov ch, 80
        mov cl, 18
        mov dl, [drive]
        int 13h
                
        ; FDD RESET
        mov ax, 0000h
        mov dl, [drive]
        int 13h
        
        
        ; TRACKS DESCRIPTIONS CREATION
        mov ecx, 17
        mov bl, [track]
        mov bh, [head]
        mov ah, [secsize]
l001:   mov al, cl
        inc al
        mov word ptr [buf + 4*ecx], bx
        mov word ptr [buf + 4*ecx + 2], ax
        dec cx
        jns l001
 
 
        ; FDD TRACK FORMAT
        mov ah, 05h
        mov al, 18
        mov cl, 00
        mov bx, offset buf
        mov ch, [track]
        mov dh, [head]
        mov dl, [drive]
        int 13h
 
        
        ; FDD READ
        mov bx, offset bufr
        mov al, 1
        mov dl, [drive]         ; floppy disk
        mov dh, [head]          ; zero head (up)
        mov ch, [track]         ; 13th track
        mov cl, 02h             ; 2nd sector
        mov ah, 02h             ; 2nd function
        int 13h
        
        
        ; BUFFER OUTPUT
        mov cx, 514
        mov bx, offset bufr
        mov ah, 02h
output3:mov dl, [bx]
        int 21h
        inc bx
        loop output3
 
        mov ah, 08h
        int 21h
exit:
        mov ax, 4c00h
        int 21h
code ends
 
end entry
В результате 18ая функция мне говорит, что я неправильно определяю формат диска (cf=1 и ah=C0h вроде), а 5ая выполняется нормально (ошибок нет, флаг cf не подымается), но форматирование все равно не происходит. Слышал, что если форматировать дорожку с длиной сегмента отличной от 512, то диск перестанет читаться виндой, подобного также не происходит. Подскажите пожалуйста, что я не так делаю?

Добавлено через 1 час 11 минут
Не уверен, но начинаю подозревать, что проблема с форматированием связана с эмулятором флоппи диска. Но вот почему не работает 18ая функция это все равно не объясняет.

Добавлено через 20 часов 27 минут
Сегодня проверил на реальной машине, проблема действительно была в VirtualBox'e и его эмуляторе флоппи привода. Сейчас форматирование собственно работает (именно тот код, который я привел), но появился новый вопрос:

Я ведь форматирую дорожку с длиной сектора в 256 байт, а когда считываю с нее данные, считываются все равно 512 байт на сектор (во всяком случае, требуется буфер в 512 байт). А мне нужно, чтобы секторы на дорожке были размером именно в 256 байт. У кого-нибудь есть идеи, как с этим бороться?

ПыСы. Знаю, что стандартный размер сектора у FAT"а - 512. Но я ведь работаю с прерываниями BIOS и сам могу править тот же FAT.

ПыПыСы. Вопрос о 18ой функции (ah=18h, int 13h) все еще открыт.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2010, 19:53
Ответы с готовыми решениями:

Форматирование дорожки
Приветствую! У меня возникла проблема даже не с самим форматированием, а с тем, что идет до него: перед форматирванием дорожки я...

Моделирование заполнения гибкого диска
Помогите составить программу, моделирующую заполнение гибкого магнитного диска. Общий объем памяти на диске 360 Кбайт. Файлы имеют...

Моделирование заполнения гибкого магнитного диска
Помогите кто нибудь написать программу на С++ к курсовой работе пожалуйста! Вот задание: Написать программу, моделирующую заполнение...

16
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
18.06.2014, 18:35
Подскажите, пожалуйста, в чём дело.

Дисковод пишет/читает на ура диски, отформатированные только этим дисководом. Диски, отформатированные производителем (новые) или на других машинах, не читаются (можно изредка вытащить содержимое отдельных секторов под WinHex). На другом приводе такие диски читаются на ура.

Причина в прошивке контроллера дисковода или FDD контроллера материнской платы?

Биос чист: ESCD и DMI тоже чистые.

Как посмотреть физический формат дорожек, который сидит в контроллере и как его исправить?
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
18.06.2014, 21:01
alex111110, меняйте дисковод. Сбиты головки. Нужна юстировка (настройка на эталонную дорожку) головок. Заменить дисковод будет проще. Тем более сейчас списывается много старых компов с дисководами.
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
24.06.2014, 11:17
Да вы чего? Дисковод новый, проблема однозначно программная. И дискеты он читает хорошо.

Добавлено через 7 минут
При чтении неправильной дискеты видим сообщения "cannot find sector requested" или "Ошибка контроллера диска А", при чтении правильной дискеты всё работает на летУ.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.06.2014, 13:53
А что говорит по этому поводу Floppy Disk Analyser?
Цитата Сообщение от alex111110 Посмотреть сообщение
Дисковод новый
Ни о чём. Могли уронить при транспортировке/разгрузке.
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
24.06.2014, 14:38
alex111110,
сам пишет и сам читает, в других дисководах не читает – сбиты головки.
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
25.06.2014, 16:44
там нестандартный формат дорожки

http://frolov-lib.ru/books/bsp/v01b/ch1.htm
http://frolov-lib.ru/books/bsp/v01b/ch2.htm

Добавлено через 23 часа 0 минут
нужна сливалка данных с контроллера.
(я так понимаю, что прошить его ничего не помешало, даже при закрытом для записи биосе...)

А что говорит по этому поводу Floppy Disk Analyser?
По этой ссылке есть скриншотик к программе FloppyImage для Dos. Очень бы нужно саму прогу, в инете только под Windows, по ссылке там нету.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
25.06.2014, 16:53
Цитата Сообщение от alex111110 Посмотреть сообщение
Очень бы нужно саму прогу
Поищите на http://old-dos.ru/
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
10.07.2014, 17:38
там нет.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
10.07.2014, 17:49
alex111110, выкладываю то, что нашёл в архивах, гарантировать ничего не могу.
Вложения
Тип файла: zip fdd_util.zip (498.9 Кб, 21 просмотров)
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
25.09.2014, 13:55
Ещё одна проблема возникла уже с usb флэш-памятью: флэшка стала доступна только для чтения. Вообще проблема выглядела таким образом. После использования флэшки в другом компьютере, при подключении к домашнему можно было записать максимум 2 сектора данных. При обработке её операционной системой стала лететь таблица индексов (сначала есть, а потом нет разрешения на запись), chkdsk стал вываливаться при запуске...
При попытке записи на Physical disk возникает input/output error (#21).
Видимо, что-то записалось в контроллер флэшки, переключатель стоит в положении write enable.

Ещё раз убедился, что контроллер - вещь уязвимая, и надо уметь его программировать и лечить.
Аналогичная вещь может получиться и с видеоадаптерами при нахождении машины в интернете.
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
25.09.2014, 21:57
На последний абзац ТС.

Никогда не хранил важные данные на одном носителе.
Сегодня дешевле купить новую флешку, а не мучиться с восстановлением.

Храните важные данные на разных HDD, разных носителях.
Не оставляйте флешки с "важными" и другими данными в ПК перед выключением ПК. После воздействия молнии на ПК, сам сталкивался с этим уже 2 раза, может сгореть все, что подключено к ПК бесперебойник и все, что в компе — CD, HDD, память, мать и даже проц.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
25.09.2014, 22:25
AFP, не хочу вас обидеть, но эта тема - учебное задание по ASM.
будьте внимательнее, чтобы не попадать пальцем в жо небо.
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
02.10.2014, 13:46
Цитата Сообщение от AFP Посмотреть сообщение
Сегодня дешевле купить новую флешку, а не мучиться с восстановлением.
Храните важные данные на разных HDD, разных носителях.
Пока идёт восстановление данных - естественно. Но всё-таки надо знать, в чём дело.

Вообще, программируемая часть мат. платы компьютера сосотит не только из BIOSа, но и программ контроллеров устройств, отображаемых при загрузке OS (табличка, которая появляется после memory test)

Есть флэшер, который может показать, какие контроллеры в системе имеются (с названием производителей, маркировкой и т.д). Он теоретически позволяет сохранять данные, но почему-то у меня они не сохраняются. Может быть есть софт посвежее, или нужно найти полный хэлп к программе.
Ссылка на неё вот здесь: ftp://ftp.foundertech.com/oldp... ash855.exe
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
02.10.2014, 14:10
alex111110, для дебилоидов - читать пост выше.
0
0 / 0 / 0
Регистрация: 18.06.2014
Сообщений: 10
04.10.2014, 14:27
Цитата Сообщение от magirus Посмотреть сообщение
alex111110, для дебилоидов - читать пост выше.
а не для дебилоидов как?
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
04.10.2014, 14:46
а для недебилоидов тоже читать. только внимательно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.10.2014, 14:46
Помогаю со студенческими работами здесь

Запись и удаление файлов с гибкого магнитного диска
Здравствуйте. У меня в проге 3 проблеммы. #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> ...

Получение Partition Table у образа FDD диска
Получение Partition Table у образа FDD диска Собственно сама таблица располагается с адреса 0x1BE А если открыть образ FDD...

Написать программу, моделирующую заполнение гибкого магнитного диска
Написать программу, моделирующую заполнение гибкого магнитного диска. Общий объем памяти на диске 360 Кбайт. Файлы имеют произвольную...

Составить программу, моделирующую заполнение гибкого магнитного диска
задача такая Составить программу, моделирующую заполнение гибкого магнитного диска. Объем памяти на диске 360 Кбайт. Файлы имеют...

Форматирование диска C
Здравствуйте. Столкнулся с такой проблемой: не получается формировать диск С. Такая беда выскакивает. Конечно, как говорят на всех...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru