· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› boot sector

Посл.отвђт Сообщенiе


Дата: Июн 18, 2004 13:23:12

Вот хочу написать бут сектор.Который считывает фаил с дискетки и передоет ему управление.В реальном режиме. Но не как не получается прочитать тот или иной сектор.
Даже простой пример не хочет работать:
	start:
        cli 
	mov ax, cs
	mov ds, ax
	mov es, ax
	mov ss, ax
	mov sp, start

	sti 
        mov ax,0b800h
	mov es,ax
	mov ch,0
	mov cl,1
	mov dl,0
	mov ax,0201h
	int 13h

Вопрос первый, почему нельзя считывать в адрес где es>1000.
Вопрос второй. Почему-то не получается считать дальше первого сектора.
        mov ax,60h
	mov es,ax
	mov ch,1
	mov cl,1
	mov dl,0
	mov ax,0201h
	int 13h



_533107552__


Дата: Июн 18, 2004 18:46:03 · Поправил: Uri

0b800h - это видеосегмент.
А вот тебе работающий пример:

fasm:
org	100h
	mov	ax,0201h	;Read Sectors (sector count)
	mov	ch,00h		; track number (0-n)
	mov	cl,01h		; sector number (1-n)
	mov	dl,00h		; drive (0-3=diskette)
	mov	dh,00h		; head number (0-n)
	push	cs
	pop	es
	mov	bx,buffer
	int	13h

	mov	ax,4C00h	;Exit
	int	21h

buffer	rb	100h


В общем ты забыл dh :)


Дата: Июн 19, 2004 13:10:24

Uri
С первым вопросом я разобрался. Спасибо.
А вот почему прочитать дальше первого трека невыходит. Я не понимаю.В AH возвращается код ошибки E7.Самое удевительное в досе все нармально работает ,а как загоняю в бут сектор так выдает ошибку.


Дата: Июн 19, 2004 15:05:17

Все разобрался.Оказывается спутал сектора и дорожки.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.040