Пусть в оперативную память компьютера загружен выполняемый модуль некоторой программы. Команды программы должны в установленном порядке считываться в микропроцессор и выполняться, при этом они используют данные, расположенные в памяти и регистрах микропроцессора. При загрузке программ в оперативную память DOS (дисковая операционная система) обычно выделяет для программы три сегмента памяти, имеющие самостоятельное назначение. Они содержат код, данные и стек программы. Некоторые сегменты могут и отсутствовать. DOS инициализирует как минимум три сегментных
регистра: CS, DS и SS. При этом совокупности байтов, представляющих команды процессора (код программы), и данные помещаются из файла на диске в оперативную память, а адреса этих сегментов записываются в CS и DS соответственно. Сегмент стека либо выделяется в области, указанной в программе, либо совпадает (если он явно в программе не описан) с самым первым сегментом программы.
Адрес сегмента стека помещается в регистр SS. Программа может иметь несколько кодовых сегментов и сегментов данных и в процессе выполнения специальными командами выполнять переключения между ними.
Как запускать DOS программы и игры в Windows 11 и 10
Для того чтобы адресовать одновременно два сегмента данных, например, при выполнении операции пересылки из одной области памяти в другую, можно использовать регистр дополнительного сегмента ES. Кодовый сегмент и сегмент стека всегда определяются содержимым своих регистров (CS и SS), и поэтому в каждый момент выполнения программы всегда используется какой-то один кодовый сегмент и один сегмент стека.
Причем если переключение кодового сегмента – довольно простая операция, то переключать сегмент стека можно только при условии четкого представления логики работы программы со стеком, иначе это может привести к зависанию системы. Все сегменты могут использовать различные области памяти, а могут частично или полностью перекрываться . Кодовый сегмент должен обязательно описываться в программе, все остальные сегменты могут отсутствовать.
В этом случае DOS при загрузке программы в оперативную память инициирует регистры DS и ES значением адреса префикса программного сегмента PSP (Program Segment Prefics) – специальной области оперативной памяти размером 256 (100h) байт. PSP может использоваться в программе для определения имен файлов и параметров из командной строки, введенной при запуске программы на выполнение, объема доступной памяти, переменных окружения системы и т.д.
Регистр SS при этом инициализируется значением сегмента, находящегося сразу за PSP, т.е. первого сегмента программы. При этом необходимо учитывать, что стек «растет вниз» (при помещении в стек содержимое регистра SP, указывающего на вершину стека, уменьшается, а при считывании из стека – увеличивается). Таким образом, при помещении в стек каких-либо значений они могут затереть PSP и программы, находящиеся в младших адресах памяти, что может привести к непредсказуемым последствиям. Поэтому рекомендуется всегда явно описывать сегмент стека в тексте программы, задавая ему размер, достаточный для нормальной работы. После инициализации в регистре IP находится смещение первой команды программы относительно начала кодового сегмента, адрес которого помещен в регистр CS. Процессор, считывая эту команду,
Как запускать старые программы иил игры под MS-DOS на Windows 10 с помощью DosBox
начинает выполнение программы, постоянно изменяя содержимое регистра IP и при необходимости CS для получения кодов очередных команд до тех пор, пока не встретит команду завершения программы. DS после загрузки программы установлен на начало PSP, поэтому для его использования в первых двух командах программы выполняется загрузка DS значением сегмента данных. MOV AX,DATA MOV DS,AX
2.1. EXE- и COM-программы
DOS может загружать и выполнять программные файлы двух типов – COM и EXE. Ввиду сегментации адресного пространства процессора 8086 и того факта, что переходы (JMP) и вызовы (CALL) используют относительную адресацию, оба типа программ могут выполняться в любом месте памяти.
Программы никогда не пишутся в предположении, что они будут загружаться с определенного адреса (за исключением некоторых самозагружающихся, защищенных от копирования программ). Файл COM-формата – это двоичный образ кода и данных программы. Такой файл должен занимать менее 64K и не содержать перемещаемых адресов сегментов.
Файл EXE-формата содержит специальный заголовок, при помощи которого загрузчик выполняет настройку ссылок на сегменты в загруженном модуле. Перед загрузкой COMили EXE-программы DOS определяет сегментный адрес, называемый префиксом программного сегмента (PSP), как базовый для программы.
Затем DOS выполняет следующие шаги: − создает копию текущего окружения DOS (область памяти, содержащая ряд строк в формате ASCIIZ, которые могут использоваться приложениями для получения некоторой системной информации и для передачи данных между программами) для программы; − помещает путь, откуда загружена программа, в конец окружения; − заполняет поля PSP информацией, полезной для загружаемой программы (количество памяти, доступное программе; сегментный адрес окружения DOS; текущие векторы прерываний INT 22H INT 23H и INT 24H и т.д). EXE-программы. EXE-программы содержат несколько программных сегментов, включая сегмент кода, данных и стека. EXE-файл загружается, начиная с адреса PSP:0100h. В процессе загрузки считывается информация
заголовка EXE в начале файла и выполняется перемещение адресов сегментов. Это означает, что ссылки типа mov ax,data_seg mov ds,ax и call my_far_proc должны быть приведены (пересчитаны), чтобы учесть тот факт, что программа была загружена в произвольно выбранный сегмент.
После перемещения управление передается загрузочному модулю посредством инструкции далекого перехода (FAR JMP) к адресу CS:IP, извлеченному из заголовка EXE. В момент получения управления программой EXE -формата: − DS и ES указывают на начало PSP − CS, IP, SS и SP инициализированы значениями, указанными в заголовке EXE − поле PSP MemTop (вершина доступной памяти системы в параграфах) содержит значение, указанное в заголовке EXE.
Обычно вся доступная память распределена программе. COM-программы. COM-программы содержат единственный сегмент (или, во всяком случае, не содержат явных ссылок на другие сегменты). Образ COM-файла считывается с диска и помещается в память, начиная с PSP:0100h.
В общем случае, COM-программа может использовать множественные сегменты, но она должна сама вычислять сегментные адреса, используя PSP как базу. COM-программы предпочтительнее EXE-программ, когда дело касается небольших ассемблерных утилит. Они быстрее загружаются, ибо не требуется перемещения сегментов, и занимают меньше места на диске, поскольку заголовок EXE и сегмент стека отсутствуют в загрузочном модуле. После загрузки двоичного образа COM-программы: − CS, DS, ES и SS указывают на PSP; − SP указывает на конец сегмента PSP (обычно 0FFFEH, но может быть и меньше, если полный 64K сегмент недоступен); − слово по смещению 06H в PSP (доступные байты в программном сегменте) указывает, какая часть программного сегмента доступна; − вся память системы за программным сегментом распределена программе; − слово 00H помещено (PUSH) в стек. − IP содержит 100H (первый байт модуля) в результате команды JMP PSP:100H.
Источник: studfile.net
Как запустить программу в DOS
В современных версиях Windows нет операционной системы DOS (Disk Operating System — «Дисковая операционная система»), но есть специальный компонент, который имитирует выполнение части DOS-команд. Этот компонент называют эмулятором терминала командной строки и его возможностей достаточно для запуска программ, а вот смогут ли они работать в среде современных операционных систем, зависит от конкретной программы.
Статьи по теме:
- Как запустить программу в DOS
- Как создать загрузочный раздел dos
- Как запускать программу из командной строки
Инструкция
Откройте терминал командной строки. Для этого можно воспользоваться стандартным диалогом запуска программ ОС Windows, который открывается выбором команды «Выполнить» в главном меню на кнопке «Пуск». Если в вашей версии операционной системы эта команда отсутствует в главном меню, то воспользуйтесь комбинацией горячих клавиш win + r. В диалоге запуска введите команду cmd и щелкните по кнопке «OK».
В результате предыдущего шага запустится терминал командной строки, который представляет собой отдельное окно с белыми буквами на черном фоне. Его невозможно развернуть на полный экран, в нем нет в верхней части привычного меню с набором функций и горячие клавиши Windows в нем тоже не действуют. Однако в контекстном меню, вызываемом щелчком правой кнопкой мыши по черному фону, есть несколько команд. В частности там присутствует команда вставки, которая может быть полезна на следующем шаге.
Введите в командной строке полный адрес исполняемого файла программы, которую вы хотите запустить. Делать это вручную не всегда удобно, поэтому можно воспользоваться операциями копирования и вставки. Скопировать полный путь можно, например, в Проводнике Windows — перейдите в нем в папку, содержащую нужный файл, затем выделите и скопируйте (ctrl + c) путь в адресной строке менеджера файлов. После этого переключитесь обратно в терминал командной строки, щелкните в любом месте правой кнопкой и выберите в контекстном меню операцию вставки. После этого допишите имя исполняемого файла через обратный слэш ().
Если нужная вам программа имеет ярлык в операционной системе, то вместо Проводника полный адрес файла можно скопировать в его свойствах. Правда, скопированное в поле объект значение перед вставкой в командную строку будет нужно очистить от кавычек в начале и конце строки.
Нажмите клавишу enter и эмулятор DOS запустит нужную вам программу.
Совет полезен?
Статьи по теме:
- Для чего нужен эмулятор Windows XP
- Как загрузить в режиме DOS
- Как запустить игру с параметром соnsоle 1 в командной строке
Добавить комментарий к статье
Похожие советы
- Как создать dos-дискету
- Как загрузить компьютер в DOS
- Как запустить 32-битное приложение
- Как выполнить команды консоль
- Как стартовать с диска
- Как запустить установку из под дос
- Как открыть файл с командной строки
- Как установить эмулятор
- Как выполнить cmd
Новые советы от КакПросто
Рекомендованная статья
Как происходит заражение компьютера вирусом
Наиболее слабое звено в цепи компьютерной безопасности — это сам пользователь. Наличие установленного на компьютере.
Источник: www.kakprosto.ru
Кое-что о DOS
Многие сегодняшние начинающие программисты выросли на Windows. И кто-то наверно уже не знает, что до того, как появилась Windows, пользователи работали в операционной системе DOS.
DOS очень сильно отличается от Windows. Намного сильнее, чем Windows 7 от Windows 8. И поэтому, когда возникает необходимость работы в ДОС, у большинства пользователей это вызывает шок и глубокую депрессию.
Чтобы уберечь вас от этих последствий, я решил написать небольшую статью о работе в операционной системе ДОС.
Операционная система (ОС) — это программа, которая управляет работой компьютера. Включить компьютер можно и без операционной системы — для этого достаточно BIOS. Но в этом случае на включении все и закончится, так как BIOS выдаст сообщение о том, что диск не является загрузочным.
Самой первой ОС для первого же компьютера IBM PC, созданного в 1981г., является DOS — Disk Operating System (Дисковая операционная система). Она была разработана фирмой MicroSoft и поэтому имела приставку MS (полное ее имя MS-DOS). Другие фирмы также занимались разработкой подобных систем, которые мало чем отличались друг от друга, но в своих названиях имели другие приставки (PC-DOS, NW-DOS, DR-DOS и др.). Обычно эти приставки не упоминают, и пишут просто DOS.
- IO.SYS
- MSDOS.SYS
- COMMAND.COM
В настоящее время в DOS почти никто не работает, так как появились более современные операционные системы, такие как WINDOWS 95/98/ME/2000/XP/7/8 и другие, не только Windows, но и, например, Android. Справедливости ради следует отметить, что все они (ну или почти все) базируются на старом добром DOSе.
Поэтому изучение DOS никому не повредит — в жизни пригодится. Хотя, начиная с WINDOWS XP, операционная система DOS уже не используется как основа. Отчасти по этой причине некоторые старые программы не работают с новыми версиями Windows.
Но если вы собираетесь серьезно заняться программированием, то изучить DOS просто необходимо. Потом сами поймете почему.
Все рекомендации, приведенные в данной статье, которые касаются Windows, справедливы для Windows ME. В некоторых других версиях возможны небольшие отличия.
Здесь мы поговорим только о самых основных командах DOS. В отличие, например, от Windows, где вы можете выполнить одно и тоже действие разными способами (с помощью мыши или клавиатуры и т.п.), в DOS все команды пишутся в Командной строке, а выполняются эти команды после нажатия на клавишу ENTER. После загрузки DOS вы увидите такую строку (приглашение):
где С — это имя диска. Чтобы перейти на другой диск (например, на диск А), наберите
и нажмите ENTER. Буква может быть как большой, так и маленькой.
ПРИМЕЧАНИЕ
Чтобы потренироваться работать в командной строке, необязательно перезагружать компьютер в DOS. Windows тоже имеет командную строку, которая «работает» по тем же принципам. Щелкните по кнопке ПУСК и выберите пункт меню ВЫПОЛНИТЬ (для Windows ME). Перед вами откроется окно с командной строкой. В эту строку и нужно вписывать команду, после чего, также как и в DOS, следует нажать клавишу ENTER или щелкнуть по кнопке ОК.
Пакетные (командные) файлы
С помощью команд DOS можно создавать так называемые пакетные файлы (их ещё называют «командные файлы», BAT-файлы, или просто «пакетники»). Поскольку Windows поддерживает команды DOS, то эти файлы будут работатьи в Windows. Системные администраторы и программисты до сих пор широко используют пакетные файлы. Чтобы разобраться с командными файлами, скачайте контрольную работу по этой теме.
Вид приглашения можно изменить командой PROMPT. Для этого в командной строке нужно набрать следующее:
где Текст — любое текстовое сообщение. Например, после ввода команды:
вместо стандартного С:> будет выводиться слово Привет .
Практически все команды сводятся к открытию какого-либо файла или программы (вообще-то программа — это тоже файл). Общий вид команды, которая открывает файл:
где С — это имя диска; Папка1 . . . ПапкаN — это имена каталогов (полный путь к файлу): ИмяФайла — имя файла с раширением. Если же такого файла нет, то будет выведено сообщение об ошибке.
ПРИМЕЧАНИЕ
Если вы работаете в командной строке Windows, то таким образом можно открыть практически любой файл. Если расширение файла не указывать, то откроется файл с расширением EXE, BAT или СОМ. Ну а если вы работаете в DOS, то открыть вы сможете только исполняемые файлы (программы). Поэтому расширение можно и не указывать.
Для примера рассмотрим такой вариант: нам нужно открыть файл с именем FILE.COM, который находится в папке TEXT, а эта папка, в свою очередь, находится в папке DOC. А папка DOC находится на диске С. Для этого пишем в командной строке следующее:
и нажимаем ENTER. Если файл существует, то он откроется (точнее, запустится программа, так как файлы с расширением СОМ — это программы).
Далее мы будем рассматривать команды, которые используются DOS. Некоторые из них могут не работать в командной строке Windows.
ПРИМЕЧАНИЕ
Если вы хотите поработать в условиях, «приближенным к боевым», то вы можете выбрать в главном меню (кнопка «Пуск») пункт «Сеанс MS-DOS». После запуска программы вы увидите черное окно, где и будет командная строка DOS. Здесь вы можете опробовать все приводимые в этой статье команды. Если же в главном меню вы почему-то не обнаружили вышеупомянутого пункта, то воспользуйтесь функцией поиска файлов, чтобы найти файл COMMAND.СОМ или СMD.EXE (для Windows NT*). Можно также просто открыть командную строку и ввести там COMMAND.СОМ или СMD.EXE (для Windows NT*).
О любой команде DOS вы можете получить короткую справку, набрав имя команды в командной строке с параметром «?». Например:
Если вы работаете не в «чистой» DOS, а под управлением Windows (см. ПРИМЕЧАНИЕ выше), то после нажатия клавиши ENTER вы получите примерно такую информацию:
Windows Millennium [Версия 4.90.3000]
Ну а если вы работаете в DOS, то получите информацию о версии DOS. Как вы поняли, команда VER выводит информацию о версии операционной системы.
Команда CD
Эта команда, как и большинство других, имеет несколько параметров:
CD — переход в корневой каталог данного диска. Например, если вы находитесь в
то после выполнения этой команды вы перейдете на диск С:
СD GAME — переход к дочернему каталогу GAME из корневого каталога
СD GAME — переход к дочернему каталогу GAME из текущего каталога
CD.. — выход из каталога (переход к родительскому каталогу). Например, если вы находитесь в
то после выполнения этой команды вы перейдете в:
Команда DIR
DIR — просмотр списка директорий и файлов в данной директории
Однако, если файлов и директорий в текущем каталоге очень много, то все они промелькнут очень быстро, и вы сможете увидеть только последние из них, которые поместятся на странице. Если в таком случае нужно посмотреть все файлы и папки, то команду набирают с параметром «Р»:
В этом случае на экран будет выведено столько файлов, сколько их там поместится. Чтобы посмотреть следующую «порцию» файлов, нужно нажать любую клавишу.
Команда MD
Эта команда создает новый каталог
MD PAPKA — создается каталог РАРКА в текущей папке или на текущем диске.
MDPAPKA — создается каталог РАРКА в корневом каталоге.
MD С:DIRPAPKA — создается каталог РАРКА в каталоге DIR .
Команда REN
Эта команда переименовывает файл
REN FILE_1.txt F_1.txt — Файл FILE_1 переименовывается в F_1
Команда COPY
Эта команда копирует файлы
COPY C:MYFILETEXT.ТХТ A: — копирование файла TEXT.ТХТ из каталога MYFILE на дискету А .
COPY C:TEXT*.ТХТ A: — копирование всех файлов с расширением ТХТ каталога ТЕХТ на дискету А .
COPY FILE_1.TXT A:TEXTFILE_2.TXT — копирование файла под новым именем из текущего каталога активного диска в каталог ТЕХТ диска А .
COPY F_1.TXT+F_2.TXT+F3.TXT F_END.TXT — объединение (слияние) трех файлов в один файл ( F_END.TXT ). Все четыре файла в текущем каталоге.
COPY FILE_1.TXT PRN — печать (копирование на принтер) файла FILE_1.TXT из текущего каталога.
COPY FILE_1.TXT CON — просмотр файла. Здесь в качестве параметра команды используется слово CON (сокращение от CONSOL ). Это слово зарезервировано операционной системой для стандартных устройств ввода-вывода. При вводе данных этим устройством является клавиатура, при выводе — монитор. Аналогичного результата можно достичь командой TYPE FILE_1.TXT .
COPY CON FILE_1.TXT — создание (копирование с клавиатуры) нового текстового файла FILE_1.TXT в текущем каталоге. После выполнения этой команды можно вводить с клавиатуры любой текст. Для завершения процесса создания файла следует ввести специальный управляющий символ «конец файла». Для этого нужно нажать комбинацию клавиш Ctrl+Z, а затем нажать клавишу ENTER.
Команда XCOPY
Эта команда копирует каталоги.
XCOPY C:TEXT*.* A:PAPKA*.* /S /E — создание на дискете А каталога РАРКА (если его там не было) и копирование в нее всех каталогов и подкаталогов (включая пустые).
Команда DEL
Эта команда удаляет файлы.
DEL *.dat — удаление всех файлов с расширением DAT из текущего каталога
DEL *.* — удаление всех файлов из текущего каталога
DEL C:TEXTFILE.txt — удаление файла FILE.ТХТ из каталога ТЕХТ .
Команда RD
Эта команда удаляет пустые каталоги.
RD TEXT — удаление каталога ТЕХТ .
Команда PATH
Эта команда задает пути поиска файлов с исполнимыми программами.
Если вы введете такую команду, то вам уже не придется прописывать полный путь к файлам, которые находятся на диске С и в каталогах WINDOWS и MYPROG. Например, если в каталоге MYPROG у вас есть программа с именем PROGA, то после ввода вышеуказанной команды для запуска этой программы в командной строке будет достаточно написать PROGA и нажать ENTER. Обратите внимание, что при перечислении каталогов в команде PATH между ними НЕ ДОЛЖНО быть пробелов.
Команда EXIT
Эта команда осуществляет выход из программы COMMAND (Сеанс MS-DOS). Если вы запустили его из Windows, то обратно в Windows и вернетесь.
Текстовый редактор EDIT
Это простой и весьма удобный текстовый редактор. Он вам может пригодиться, чтобы посмотреть текстовые файлы, которые имеют досовскую кодировку символов. (В Windows вы можете открыть такие файлы с помощью блокнота, но только вместо нормального текста увидите набор «иероглифов»). Чтобы запустить этот редактор, наберите в командной строке слово EDIT и нажмите клавишу ENTER. Этот редактор можно запустить и из командной строки Windows.
ПРИМЕЧАНИЕ
Здесь имена всех команд напечатаны большими буквами, однако, это не имеет значения — можно писать и маленькими буквами.
И в заключение упомянем две команды для работы с диском:
FORMAT — форматирование диска
FORMAT A: — форматирование диска А . Прежде чем форматировать диск — хорошо подумайте: стоит ли?
FDISK — деление винчестера на логические диски. При этом ВСЯ информация на диске теряется. Если не знаете, что делаете — лучше не используйте эту команду. А вообще, эта команда требует более детального рассмотрения. Как-нибудь я к ней еще вернусь.
Заключение
Цель этой статьи — познакомить людей, воспитанных на Windows, с общими принципами работы в DOS. Как видите, все не так уж страшно. И если вы не хотите быть просто «юзером», то знание DOS вам необходимо. Да и вообще, как говорит один мой знакомый программист: «Винчестер в компьютере — вещь не главная».
Однако Windows вы без винчестера не запустите — слишком много она места занимает, а вышеупомянутые три основных досовских файла легко умещаются на дискете (все вместе они занимают около 150КБ — размер зависит от версии). Поэтому советую всегда иметь загрузочную дискету — вдруг придется проверить компьютер, на котором нет винчестера или винчестер неисправен. Если у вас нет возможности создать загрузочную дискету «чистой» DOS, то это и не страшно. Создайте загрузочную дискету Windows — на ней будет все та же DOS, только с кучей разных полезных программ (драйверы CD-ROM, русификатор клавиатуры и т.п.).
Если у вас Windows 9598ME и им подобные, то сделать это можно так:
Пуск > Настройка > Панель Управления > Установка и удаление программ
Затем выбираете вкладку «Загрузочный диск» и нажимаете кнопку «Создать диск».
Чтобы загрузиться с дискеты, вставьте ее в дисковод, и перезагрузите компьютер. Если в вашей BIOS установлены настройки по умолчанию, то компьютер загрузится с дискеты. А загрузит он не что иное, как DOS. Ну а если компьютер загрузил Windows, то требуется изменить настройки BIOS. Но это уже другая тема.
И еще один полезный совет
В начале статьи я упоминал командную строку Windows. Этой строкой иногда удобнее пользоваться, чем щелкать по ярлыкам. Если на вашем компьютере слишком много разных программ, то весь рабочий стол «загажен» ярлыками. Это не только мешает любоваться красивыми «обоями» — найти с первого раза нужный ярлык будет непросто. А если еще мышь сломается?
Поэтому программы, которыми вы часто пользуетесь, лучше запускать из командной строки. Однако в командной строке нужно писать полный путь к файлу, а это неудобно. Но данную проблему можно решить, например, сделав соответствующие изменения в файле AUTOEXEC.ВАТ. А если вы смутно представляете, что это за файл и зачем он нужен, то есть более простой способ. Например, у вас есть программа «MyProg», которая находится в папке «Progy» на диске «С». В этом случае запускать из командной строки ее нужно так:
- Открываем папку «Progy»
- Правой кнопкой мыши щелкаем на файле «MyProg»
- Из меню выбираем пункт «Создать ярлык»
- Созданный ярлык переименовываем (правая кнопка -> переименовать). Дадим ему имя, которое будет легко запомнить, например, «mp».
- Этот ярлык перетаскиваем в папку WINDOWS (если Windows установлена у вас в другой папке, то в другую этот ярлык и перетаскиваем).
и нажимаем ENTER. См. также команду PATH .
Если программа почему-то не запустилась, попробуйте перезагрузить компьютер. Если не поможет, значит, вы что-то сделали неправильно.
- Нажимаем клавишу Win (это вторая клавиша от пробела). Появляется меню «Пуск». Меню «Пуск» можно открыть и другим способом, нажав комбинацию клавиш CTRL + ESC.
- Нажимая клавишу со стрелкой вверх (или вниз), выбираем пункт меню «Выполнить» и нажимаем ENTER.
- Пишем в командной строке соответствующую команду и нажимаем ENTER.
- Просто нажимаем комбинацию клавиш WIN + R.
Если у вас старая клавиатура, которая не имеет клавиши WIN, то открыть меню ПУСК можно комбинацией клавиш CTRL + ESC.
Источник: info-master.su