SiteSearch
logo

Документация и статьи по Ассемблеру, Reversing:

Внимание, в этой статье я подразумеваю, что основы знаний ассемблера и работы с

компьютером и fasm у вас имеются. Если нет, то читайте статью ASM в 12-ом номере

FT, или любые другие источники.

 

Если что-либо в статье непонятно, пишите на mail: skif_q[sobak]mail.ru

или в форум. Обязательно отвечу на любые вопросы.

 

 

Все программы использованные в данной статье вы найдете на http://ass3mbler.narod.ru

fasm можно взять на http://www.flatassembler.org

 

 

 

В поисках Силы.

Целью написания ОС, является не создание новой СуперОС, а изучение "высокого исскуства

работы на нижнем уровне" :)

Я постараюсь в своих статьях охватить наиболее широкое количество материала, особенно о

защищенном режиме, такое как: распределение памяти(gdt), прерывания(idt),

многозадачность (tss), а так-же многие другие.

 

В этой статье мы загрузим вторичный загрузчик, и перейдем на него.

 

Мы имеем минимальный загрузчик, который ничего у нас не делает.

Нам надо:

1 Загрузить вторичный загрузчик.

2 Перейти на него так чтобы он работал. :)

 

Загружать мы будем его используя 2-ю функцию 0x13-го прерывания.

 

;DL - номер диска (носителя)

;DH - номер головки

;CH - номер дорожки

;CL - номер сектора

;AL - количество секторов (в сумме не более одной дорожки)

;ES:BX - адрес буфера в памяти, в который будут считаны данные

 

Немного о дискетах:

В дисководе флоппи дисков имеется 2 головки (т.е. мы можем читать/писать

с верхней и нижней стороны дискеты), на дискете имеется 80 дорожек, на каждой

дорожке - 18 секторов. Поэтому адрес на fdd обычно пишется вот так x:yy:zz

где x - номер головки, yy - дорожки, zz - сектора.

cм. рисунок: http://ass3mbler.narod.ru/IMG00001.GIF

 

Сектора считаются с еденицы. Головки и дорожки - с нуля.

Размер вторичного загрузчика ограничим пока 2048 байтами.

 

Во избежание глюков, org надо писать выше кода, иначе times неправильно

высчитывает размер. см ниже.

 

; -------------------------------------------

 

org 07C00h

main:

jmp far 00:entry1

 

entry1:

 cli

 mov ax,cs

 mov ds,ax

 sti

 

 mov ah,14

 xor bl,bl

 

 mov bx,tex1

.strt:

 mov al,[bx]

 

 test al,al

 jz .exit_

 

 inc bx

 int 10h

 jmp .strt

 

.exit_:

 

 mov ax,0x0860

 mov es,ax ; Cегмент куда загружать будем

 

 sub dx,dx

 sub ch,ch

   ; вторичный загрузчик с 0:0:2 - 0:0:5

 mov cl,2 ; будет в памяти с 0x08600

 mov al,4

 sub bx,bx ; 0x0860:00

 mov ah,2

 int 0x13

 

 

 

 

 

  jmp far 0:0x08600 ; прыгаем на него

 

 

 tex1 db 'First Loader loaded',0Dh,0

 

 

times 510-($-main) db 0

db 0xAA, 0x55

 

; ---------------------------------------------------

; second loader

; Вторичный загрузчик

 

org 0x8600

sl:

 cli

 mov ax,cs

 mov ds,ax

 sti

 

; вывод сообщения.

 

 mov ah,14

 xor bl,bl

 

 mov bx,tex

.strt:

 mov al,[bx]

 

 test al,al

 jz .exit_

 

 inc bx

 int 10h

 jmp .strt

 

 

.exit_:

 cli

 jmp $

 

 tex db 0Ah,'Second Loader is Loaded',0Dh,0

 

times 2046-($-sl) db 0

db 0xAA, 0x55

 

; -------------------------------------------

 

Прим из fasm:

 

   Локальные метки:

 

       sigma:

       .alpha:                      ; локальная метка (1)

             jmp .alpha             ; пеpеход на (1)

       omega:

       .alpha:                      ; локальная метка (2)

             jmp .alpha             ; пеpеход на (2)

             jmp sigma.alpha        ; пеpеход на (1)

            

            

 

 

 

 

Вторичный загрузчик пока ничего не делает, только выводит сообщение что он загружен.

 

Компилируем получившийся файл, и с помощью rawrite записываем его на дискету,

перезагружаемся. Можно просто подключить его как дискету в vmware или

Virtual PC.

 

На все возникшие у тебя вопросы отвечу незамедлительно, пиши на mail: skif_q[myy]mail.ru

или в forum.

 

Skif_Q.

 

np: Dj Toxic - Its Killing Me (Original Extended Mix)

 

[Главная] [Документация] [Теория] [Практика] [Рассылки] [Книги] [Исходники] [Reversing] [Друзья] [Архив] [Диски] [Новости]

Посещаемость сайта такова:
На деревню дедушке

Hosted by uCoz

Rambler's Top100
РЕГИСТРАТУРА.РУ: бесплатная автоматическая регистрация в каталогах ссылок и поисковых машинах, проведение рекламных кампаний в Интернете, привлечение на сайт целевых посетителей.

Hosted by uCoz