Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2020, 09:10   #1
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
Вопрос Как записать загрузочный сектор на жесткий диск? (FASM)

Здравствуйте форумчане, возник вопрос, написал я например загрузчик, а можно ли как то его записать на жесткий диск как это делают все установщики ОС? Или как хотя бы скопировать .bin образ на жесткий диск методом FASM?
TheReactiveMouse вне форума Ответить с цитированием
Старый 27.10.2020, 12:43   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

1) Используйте для отладки виртуальную машину.
2) Все современные ОС имеют защиту чтобы кто непопадя в загрузочный сектор не писал.
Поэтому найти готовую программу будет по проще.
А так отмантировать жесткий диск что отключит защиту и после открыть его как файл.
"\\.\PhysicalDrive0", и да ещё нужны права админа.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 27.10.2020, 13:30   #3
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
По умолчанию

Pavia, А где можно найти примеры такого? 16 Бит режим обязателен, безопасный/реальный - не важно! Я хочу изучить + Начать писать что то типа своего DOS только с своими штучками.Пишу не под DOS/Win, пишу в 16 бит режиме

Последний раз редактировалось TheReactiveMouse; 27.10.2020 в 13:59.
TheReactiveMouse вне форума Ответить с цитированием
Старый 30.10.2020, 12:35   #4
Argogo
Пользователь
 
Регистрация: 28.03.2013
Сообщений: 22
По умолчанию

Цитата:
Сообщение от TheReactiveMouse Посмотреть сообщение
16 Бит режим обязателен, безопасный/реальный - не важно! Я хочу изучить + Начать писать что то типа своего DOS только с своими штучками.Пишу не под DOS/Win, пишу в 16 бит режиме
Тогда можно использовать Int 13/AH=03h или Int 13/AH=43h (для второго необходимо сперва проверить поддержку при помощи Int 13/AH=41h/BX=55AAh)
Argogo вне форума Ответить с цитированием
Старый 01.11.2020, 08:29   #5
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Argogo Посмотреть сообщение
Тогда можно использовать Int 13/AH=03h или Int 13/AH=43h (для второго необходимо сперва проверить поддержку при помощи Int 13/AH=41h/BX=55AAh)
А можно примером, сегодня попытался записать, но записывается какой то мусор либо записывается не туда куда надо.
TheReactiveMouse вне форума Ответить с цитированием
Старый 01.11.2020, 19:55   #6
Argogo
Пользователь
 
Регистрация: 28.03.2013
Сообщений: 22
По умолчанию

Цитата:
Сообщение от TheReactiveMouse Посмотреть сообщение
А можно примером
Начни с чтения. Как получиться - поменяешь номер функции.
(код для MASM/TASM. Как там FASM обрабатывает "offset" мне не ведомо.)
Код:
                        push    ds
                        pop     es			; делаем так, чтобы ES указывал на наш сегмент данных
                        mov     bx, offset aBuffer	; в сочетании с ES будет указывать на буфер
                        mov     dx, 80h			; номер головки - 0 (dh), номер диcка - 80h (dl)
                        mov     cx, 1			; номер цилиндра - 0, номер сектора - 1
                        mov     ax, 201h		; чтение (ah=2) одного сектора (al=1)
                        int     13h
                        jc      @@bioserr

Последний раз редактировалось Argogo; 01.11.2020 в 20:01.
Argogo вне форума Ответить с цитированием
Старый 02.11.2020, 06:32   #7
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Argogo Посмотреть сообщение
Начни с чтения. Как получиться - поменяешь номер функции.
(код для MASM/TASM. Как там FASM обрабатывает "offset" мне не ведомо.)
Код:
                        push    ds
                        pop     es			; делаем так, чтобы ES указывал на наш сегмент данных
                        mov     bx, offset aBuffer	; в сочетании с ES будет указывать на буфер
                        mov     dx, 80h			; номер головки - 0 (dh), номер диcка - 80h (dl)
                        mov     cx, 1			; номер цилиндра - 0, номер сектора - 1
                        mov     ax, 201h		; чтение (ah=2) одного сектора (al=1)
                        int     13h
                        jc      @@bioserr
Попробую.
TheReactiveMouse вне форума Ответить с цитированием
Старый 02.11.2020, 07:03   #8
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
По умолчанию

Цитата:
Сообщение от TheReactiveMouse Посмотреть сообщение
Попробую.
Вроде-б как получилось, но мне важна запись именно, что б в загрузочном секторе(7C00h) был мой загрузчик, а то вроде пишу пишу ось и задумался а как написать установщик самый простой, в итоге залип тут на пару дней
TheReactiveMouse вне форума Ответить с цитированием
Старый 02.11.2020, 08:02   #9
TheReactiveMouse
Пользователь
 
Регистрация: 02.10.2020
Сообщений: 17
По умолчанию

Argogo, https://ibb.co/XZD93Cv Написал как то бут сектор, но Virtualbox его не понимает как и QEMU.Что не так?
TheReactiveMouse вне форума Ответить с цитированием
Старый 02.11.2020, 08:35   #10
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Всё не так.
https://osdev.fandom.com/ru/wiki/%D0...D0%B8%D0%BA%3F
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение\Запись в загрузочный сектор AntonCH Помощь студентам 3 29.11.2017 14:39
записать свой загрузочный сектор на флешку MetR Помощь студентам 0 10.12.2011 18:15
Загрузочный диск ХР avare65 Windows 4 03.12.2009 15:36
загрузочный диск Maxxx 83 Операционные системы общие вопросы 6 10.07.2009 13:31
ЗАПИСЬ В ЗАГРУЗОЧНЫЙ СЕКТОР ERASERROR Общие вопросы Delphi 6 15.01.2008 23:27