Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11631
Последний выпуск: 19.06.2015

По созданию ОС

78K
10 марта 2013 года
GCSoft
73 / / 10.03.2013
Помогите пожалуйста. Написал консоль на FASM, и нужно, чтобы загрузчик запускал его! Как лучше всего его оформить? Помогите нужно срочно! Запускать эту ОСь без разницы с диска или с дискеты. Еще нужно вот одно-как запускать COM программы из программы (В DOS) на FASM? Буду благодарен!
Страницы:
78K
10 марта 2013 года
GCSoft
73 / / 10.03.2013
и если можно запуск COM программ ввиде макроса.
376
11 марта 2013 года
CassandraDied
763 / / 24.05.2012
Цитата:
Написал консоль на FASM


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

Цитата:
нужно, чтобы загрузчик запускал его


Это невозможно, загрузчик может только передавать управление далее, для загрузки ОС, которая управляет ресурсами. В том числе и консолью.
Что такое "В DOS"?
А в сабже вообще говорится о создании ОС, так что неясно, GCSoft, что тебе конкретно нужно. Если я угадал и нужно в какой-то ОС запустить консольну программу формата COM, хоть с флешки, хоть с СиДи, то можно попробовать запуститься с KolibriOS. Она вся на FASM написана.

1
11 марта 2013 года
kot_
7.3K / / 20.01.2000
ТС сделал серьезную заявку - как минимум его вопрос можно рассматривать на конкурс - Десятка самых идиотских вопросов года. При этом весьма велики шансы, что он будет одним из лидеров, хотя конечно конкуренция сумасшедшая. Поэтому вероятно тут просто бессмысленно что либо уточнять. Надо просто наслаждаться видом чистой идиотии - незамутненной ничем, даже гуглем.
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Вот именно нужно, чтобы загрузчик передавал управление COM программе. А насчет в DOS я сказал, потому что на других форумах предлагают Window-ский код.И мне не нужно использовать сторонних ОС. Дело в том, что у меня коммандный интерпретатор является и ядром. Чтобы его запустить нужно передать ему управление с загрузчика. Весь интернет облазил нефига нет(
376
11 марта 2013 года
CassandraDied
763 / / 24.05.2012
Если твой интерпретатор — ядро, то при чём тут вообще какая-то ОС? Никакого кода вообще не нужно, правится несколько адресов в загрузчикеVBR и потом на этот адрес передаётся управление. Тебе нужно выбрать загрузчик?
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
да пожалуйста помогите! Дайте код загрузчика! Если можно. Если что на FASM. Пожалуйста!
1
11 марта 2013 года
kot_
7.3K / / 20.01.2000
Цитата: GCSoft
да пожалуйста помогите! Дайте код загрузчика! Если можно. Если что на FASM. Пожалуйста!


тебе сюда

78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
kot_, извини, но ты идиот. Даже не обижайся, но ты полный идиот! Если нехрена не можешь предложить, нахрен ты пришел? Если нихрена не знаешь, нахрен ты пришел! Еслиб знал, помог! Но ты просто идиот!
376
11 марта 2013 года
CassandraDied
763 / / 24.05.2012
FreeLoader, например.
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
а есть на FASM? Для нубов?)
20K
11 марта 2013 года
ellor!
198 / / 24.05.2012
Цитата: GCSoft
kot_, извини, но ты идиот. Даже не обижайся, но ты полный идиот! Если нехрена не можешь предложить, нахрен ты пришел? Если нихрена не знаешь, нахрен ты пришел! Еслиб знал, помог! Но ты просто идиот!


Почти четырёхстопный хорей. Также стоит отметить использование автором таких стилистических и риторических фигур речи, как амплификация и параллелизм. И, безусловно, чувства автора ярко передаюся риторическим восклицанием.

78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Вот есть у меня бут, но он выдает ошибку:
USE16
org 0x7C00
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
int 0x10
mov si, msg_Load
call print_string_16
Begin3:
mov si,filename ;‘¬?e?­?? ?¬?­? a ©« 
mov cx,12 ;„«?­  aaa®??
repe cmpsb ;‘a ?­?? ?¬ aaa®??
test cx,cx
je endbegin ;…a«? a ?­e
add di,cx ;?a®??ai?¬ a«?¤aie?©
add di,32-12 ;i«?¬?­a
cmp di,14*512 ;?a®??a?  ­  ?®­?? ?®a­i
jmp filenotfound ;…a«? ?®«ie? - a ©« ­? ­ ©¤?­
jmp Begin3 ;…a«? ­?a ?­e
endbegin:
mov dx,[di+14] ;‚ dx ­®¬Ґа Є«пбвҐа  д ©« 
xor di,di ;‘¬ҐйҐ­ЁҐ
push KernelSeg
pop es ;‘ҐЈ¬Ґ­в
filenotfound:
int 0x10
mov si, err
call print_string_16
print_string_16:
pusha
mov ah, 0x0E
.repeat:
lodsb
cmp al, 0
je .done
int 0x10
jmp short .repeat

