Вы здесь: HomeСтатьиЗаписать загрузочный сектор

Записать загрузочный сектор

Хочу представить Вам один из  способов как можно записать загрузочный сектор на дискете(или на диске)  на которой файловая система FAT12 с помощью ассемблера .  

При включение ПК загружается биос, после выполнения своих операций он начинает читать первый сектор запоминающего устройства (диска, дискеты либо другого устройства) , записывает его в оперативную память и передает управление. В первом секторе также храниться информация о диске(нужно не повредить эту запись).  В FAT12 сперва идет команда перехода на часть с кодом, затем идет информация о файловой системе все это дело занимает 62 байта все оставшиеся наше(можно использовать для любых целей)!  Загрузочный сектор находиться на 0й стороне 0й дорожке и в первом секторе. Пример кода на ассемблере для  NASM :

 SECTION .code

org 100h     ;генерируем СОМ файл, загружаемый с 0x10

mov ah,2   ;функция чтения

 

mov al,1        ;кол секторов 

mov bx,buf   ;буфер куда читаем

mov ch,0      ;номер дорожки

mov cl,1       ;номер сектора

mov dh,0      ;сторона головки

mov dl,0        ;сам дисковод А=0 B=1

int 13h

;вписуем сначала джамп а потом затем идем на +1а3 и там наш код пишем

 mov si,buf

 mov ah,0ebh

 mov [si],ah

 mov ah,03ch

 mov [si+1],ah

 mov ah,90h

 mov [si+2],ah

 

 mov cx,1b0h

 mov si,buf

 add si,03eh

 mov bx,0

    mgo2:

mov al,byte [fun+bx]

mov [si],al

inc si

inc bx

loop mgo2

    ;вписуем сектор

 mov ah,3        ;функция записи

 mov al,1         ;кол секторов 

 mov bx,buf      ;буфер куда читаем

 mov ch,0         ;номер дорожки

 mov cl,1          ;номер сектора

 mov dh,0         ;сторона головки

 mov dl,0          ;сам дисковод А=0 B=1

 int 13h

;==========

mov ah,0x4C   ;эта функция завершает программу     

mov al,0            ;код возврата 0     

int 0x21             ;вызываем ядро операционной системы

 

SECTION .data    

     

buf times 512 db 1  ; буфер для хранения информации считанной с сектора

 

fun:

; код который выполниться при загрузке первого сектора

endfun:

jmp endfun

 

Желаю Вам успехов! До встречи на нашем сайте ассемблера.

Добавить комментарий


Защитный код
Обновить