Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Чтение MBR

Вопрос:
Подскажите, пожалуйста, как в отладчике AFDPRO можно увидеть MBR. У меня никак не получается. Я обнулил все сегментные регистры, кроме SS, дал смещение 0000h, но там что-то совсем другое. По адресу 01BEh нет 80h - признака активности раздела. Даже по адресу 01FE - 01FF нет сигнатуры 55h AAh!!! Понятно, что не там смотрю. Но тогда, где нужно смотреть? И почему по адресу 0000h:0000h начинается не MBR?

Ответ:
Вы смотрите физическую память, MBR там никогда не было, там расположена таблица прерываний.
Чтобы посмотреть MBR - Вам нужно её загрузить в память с помощью команды rd 0,a,0,0,1,1
rd - команда читать диск
0 - адрес куда читать
a - имя дисковода
0 - номер головки
0 - номер дорожки
1 - номер сектора
1 - количество секторов
Я эксперементировал с загрузочной дискетой MS-DOS 6.22, WinXP к MBR жесткого диска не пускает.
Читалка MBR:
MASM;IDEAL or MASM
MODEL small
stack 50
.186
DATASEG
flhndl		dw	?
fname		db	'mbr_dump.com',0
buff		db	512 dup (?)
CODESEG
start:		mov	ax,@DATA
			mov	ds,ax		
			mov	es,ax;		
			mov	ah,3ch		
			xor	cx,cx		
			mov	dx,offset fname		
			int	21h		
			mov	flhndl,ax		
;			mov	ax,0202h		
			mov	bx,offset buff		
			mov	cx,01		
			mov	dx,80h		
			int	13h		
			jc	exit;		
			mov	ah,40h		
			mov	bx,flhndl		
			mov	cx,512		
			mov	dx,offset buff		
			int	21h
			;
exit:		mov	ah,3eh		
			mov	bx,flhndl		
			int	21h
;		
			mov	ah,4ch
			int	21h
;
lodsb
mov al,ds:[si]
inc si
stosb
mov es:[di],al
inc di
	end	start

   Вперёд
   Содержание