 |
Ассемблер в примерах - Чтение 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
|  |