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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2011, 16:32   #1
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию Продолжение "Создания ОС".

Всем здравствуйте!
Не могу разобраться с тем что надо дальше сделать и как это сделать..

1.Сделал загрузчик, который грузиться по адресу 7с00 и туда передается управление.
2.Как я понимаю надо что бы загрузчик загрузил некие данные с адреса 513+, по адресу 7е00, и передал туда управление, то есть загрузил само ядро с флешки в память и передал ему управление. НО я не понимаю как это все должно происходить.. допустим надо ли загружать таблицу дескрипоторов, переходим в PM, а главное зачем это надо или не надо делать.. видел кучу разных исходников, но не понимаю зачем делать то или иное.

мне нужно сделать ядро которое выведет на экран по нажатию клавиши что т, и по нажатию другой выключит комп, что такое например..

еще не понимаю как выключить комп по нажатию клавиши.. вообще не знаю как выключить комп.. читал где то про прерывание 15, но толком ничего не нашел..

Ребята помогите.


_____________________
Спасибо за потраченное время.
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 07.10.2011, 16:40   #2
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

ну что бы твое ядро заработало, нужно позаботится о переназначении регистров на новые значения, все зависит от того куда ты грузить ядро собрался... А грузить с флешки можешь что угодно, либо тока ядро, либо всю флешку... все от желания и фантазии зависит.
devote вне форума Ответить с цитированием
Старый 07.10.2011, 16:56   #3
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

devote, что за перенаправление регистров ?

смотрите..
загрузчик мой, записан в бут сектор флешки..
когда комп вкл. этот бут сектор грузится в память по адресу 7с00..

сейчас мне нужно реализовать, чтобы этот загрузчик загрузил с флешки мое ядро (которое находиться по адресу 512+), в память по адресу 7е00, и как я понимаю методом LBA, и передал управление ядру, а ядро уже будет выполнять то что мне надо.. то есть и будет самой ОС.
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 07.10.2011, 16:59   #4
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

Цитата:
Сообщение от asmars Посмотреть сообщение
devote, что за перенаправление регистров ?
не перенаправление, а переназначение.
Цитата:
Сообщение от asmars Посмотреть сообщение
смотрите..
загрузчик мой, записан в бут сектор флешки..
когда комп вкл. этот бут сектор грузится в память по адресу 7с00..

сейчас мне нужно реализовать, чтобы этот загрузчик загрузил с флешки мое ядро (которое находиться по адресу 512+), в память по адресу 7е00, и как я понимаю методом LBA, и передал управление ядру, а ядро уже будет выполнять то что мне надо.. то есть и будет самой ОС.
Ну дык и кто мешает загрузить по адресу как вы говорите 0000:7e00 or 07e0:0000. И передать туда управление, сделать far прыжок. А в ядре перед началом работы переназначить основные регистры данных на нужные сегменты. И уж потом работать со всем остальным.
devote вне форума Ответить с цитированием
Старый 07.10.2011, 17:15   #5
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

а что адрес 0000:7e00 = 07e0:0000 ? или как ?

переназначить регистры это..
mov ax, (память по котрой расположены данные)
mov ds,ax

типу такого?
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 07.10.2011, 17:22   #6
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

Цитата:
Сообщение от asmars Посмотреть сообщение
а что адрес 0000:7e00 = 07e0:0000 ? или как ?
Да
Цитата:
Сообщение от asmars Посмотреть сообщение
переназначить регистры это..
mov ax, (память по котрой расположены данные)
mov ds,ax

типу такого?
ну примерно так нужно начать писать ядро:
Код:
	use16
	ORG 0x0

main:
	mov  ax,0x7e0
	mov  es,ax
	mov  ds,ax

	mov  ax,0x17e0
	mov  ss,ax
	mov  sp,0xffff
	xor  bp,bp
devote вне форума Ответить с цитированием
Старый 07.10.2011, 18:15   #7
asmars
Форумчанин
 
Аватар для asmars
 
Регистрация: 28.05.2011
Сообщений: 309
По умолчанию

скажите, а как выключить комп?

и если можно посоветуйте почитать что то..
что бы понимать это все..
Спеши медленно.
asmars вне форума Ответить с цитированием
Старый 07.10.2011, 18:43   #8
devote
Пользователь
 
Регистрация: 06.10.2011
Сообщений: 38
По умолчанию

Цитата:
Сообщение от asmars Посмотреть сообщение
скажите, а как выключить комп?

и если можно посоветуйте почитать что то..
что бы понимать это все..
Ну как выключить комп не совсем помню, вроде что-то было так:
Код:
mov   ax , 0xfe
out   0x64,al
либо так:
Код:
mov   ax , 0xf0
out   0x64,al
Хотя перед выключением как правило нужно делать подготовку, сбросить хард, тоесть отправить на парковку, сбросить некоторые другие устройства.. а уж потом отправлять на выкл.

А насчет почитать, даже не знаю что посоветовать.
devote вне форума Ответить с цитированием
Старый 08.10.2011, 02:08   #9
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Ты бы сначала почитал какую-то книжку по архитектуре ia32, половина вопросов бы сразу отпала.

1) Грузить продолжение загрузчика не обязательно по адресу 7e00 - можно почти куда угодно, лишь бы не затереть системные области (ниже 1000h и выше a0000h обычно, но верхняя граница может отличаться);

2) Код, нужный для перехода в защищенный режим, скорее всего не поместится в загрузочный сектор. Потому он должен быть (если нужен) в той части, которая подгружается с диска позже.

3) Для выключения компьютера нужно обратиться к сервисам acpi (ну или устаревшего apm, если bios его еще поддерживает). А для этого, очевидно, нужно почитать спецификацию acpi (можно конечно нагуглить пример и скопировать его без понимания того, как оно работает, но раз уж ты собрался писать ос - стОит вначале разобраться со всем досконально).
Son Of Pain вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Автоматическое сохранение + Печать. Продолжение темы "Перенос данных из Excel в Word" The_Andrei Microsoft Office Word 15 23.06.2009 23:46
Нужны люди для создания "бродилки" !!!!!! Mb666 Gamedev - cоздание игр: Unity, OpenGL, DirectX 16 10.12.2007 14:04