OSDev http://osdev.su/ |
|
GNU Assebmler и бут сектор http://osdev.su/viewtopic.php?f=6&t=109 |
Страница 1 из 1 |
Автор: | enrix [ 18 авг 2007, 18:09 ] |
Заголовок сообщения: | GNU Assebmler и бут сектор |
Помогите разрулить след. функцию (самописанную) и её использование Код: //cl - start seg, al - segs, ch - cylinder, es:di - dest read_cyl: pusha push %ax push %es push $TEMP_SECTOR pop %es xor %dx,%dx xor %bx,%bx mov $0x02,%ah int $0x13 //:On diskette reads, this function stops a multi-sector read at //:the last sector in a track. //Example all read cl = 10, al = 9, sum of read add %al,%cl dec %cl cmp $18,%cl jne copy_block imul $0x70,%ax,%es mov $18,%cl mov $1,%al mov $0x02,%ah int $0x13 lDebug: jmp lDebug copy_block: pop %es mov $TEMP_SECTOR,%ax mov %ax,%ds xor %si,%si pop %cx xor %ch,%ch imul $0x80,%cx cld rep movsd popa ret И вот использование Код: /////////////////////////////////// // //Read cylinders of boot device // /////////////////////////////////// //Copy block from 0x500 to 0x10000-0x92800 //(522Kbytes) 512(bytes)*18(sectors)*58(cylinders)-1(Boot Sector) xor %ch,%ch //Read first cylinder mov $SYS_SEG,%ax mov %ax,%es xor %di,%di mov $0x02,%cl mov $17,%al call read_cyl mov $SYS_SEG,%ax mov $0x01,%cl mov $0x12,%al xor %dx,%dx read_cyls: add $0x900,%ax mov %ax,%es call read_cyl inc %dx cmp $CYLINDERS,%dx jne read_cyls //Go to protected mode Прошу не ругать строго. Я тока перешел на Линукс и тем более тока начал использовать gas. |
Автор: | enrix [ 18 авг 2007, 18:19 ] |
Заголовок сообщения: | Re: GNU Assebmler и бут сектор |
Пока с бубном попрыгаю. может поможет |
Автор: | sadko [ 18 авг 2007, 18:27 ] |
Заголовок сообщения: | Re: GNU Assebmler и бут сектор |
Ну, мультисекторное чтение при помощи дискового сервиса, скорее всего для флоппа. Вот тут усё повисает: Код: lDebug: jmp lDebug Потом после повисания вроде бы идёт код копирования прочитанного по адресу TMP_SECTOR. Но зачем? |
Автор: | enrix [ 18 авг 2007, 18:36 ] |
Заголовок сообщения: | Re: GNU Assebmler и бут сектор |
Ну читать можно в первые 64Кб вроде// и поэтому надо скопить в темп/ затем оттуда копировать в реальный буфер А на этот вис не обращайте внимания// это я для отладки тормозил тут чтобы регистры посмотреть |
Автор: | sadko [ 20 авг 2007, 18:06 ] |
Заголовок сообщения: | Re: GNU Assebmler и бут сектор |
Проблема оказалась гораздо проще, чем казалась :). Просто не хватало нормальной доки по дисковому сервису BIOS ;). |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |