Хочу представить Вам один из способов как можно записать загрузочный сектор на дискете(или на диске) на которой файловая система 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
Желаю Вам успехов! До встречи на нашем сайте ассемблера.
Записать загрузочный сектор: 1 комментарий