Странные результаты записи на образ дискеты второго цилиндра

Пытаюсь записать в сектор на втором цилиндре образа дискеты. Для теста попробовал написать цифры 1-9 на первом секторе второго цилиндра.

Логика будет заключаться в том, что, имея 18 секторов на цилиндре и каждый сектор размером 512 байт, этот результат должен появиться в байте 9216/0x2400 (после байта 8704/0x2200, который является 18-м сектором первого цилиндра). Как ни странно, после проверки результатов с помощью hexdump последовательность вместо этого находится в байте 18432/0x4800.

Я хотел бы понять, почему 1-й и 2-й цилиндр дискеты (с точки зрения программы сборки) не являются смежными.

Программа сборки NASM:

org 7c00h
jmp begin
data db 1,2,3,4,5,6,7,8,9
begin:
mov ax, 0
mov es, ax
mov bx, data
mov al, 1
mov ah, 3
mov dh, 0
mov dl, 0
mov ch, 1
mov cl, 1
int 13h

person Dumitru    schedule 16.11.2013    source источник
comment
Головка 1 цилиндра 0 следует за головкой 0 цилиндра 0, а не головкой 0 цилиндра 1?   -  person Frank Kotler    schedule 16.11.2013


Ответы (1)


На самом деле на цилиндре 36 секторов, так как дискета двуглавая. Необработанный .img хранит сектора, последовательно чередуя стороны:

ХТС 001 002 ... 0018 101 ...

person valplo    schedule 16.11.2013
comment
Я не уверен, что вторая часть верна, поскольку запись двух последовательных секторов с одной и той же головкой дает данные, разделенные ровно 512 байтами, а не 1024. Кроме того, не могли бы вы уточнить связь между головкой и цилиндром? Ссылку, может быть, где это объясняется. - person Dumitru; 17.11.2013
comment
После нескольких тестов я, наконец, понял расположение данных на дискете. Пожалуйста, отредактируйте свой ответ, так как глава увеличивается только тогда, когда пройдены все 18 секторов первого HT, т.е. HTS 001 002... 0018 101... - person Dumitru; 17.11.2013