Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

создание boot загрузчика(код или boot сектор?)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> создание boot загрузчика(код или boot сектор?)
Имя
Сообщение << Старые топики   Новые топики >>
создание boot загрузчика(код или boot сектор?) - 2007-08-11 02:58:20.006666   
mindstorm

Сообщений: 200
Оценки: 0
Присоединился: 2005-08-25 20:55:34
доработал один из бесплатных загрузчиков ос до компилируемого состояния(респект JTG за вылавливание последнего бага компиляции ) но при загрузки с дискеты
bios находит загрузочный сектор но экран остаётся пустым толи неверно записывается бинарник в boot сектор дискеты(пробовал через partcopy, cp boot.bin /dev/fd0) или же код загрузчика тк я с ассамблером только начинаю то мог и незаметить петлю в коде если кто может прозьба проверить на валидность код
section .text BITS 16 org 0x7c00 %define CTR 10 %define MRE 5 entry: cli ; mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, 0x7c00 sti mov ax, 0x07c0 mov ds, ax mov ax, 0x9000 mov es, ax xor si, si xor di, di mov cx, 128 rep movsd jmp 0x9000:start begin: mov ax, cs mov ds, ax mov ss, ax mov si, msg_startup call ps mov di, 1 mov ax, 0x290 xor bx, bx .loop: mov cx, 0x50 mov es, cx push di shr di, 1 setc dh mov cx, di xchg cl, ch pop di cmp di, CTR je .quit call r_cyl pusha push ds mov cx, 0x50 mov ds, cx mov es, ax xor di, di xor si, si mov cx, 0x2400 rep movsb pop ds popa inc di add ax, 0x240 jmp short .loop .quit: mov ax, 0x50 mov es, ax mov bx, 0 mov ch, 0 mov dh, 0 call r_cyl jmp 0x0000:0x0700 r_cyl: mov [err], byte 0 pusha mov si, msg_cyl call ps mov ah, ch call pe mov si, msg_head call ps mov ah, dh call pe mov si, msg_crlf call ps popa pusha start: mov ah, 0x02 mov al, 18 mov cl, 1 int 0x13 jc r_err popa ret err: db 0 r_err: inc byte [err] mov si, msg_err call ps call pe mov si, msg_crlf call ps cmp byte [err], MRE jl start mov si, msg_end call ps hlt jmp short $ table: db "0123456789ABCDEF" pe: pusha xor bx, bx mov bl, ah and bl, 11110000b shr bl, 4 mov al, [table+bx] call pc mov bl, ah and bl, 00001111b mov al, [table+bx] call pc popa ret pc: pusha mov ah, 0x0E int 0x10 popa ret ps: pusha .loop: lodsb test al, al jz .quit mov ah, 0x0e int 0x10 jmp short .loop .quit: popa ret msg_startup: db "OS loading...", 0x0A, 0x0D, 0 msg_cyl: db "Cylinder:", 0 msg_head: db ", head:",0 msg_err: db "Error! Code of it:",0 msg_end: db "Errors while reading",0x0A,0x0D, "Reboot the computer, please", 0 msg_crlf: db 0x0A, 0x0D,0 TIMES 510 - ($-$$) db 0 db 0xAA, 0x55 incbin 'boot2.bin' ps boot2.bin файл переводящий проц в защищённый режим и передающий управление на ядро, исспользовался компилятор nasm есесно с параметром -fbin
Post #: 1
RE: создание boot загрузчика(код или boot сектор?) - 2007-08-11 21:47:01.523333   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
я делал как… я брал dosbox, собранный с отладкой, и грузился с образа дискеты в режиме отладки и трейсил. всё сразу становилось ясно.
Post #: 2
RE: создание boot загрузчика(код или boot сектор?) - 2007-08-11 22:40:48.396666   
mindstorm

Сообщений: 200
Оценки: 0
Присоединился: 2005-08-25 20:55:34
ок щас проверю версия dosbox значения не имеет?(может полноценно рабочая только одна верся?)
Post #: 3
RE: создание boot загрузчика(код или boot сектор?) - 2007-08-11 23:55:52.250000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
версия без разницы. главное чтоб с отладкой.
Post #: 4
RE: создание boot загрузчика(код или boot сектор?) - 2007-08-12 15:57:49.996666   
furiousangel

Сообщений: 1116
Оценки: 0
Присоединился: 2005-05-28 06:31:47
Попробуй копировать загрузчик так: dd if=boot.bin of=/dev/fd0 bs=size count=1 , где size равен длине загрузчика в байтах
Post #: 5
Страниц:  [1]
Все форумы >> [Прочее] >> создание boot загрузчика(код или boot сектор?)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.