Page 1 of 1

Загрузчик

Posted: Thu May 19, 2005 3:57 pm
by Guest
помогите пожалуста: не работает фрагмент вида:

Code: Select all

[b]entry:
	; entry point here...
	mov	ax,	0x3000
	nop		; special for Bochs bug fix...
	mov	ds, ax
	mov	es,	ax
	mov	fs, ax
	
	mov	ah,	0x10
	mov	dl,	0x80
	int	0x13
	jc .err
	
	mov	ah,	2	; function BIOS read ata
	mov	al,	1	; 1 sector(s)
	mov	ch,	0	; cylinder
	mov	cl,	1	; start sector
	mov	dh,	0	; head
	mov	dl,	0x80	; ata0
	mov	bx, 0	; ptr = 0, ds = es = 0x3000
	int	0x13
	jc	.err[/b]

в чем ошибка? может с адресацией что-то?

Posted: Thu May 19, 2005 5:36 pm
by VaStaNi
А когда будем учиться правильно задавать вопрос, Гость?
Ты считаешь все остальное ясно? Я могу предположить, что это код бут сектора, а могу подумать, что приложение COM под Дос, а могу еще, что....
А трассировщиком, что слабо пройти по шагам и сравнить с докой по INT13h ???

Posted: Fri May 20, 2005 7:41 pm
by cyberGnom
ну....мда... думаю слабо.... я в виртуальной машиине запускаю...
компилирую в NASM в виде образа и впариваю как образ жесткого диска...

дела начинается с

Code: Select all

cpu	586
bits 32
org	0
потом то, что выше, потом

Code: Select all

%if (510-($-$$)) < 0
    %error loader too large!!!
%else
    times (510 - ($-$$))   db 0xcc
%endif

    dw  0xaa55
ну а потом еще куча всего того...именно все остальное я и пытаюсь загрузить....

Posted: Mon May 23, 2005 11:03 am
by VaStaNi
непонятно, что именно не работает. Код выше вроде MBR загружает и что не пускает тебя туда виртуалка, как я понимаю, так? :)
Если да, то нечего виртуалку мучать образами. Попробуй все реально соорудить и реально грузить.

Posted: Sun May 29, 2005 8:56 pm
by cyberGnom
да все....я уж давно разобрался...просто я написал в самом начале bits 32, а надо было писать bits 16 =)))
как только переписал, так все наладилось...