Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Что да как происходит при запуске компьютера?


Автор: out51d3r 27.12.2006, 13:14
Ребята, расскажите пожалуйста, что происходит при включении компьютера? Как начинается загрузка ОС? Как работает сам процессор? Да и вообще, что да как происходит???

Заранее, очень вам благодарен.

Вы наверное спросите, почему я создал тему на асме? Потому что он более приближен к железу. И еще бы хотелось увидеть некоторые исходники...

БОЛЬШОЕ СПАСИБО!

Автор: W4FhLF 27.12.2006, 14:05
Вопрос из серии "Как работает компьютер?". Ты конечно можешь получить обрывитсый ответ о том, что происходит при загрузке ОС, если это тебя удовлетворит, то ок. Но чтобы описать полный процесс загрузки ОС(к тому же какой?) знаешь сколько дней придётся печатать? 
Не задавай таких вопросов. Есть книги и литература на эту тему, попробуй лучше поискать, ибо в книгах все знания, в книгах.

Автор: Akina 27.12.2006, 16:32
http://subscribe.ru/archive/comp.hard.38445/200501/14102925.html

Автор: out51d3r 28.12.2006, 15:57
Я искал, но там написанно не "по-русски"...
В принципе, меня вот что интересует: я хочу с помощью порта компьютера управлять некоторй электронной схемой. Например, нажал на кнопку "1", загорелся свет, нажал "2" - еще что-нибудь. Схема у меня простая. С выхода порта сигнал поступает на усилитель тока, который выполнен на транзисторе. А с коллектора транзистора усиленный сигнал в свою очеречь замыкает контакты реле, а реле другую цепь (если не понятно, то могу нарисовать схему, только скажите как картинку вставить?)

Так вот, что меня интересует: что значат выводы портов? По какому пину идет сигнал? Там вообще, частотная модуляция или разность токов? Или вообще, разность напряжения?
Расскажите пожалуйста, что какой пин значит...

И еще кое что.
В старых версиях Си, есть такие команды, как int86 и т. п. У меня VC++ 6.0 SE. В файле dos.h таких прототипов функций нет. Как я понял, наверное придется вставлять ассмблерный код (по-этому, тут я и создал тему).

Я хотел сначала перенаправить вывод не на экран, а на принтер (то есть LPT1) и потом хотел замерить напряжения на выводах порта. Но эту затею сразу отвергнули, так как можно сжечь порт.

Большое спасибо.

Автор: Akina 28.12.2006, 23:33
как все запущено... ты вообще со схемотехникой как?
LPT-порт как раз дает тебе 8 выходных линий, которые могут непосредственно управлять 5-вольтовой логикой. Нагрузочная способность каждого пина - 10 входов (открытый коллектор).

Автор: out51d3r 29.12.2006, 12:09
Принципиальные схемы читать умею.

То есть, у нас на параллельном порте 25 выходов. 8 из них передают данные. Как я понял из выше рассказанного, если я буду передавать через порт, например число 10 (00001010), то на 5-ом и на 7-ом выводах порта появится положительный потенциал +5 В. А на оставшихся 5-ти выводах, будет 0 или -5 В. Так что-ли?

Автор: Akina 29.12.2006, 14:37
Цитата(out51d3r @  29.12.2006,  13:09 Найти цитируемый пост)
если я буду передавать через порт, например число 10 (00001010), то на 5-ом и на 7-ом выводах порта появится положительный потенциал +5 В. А на оставшихся 5-ти выводах, будет 0

Приблизительно так... только не 5 и 7, см. распиновку... я не помню, прямой там или инверсный выход.

Автор: out51d3r 2.1.2007, 15:40
И еще один ньюанс.

В Си++ не таких функций как в простом Си, int86, int86x  и т.п. У меня стоит MVC++ 6.0 SE. Подумал-подумал и решил, что тут надо вставлять ассемблерные коды.

(Если не возвражаете, то далее топик будет идти о командах ассемблера и об аппаратном обеспечении.)

Блин, вообще, где можно скачать литературу по ассемблеру, на аппаратном уровне и чтобы, все было очень-очень подробно расписанно...
А так вот в чем дело.
когда я вставляю команды прерывания, то программа виснет и потом выдает ошибку (int 21h;)???
Приведите хотябы какой нибудь детский пример на ассемблере (я его буду в Си++ вставлять), и как это работает.

Так же, хотелось бы узнать, что такое сегментация (Да вообще, что такое сегмент команд, сегмент данных и т. п.)


Большое Спасибо!

(Прошу прощенья, что не своевременно отвечаю...)

P.S.: С праздником!

Автор: MAKCim 2.1.2007, 16:05
Цитата

Да вообще, что такое сегмент команд, сегмент данных и т. п.

Сегмент - это совокупность бинарных данных (по сути байт). Каждый сегмент (секция) имеет размер и начальный адрес, называемый сегментным. В реальном режиме работы процессора 16 старших бит этого адреса хранятся в DS, CS, SS, т. к сегменты в памяти выровнены по 16 байтным границам (4 младших бита 20-го адреса - нулевые). В защищенном режиме каждый сегмент описывается специальной структурой, называемой дескриптором, который содержит все информацию о сегменте: базовый 32-ый линейный адрес сегмента, лимит, тип (кода, данных или специальный тип (всего 16)), уровень привелегий (кольцо). 
По сути сегменты позволяют сгруппировать различные части програмы и адресовать их независимо. Т. е IP/EIP процессор использует как эффективный адрес внутри сегмента кода, SP/ESP, BP/EBP - внутри сегмента стека, для всего остального - сегмент данных

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)