.done:
popa
ret

msg_Load db "Hello World!", 0
filename db 'shell.com'
err db 'Error',13,10,'$'
KernelSeg = 0340h ;‘ҐЈ¬Ґ­в­л©  ¤аҐб п¤а 
mov ah,0
int 16h
times 510-$+$$ db 0

sign dw 0xAA55

times 512-$+$$ db 0
При запуске выдает ошибку. Образ ISO, ВМ VirtualBOX. Что здесь не так?
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Цитата: ellor!
Цитата: GCSoft
kot_, извини, но ты идиот. Даже не обижайся, но ты полный идиот! Если нехрена не можешь предложить, нахрен ты пришел? Если нихрена не знаешь, нахрен ты пришел! Еслиб знал, помог! Но ты просто идиот!


Почти четырёхстопный хорей. Также стоит отметить использование автором таких стилистических и риторических фигур речи, как амплификация и параллелизм. И, безусловно, чувства автора ярко передаюся риторическим восклицанием.

Да блин это вместо как помочь просто издеваться! А вопрос то не простой!

376
11 марта 2013 года
CassandraDied
763 / / 24.05.2012
Вопрос простой, ты просто не в ту сторону копаешь.
Читни это, потом это, а потом вот это. И, — кто знает, — может, после этого тебе наша помощь и не понадобится.
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
А с кодом что?
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Кто-нибудь может дать работоспособный код загрузчика? Пожалуйста!
323
11 марта 2013 года
P*t*
474 / / 15.02.2007
Я думаю, что полезнее всего вам будет не искать готовый код, а полностью разобраться в вопросе и написать свой.
В дополнение к данным вам ссылкам:
О загрузчике - http://www.codenet.ru/progr/asm/boot-loader.php
О прерываниях DOS и BIOS - http://www.codenet.ru/progr/dos/
Логично, что функции DOS в самом загрузчике и в запущенной им программе работать не будут.
Так что все действия по чтению программы с диска загрузчик будет проводить через прерывания BIOS.
Попробуйте для начала написать загрузчик, который просто выводит один символ на экран - чтобы убедиться, что он работает.

А на kot_ не обижайся - он всегда такой. Он просто не любит плохо сформулированные вопросы.
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Код выше, но я не пойму почему он не работает!
323
11 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: GCSoft
Код выше, но я не пойму почему он не работает!



А черт его знает, почему он не работает. Может вы его неправильно в загрузочный сектор записываете, может быть вы ядро не туда записываете, может быть это уже ядро запускается и не работает - причин может быть много. Из того, что вы написали, невозможно ничего узнать.

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

Надо задавать вопрос так:

Цитата:

Я делал вот это по материалам взятым оттуда-то и ожидал получить вот это.
Но произошло вот так.
Тогда я вставил отладочный вывод и выяснил, что вот в этой строчке не происходит записи значения вон туда.
В описании команды говорится, что она делает так, но получается по другому. Посоветуйте, что можно прочитать на эту тему?


И тогда все вам радостно помогут.

78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Был собственно такой код:
use16
org 0x7C00
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
.repeat:
lodsb
cmp al, 0
je .done
int 0x10
jmp short .repeat
.done:
popa
ret

msg db 'Boot Sector Starting.........................[OK]',13,10,'$'
h db 10,13,10,'$'
mov ah,0
int 16h
times 510-$+$$ db 0
sign dw 0xAA55
times 512-$+$$ db 0
Но стоит добавить комманду print
include 'dos.inc'
use16
org 0x7C00
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
int 21
cls
print msg
.repeat:
lodsb
cmp al, 0
je .done
int 0x10
jmp short .repeat
.done:
popa
ret

msg db 'Boot Sector Starting.........................[OK]',13,10,'$'
h db 10,13,10,'$'
mov ah,0
int 16h
times 510-$+$$ db 0
sign dw 0xAA55
times 512-$+$$ db 0
все тупо зависает! Я не могу понять в чем проблема? Макрос Print:
macro print str
{
mov dx,str
mov ah,9
int 21h
}
323
11 марта 2013 года
P*t*
474 / / 15.02.2007
Элементарно.
Я даже вам об этом уже сказал, но вы не обратили внимания, что, кстати говоря, вас плохо характеризует и уменьшает желание помогать.

Вы используете прерывание 21h.
Если заглянуть по ссылке http://www.codenet.ru/progr/dos/ , которую я вам давал, то можно увидеть, что прерывание 21h - это "Сервис DOS".
Совершенно логично, что он никак не может работать, если программа запущена не из DOS.

P.S Для выкладывания исходного кода есть замечательный тег [сode][/сode]
78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Спасибо, но я уже заметил. Какой функцией ее можно заменить? Я знаю что прерывание 10h, но как его написать. Я попробую его описать, но все-таки про передачу управления от загрузчика к COM программе я так и не понял)
323
11 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: GCSoft
Спасибо, но я уже заметил. Какой функцией ее можно заменить? Я знаю что прерывание 10h, но как его написать. Я попробую его описать



