LINUX.ORG.RU

История изменений

Исправление lenin386, (текущая версия) :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. На жестком диске вообще всё не так. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Количество секторов на FAT и её количество - может быть различно. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать. Вообще, тут должно быть nrec_in_root*32 / 512, которые тоже надо вычитывать, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, у тебя получился размер кластера - один сектор. Такое бывает абсолютно не всегда, даже на floppy. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исправление lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. На жестком диске вообще всё не так. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Количество секторов на FAT и её количество - может быть различно. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать. Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, у тебя получился размер кластера - один сектор. Такое бывает абсолютно не всегда, даже на floppy. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исправление lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. На жестком диске вообще всё не так. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Количество секторов на FAT и её количество - может быть различно. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать. Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, размер кластера - один сектор. Такое бывает не всегда. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исправление lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. На жестком диске вообще всё не так. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Количество секторов на FAT и её количество - может быть различно. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, размер кластера - один сектор. Такое бывает не всегда. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исправление lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. На жестком диске вообще всё не так. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, размер кластера - один сектор. Такое бывает не всегда. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исправление lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. + 1 - правильно. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, размер кластера - один сектор. Такое бывает не всегда. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.

Исходная версия lenin386, :

push	ax		;Этот кластер
	mov	cx,ax
	add	cx,1+9*2+14-1	;BOOT+FAT+ROOT-MICROSOFT_GLUK#2

Вот тут ты типа переводишь номер кластера в номер сектора, чтобы потом сконвертировать в CHS процедурой, которую оттуда-то сπ, но она тоже не правильная, потому что ты даже CHS не считываешь. А это всё вариативные параметры даже на дискете. На пятидюймовой дискете 15 секторов на дороге, на 720k - 9. + 1 - правильно. На диске - вообще другие цифры. +9*2 - правильно, хотя такое работать не будет уже на по другому отформатированной floppy. Эти числа надо вычитывать, из специальной области. А вот дальше - ты от бессилия начал подгонять цыфирьки, чтоб заработало. Что за число 14 и MICROSOFT_GLUK#2 - я не знаю. Догадываюсь, как ты к ним пришёл, но лучше не комментировать Вообще, тут должно быть nrec_in_root*32 / 512, но не получается, «MICROSOFT_GLUK#2» мешает.

	mov	ax,0201h	;Читать, один.
	int	13h

Читать, один. СЕКТОР. А надо - КЛАСТЕР. Ага. Оно сработало потому, что у тебя в данном конкретном случае, размер кластера - один сектор. Такое бывает не всегда. Это разные понятия, если кластер был всегда равен сектору, такого понятия не было бы.