Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
MBR... 09.02.02 22:28
Автор: PS <PS> Статус: Elderman Отредактировано 09.02.02 23:00 Количество правок: 1
|
Как загрузчик написать ?
Создал бинарник (as86 -b t1.b t1.s). Загнал его на дискету (dd if=t1.b of=/dev/fd0). Гружусь с дискеты... опс... все виснет.
Код простейший - типа такого:
mov ax, 0x0013
int 10
дальше очистка экрана
jmp start
т.е. если бы работало - увидел бы.
Всего 11ть байт.
Что не верно ?
|
 |
MBR... 09.02.02 23:14
Автор: Chingachguk <Chingachguk> Статус: Member Отредактировано 09.02.02 23:17 Количество правок: 1
|
У кода MBR есть некоторые особенности, одна из которых - загрузка его кода BIOS-ом в память 0000:7c00h. Ниже пример начала загрузчика MBR(я дизассемблировал его, он от win98):
; start at 0000:7c00h
xor ax,ax ; ax:=0
mov ss,ax ; set stack
mov sp,7c00h ; to 0000:7c00h
sti ; Interrupt enable
push ax
pop es ; es:=0000h
push ax
pop ds ; ds:=0000h
cld ; for move self code
mov si,7c1bh ; from 1bh at begin of MBR
mov di,061bh ; to 0000:061bh (before initial position)
push ax
push di ; for retf to moving code
mov cx,01e5h ; 512bytes-01bh
rep movsb
retf ; jmp to copyed code
; continue at 0000:061b
mov si,07beh ; look at disk parametrs = offset params Area
mov cl,04 ; 4 blocks, ind(si-07beh) = 0
@FindWorkDisk: ; 0620h
cmp ds:[si],ch ; with zero
jl @DiskFound ; if Disk number > 80h
jnz @StrangeDisk
Если будут какие конкретные вопросы - пиши, отвечу Ж))).
Хочешь ли ты сцепить его с родным загрузчиком ?
Лучше приведи пример ВСЕГО своего кода.
|
 |  |
У меня ошибка была... 10.02.02 00:53
Автор: PS <PS> Статус: Elderman
|
Всего навсего решетку поставить забыл.
Вместо
mov ax, 0x0013
надо было писать
mov ax, #0x0013
Теперь вижу, что все работает :)
Спасибо за отклик.
|
|
|