Вы сначала попробуйте, а потом спрашивайте. С указанием, что именно не получилось, и вашими размышлениями на эту тему.

Цитата: GCSoft
про передачу управления от загрузчика к COM программе я так и не понял)



Увы, ничем не могу помочь.

78K
11 марта 2013 года
GCSoft
73 / / 10.03.2013
Я испробовал новый макрос, но результат тот же:
 
Код:
macro print str
{
mov ah,0ah
mov al,str
int 10h
}
323
11 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: GCSoft
Я испробовал новый макрос, но результат тот же:



Неужели так сложно прочитать документацию всё по той же ссылке про прерывания DOS и BIOS?

Для функции 0ah

Цитата:

0aH писать символ в текущей позиции курсора
вход: BH = номер видео страницы
AL = записываемый символ
CX = счетчик (сколько экземпляров символа записать)



Эта функция записывает один символ.
В AL записывай сам символ (не указатель на переменную, а код символа)
В BH надо записать 0, в CX 1.

1
12 марта 2013 года
kot_
7.3K / / 20.01.2000
Цитата: P*t*

А на kot_ не обижайся - он всегда такой. Он просто не любит плохо сформулированные вопросы.


как видишь, я редко ошибаюсь - дебилы имеют весьма характерный набор сигнатур и поведенческих характеристик. Поэтому ТС лучше еще раз дать туже ссылку и оставить покоится с миром. И да - на меня можно обижаться, на меня можно не обижаться - мне вобщем то все равно.

323
12 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: kot_

как видишь, я редко ошибаюсь - дебилы имеют весьма характерный набор сигнатур и поведенческих характеристик. Поэтому ТС лучше еще раз дать туже ссылку и оставить покоится с миром. И да - на меня можно обижаться, на меня можно не обижаться - мне вобщем то все равно.



Есть две категории людей с неправильно заданными вопросами.

Есть студенты, которые хотят, чтобы все сделали за них,
а есть школьники, которым интересно что-то сделать, но они не умеют ни пользоваться гуглом, ни читать документацию, ни даже ясно выражать свои мысли.

И если с первой категорией все понятно ("ссылка" укажет что им делать), то у второй еще есть шанс научиться. Я сам когда-то давно относился ко второй категории.

78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Мне нужна помощь. Я создал программу и теперь нужно, чтобы консоль запускала ее. Формат программы COM. Весь интернет облазил, ничего про запуск СОМ не выдает! Вот кто-нибудь хоть ссылкой поделитесь! Буду очень благодарен!
323
12 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: GCSoft
Мне нужна помощь. Я создал программу и теперь нужно, чтобы консоль запускала ее. Формат программы COM. Весь интернет облазил, ничего про запуск СОМ не выдает! Вот кто-нибудь хоть ссылкой поделитесь! Буду очень благодарен!



Вот теперь у меня тоже заканчивается терпение.
С тобой kot_ уже ссылкой поделился. Для такого запроса - самая подходящая ссылка.

А по существу вопроса - надо искать не про запуск, а про описание формата COM. Но там может мозга не хватить.

78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Я пробовал код от FlopOS для запуска COM программы, но он не работает. Он выдает ошибку. Может кто посоветовать информации на эту тему, кроме как описание COM?
20K
12 марта 2013 года
ellor!
198 / / 24.05.2012
1. Найти файл
2. Загрузить его в память
3. Передать управление на его начало
4. ???
5. Выпить чашечку кофе, принять ванну.
78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Цитата: ellor!
1. Найти файл
2. Загрузить его в память
3. Передать управление на его начало
4. ???
5. Выпить чашечку кофе, принять ванну.


Извините конечно, но я не знаю как это осуществить)

323
12 марта 2013 года
P*t*
474 / / 15.02.2007
Цитата: GCSoft
[quote=ellor!;82719]
Извините конечно, но я не знаю как это осуществить)



Извини конечно, но это твои проблемы.

78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Ну блин, почему когда нужно помочь, никто этого не хочет! Это просто сводит с ума! Ну хоть кто-нибудь помогите дейными вещами, а не всякой фигней!
78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Короч, я так понимаю помочь никто адекватно не может. Что ж...
20K
12 марта 2013 года
ellor!
198 / / 24.05.2012
"Не сходите с ума, не сходите! Телефон наугад наберите..."
78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Цитата: ellor!
"Не сходите с ума, не сходите! Телефон наугад наберите..."

Ну вы то помочь можете? Ну кто-нибудь здесь помочь может?

323
12 марта 2013 года
P*t*
474 / / 15.02.2007
А может он тролль?
Как легендарный гудвин.
78K
12 марта 2013 года
GCSoft
73 / / 10.03.2013
Короче идите вы все нахрен!!!! Нихера не могут!!! Сайт:"Все для программиста" (слоган)! На котором сидят сплошником одни дибилы да придурки уебанные!!!!!!!!

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог