Показать полную графическую версию : Assembler - aktualni vopros
Zdravstvuite!
Moi vopros otnositsa k "real mode". Izvestno, chto bolshinstvo processov bejit v tak nazivaemom "protected mode". Izmenit "Machine Status Word" mojno, no tolko na real mode chtobi pereiti na protected mode. A esli ya hochu pereiti s protected mode na real mode?
Spasibo
я правильно поняла ? Вы хотите вернуть машину в режим совместимости с процессором 8088 (ХТ) (real mode) - то есть иметь доступ только 640 Кбайт памяти ? ;)
слева от окошка ввода ссобщения находится ссылка Латиница -> Кирилица - это не для режима ядра, а против транслита :)
Похоже, да
Правда, если программа работает в Windows, то винда обидится и ее выгрузит...
За латиницу - спасибо.
Насчёт реал моде:
Реал моде мне нужен- например, чтобы можно было писатъ напрямик на хард диск - по моему, в защищенной моде ето нелъзя.
Насчёт 640 Кб. Не уверен насчёт етого. По моему,реал мод просто дает доступ к некоторим интерраптам (например, директ диск аксесс), но даже если доступ ограничен только 640 Кб, то можно наверное поменять обратно на протектед мод.
Насчёт Винды: ну вот я как раз и не хочу чтобы выгружала
Guest
Насчёт реал моде:
Реал моде мне нужен- например, чтобы можно было писатъ напрямик на хард диск - по моему, в защищенной моде ето нелъзя.
Что за бред. Если виндовс не дает прямого доступа к винту, то причем здесь защищенный режим. Ведь когда мы запускаем дос-приложение в винде, то просто идет эмуляция всей платформы мс-дос.
По моему,реал мод просто дает доступ к некоторим интерраптам (например, директ диск аксесс)
Впервые слышу про такие сервисы, хотя все может быть (ведь есть регистры типа TR6, TR7 для контроля постраничной с-мы распределения памяти, как раз для защ. режима)
доступ ограничен только 640 Кб
Это если com-приложение, пишите exe и все путем (хехе только прийдется попариться с сегментно-оффсетной адресацией).
Короче пишите win32 приложение и не парьтесь!!!
Kuper
не горячимся, все хорошо :) По-моему (может быть из-за русского-английского) произошла подмена понятий реального и защищенного режима и колец защищенности (от ядра до пользовательских приложений).
Guest,
Давайте сначала все-таки уточним:
Понятие различных режимов работы процессоров Intel x86 появилось, начиная с процессора 80286. Для совместимости с предыдущими версиями семейства (от 8086/88) 286 -ом было реализовано два режима:
1) режим эмуляции 8086 (режим реального адреса) и
2) защищенный режим. Именно в нем реализуются все *возможности процессора.
В следующих поколениях именно защищенный режим становится основным режимом работы.
Для тех, кто ещё не знаком с защищённым режимом работы, скажем, что этот режим является основным и естественным режимом работы процессоров i80286, i80386 и i80486. Только в защищённом режиме полностью реализуются все возможности, заложенные в архитектуру процессоров. Защищённый режим работы используется во многих программных продуктах, таких как операционные системы UNIX, XENIX, OS/2, PC-MOS, QNX, Desk View, сетевых операционных системах NOVELL, в операционной системе Microsoft WINDOWS, в драйверах расширенной памяти EMM386 и QEMM, в СУБД ORACLE. Хорошо известная система разработки программного обеспечения Borland C также может работать в защищённом режиме, при этом её производительность заметно возрастает. Перспективная операционная система Microsoft WINDOWS NT также использует защищённый режим работы процессора. Новая версия 6.0 операционной системы MS-DOS будет активно использовать защищённый режим работы процессора. Это цитата из книги Александр Фролов, Григорий Фролов
Том 6, М.: Диалог-МИФИ, 1993, Защищенный режим процессоров Intel 80286/80386/80486 (http://www.vcl.ru/html/cpu/80486/home.htm) (кстати оочень рекомендую :)) По поводу адресации памяти в этих режимах, чтобы не было непоняток - можно почитать в этой же книге (http://www.vcl.ru/html/cpu/80486/ch1.htm#ch1_1)
Становится понятно, почему все переходят в защищенный режим, а не наоборот, правда :)?
Если же Вам нужен прямой доступ к памяти и устройствам, то Ваш путь идет к написанию драйверов и, (если пишете под винды), соответственно, к штудированию DDK :)
Guest
Реал моде мне нужен- например, чтобы можно было писатъ напрямик на хард диск - по моему, в защищенной моде ето нелъзя.
А причем здесь режимы процессора?
Для начала уточним: писать на винт, например, через int 13h? Если да, тогда риал/протектед моуд здесь моуд не причем - это стандартное BIOS-прерывание. Здесь важнее то, под какой ОСью писать: DOS/Win9x - позволят, WinNT - нет (только через АПИшку).
Или я что-то не понимаю?
Что за бред. Если виндовс не дает прямого доступа к винту, то причем здесь защищенный режим. Ведь когда мы запускаем дос-приложение в винде, то просто идет эмуляция всей платформы мс-дос.
Nu vot dlia etogo mne on i nujen. Windows, kak ti i sam zametil, ne daet priamogo dostupa k vintu. A v real mode, po moemu, vse eto mojno oboiti.
Впервые слышу про такие сервисы, хотя все может быть (ведь есть регистры типа TR6, TR7 для контроля постраничной с-мы распределения памяти, как раз для защ. режима)
Nu vot ya proboval sdelat direct disk access s pomoshiu interruptov, a Windows 2000 ne dal. Naskolko ya polagaiu, v real mode eto vozmojno.
Dimon
Здесь важнее то, под какой ОСью писать: DOS/Win9x - позволят, WinNT - нет (только через АПИшку).
Nu vot ya i hochu sdelat tak, chtobi mojno bilo pisat nezavisimo ot OSi.
не горячимся, все хорошо *По-моему (может быть из-за русского-английского) произошла подмена понятий реального и защищенного режима и колец защищенности (от ядра до пользовательских приложений).
Nu ne znaiu....po moemu kolza (rings) - eto zavisit ot OS, t.e. OS reshaet kakoi programme kakoe kolzo (ot nulia do trex). Bolshinstvo program bejit v tretiem kolze. A real mode - eto uje *zavisit ot processora a ne ot OS. Tak vrode? Sobstvenno, dlia direct disk access mojno ispolzovat i kolza - toje interesni sposob, no eto uje drugaya tema.
mar
Za knigu bolshoe spasibo. Nachal chitat, vrode tolkovo vse. Chtenie prodolju.
Если же Вам нужен прямой доступ к памяти и устройствам, то Ваш путь идет к написанию драйверов и, (если пишете под винды), соответственно, к штудированию DDK
Nu vot, naprimer k driveram. Chestno govoria, ya sam eshe ne znaiu, dlia chego mne eto. Poka chto tolko dlia lubopitstva; ya voobhse daje ne professionalni programmist. Kak govoril Lenin: uchitsa, uchitsa, i uchitsa.
Offtopic: izvinite, ya pomnu o ssilke na kirillitzu, no kak to namnogo privichnee tak pisat. Nadeius ne obidites.
Dread Knight
19-07-2004, 17:56
1)прямой доступ к железу возможен как в реальном, так и в защищенном режиме работы (иначе как бы драйвера в винде работали?)
2) как уже было сказано, dos/win9x дают прямой доступ к железу, winnt/2000 - нет. Это значит, что в dos/9x можно получить доступ к винту 3 способами: напрямую(через порты), через BIOS (прерывание 13h) и через API самой операционной системы ( для DOS это INT 21h). В NT/2000 первые два варианта для обычных приложений недоступны - прямой доступ к железу есть _только_ у драйверов (ну, и у ядра системы, ессесно).
3)защищенный режим он на то и защищенный, что из него нельзя перейти в реальный, если ОС этого не позволяет сделать.
А иначе какой смысл во всей этой защите, если любая программка может ее всю завалить?
Поэтому переход в реальный режим работы доступен _только_ ядру системы, даже драйвера этого не могут.
Из вышесказанного вывод:
либо штудируй DDK, как тебе советует mar - тогда сможешь из винтукея к винту обращаться,
либо ставь себе DOS или Win9x и юзай 13h
Если пишешь что-нибудь серьезное - лучше первый вариант, а если "попробовать как оно работает" - то второй, причем лучше даже DOS, а не Win9x - тут тебе и настоящий real mode и винт угробить шансов меньше имхо.
Dread Knight
даже драйвера этого не могут.
В винде могут :wink: Только лучше этого не делать... Драйвера винды выполняются в нулевом кольце защиты
Если пишешь что-нибудь серьезное - лучше первый вариант, а если "попробовать как оно работает" - то второй, причем лучше даже DOS, а не Win9x - тут тебе и настоящий real mode и винт угробить шансов меньше имхо.
А еще лучше поставить VMware Workstation или Virtual PC, туда ОСь и свою кривую программу и не портить никакого железа.
Guest
A v real mode, po moemu, vse eto mojno oboiti.
Вообще-то это можно в любом режиме обойти при наличии соотвествующих знаний об устройстве операционки.
chtobi mojno bilo pisat nezavisimo ot OS
А вот этого не получится :( Можно сделать следующее: придумать какой-то свой АПИ и реализовать его на каждой оси по своему. Тогда программа будет универсальной, но реализация АПИ будет зависеть от оси.
ispolzovat i kolza
Не путайте мягкое и теплое (с) Гоблин :wink:
Впервые слышу про такие сервисы, хотя все может быть (ведь есть регистры типа TR6, TR7 для контроля постраничной с-мы распределения памяти, как раз для защ. режима)
bios-сервис прерывания 13h - после портов самый низкоуровневый доступ... А вот и он, кстати :
писать на винт, например, через int 13h? Если да, тогда риал - согласен, 98 даст, а все, что на nt - там все проходит через ядро и оно вам даст по рукам, увы %(. Хотя есть вариант ntvdm.exe и дос-сессии, но к винту вы не достучитесь - будете получать коды возврата "ок", но ничего не будет происходить :(, увы. Независимо от - ос - либо путь
придумать какой-то свой АПИ и реализовать его на каждой оси по своему. Тогда программа будет универсальной, но реализация АПИ будет зависеть от оси. , либо делаем дискетку загрузочную... даже не с досом, а с нами в загрузчике :). и юзать только биос-сервисы.. во совместимость будет ! с любыми операционными системами :):):) !
mar
Eshe raz spasibo za ssilku (http://www.vcl.ru/html/cpu/80486/home.htm). Poka chto ne prochital vse, no vigliadit vrode vpolne prilichno!:)
Tolko vot eshe detal: ne izmenilos li chto to v sovremennih processorah?
Vot naprimer v segodniashnih processorah navernoe vse taki mojno imet dostup k pamiati, bolshei razmerom chem 640 Kb. Ved togda adresatsia velas s 16 bitnim CPU, a seichas 32 bits.
Dem
, либо делаем дискетку загрузочную... даже не с досом, а с нами в загрузчике . и юзать только биос-сервисы.. во совместимость будет ! с любыми операционными системами *!
Aga, ya sobstvenno tak i dumal sdelat - chtobi nikakoi OS nikak ne vlial na moiu (gipoteticheskuiu) programmu.
Vsem
Nu v tselom, po moemu, v etoi knige (http://www.vcl.ru/html/cpu/80486/home.htm) doljno bit esli ne vse, to mnogoe. Spasibo vsem, osobenno Mar, za pomosh. Nadeius toje kak to pomoch :)
Izvinite tovarishi, ya sobstvenno dostup napriamik na vint tolko kak primer privel. Veroyatno, chto vhod v real mode tolko dlia togo, chtobi napisat na disk i riskovat pri etom risknut crashnut systemu, kogda est bolee effectivnie sposoba nelepi.
Ya voobshe to zadal vopros pro real mode potomu chto kak to uznal, chto CPU na samom dele dvoyaki: imeet vrode bi 2 pari registrov - odna v real mode, odna v protected mode. Nu i ne trudno dogadatsa chto obichno ispolzuetsa protected mode. Vot i stalo interesno: chto takoe real mode i s chem ego ediat.
Tolko vot eshe detal: ne izmenilos li chto to v sovremennih processorah?
Обратная совместимость пока еще есть: ее не отменяли.
2 pari registrov
Не совсем :) Надо внимательно читать мануал по процессорам: там все толково объяняется.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.