Bdos, bdosx вызвать функцию dos


Содержание

Внутренние и внешние команды dos.

I. Основные внутренние команды dos.

Внутренние команды DOS выполняет командный процессор command.com.

Применение внутренних и внешних команд DOS относится к области системного программирования.

1. Команда смены текущего дисковода:

a: — переход на дисковод a:

b: — переход на дисковод b:

c: — переход на дисковод c:

2. Команда вывода оглавления каталога: dir

Поэкранный (постраничный) вывод оглавления каталога, если оглавление очень большое: dir/p

dir a:\ — команда вывода оглавления корневого каталога на диске а:.

Команда dir>dir.txt позволяет сохранить оглавление текущего каталога в виде текстового файла dir.txt. Это общее правило записи результатов работы программ в текстовом режиме в текстовый файл. Пример: ide.com > ide.txt.

3. Команда смены текущего каталога: cd имя каталога

Переход в корневой каталог текущего диска: cd\

Переход из подкаталога в каталог: cd..

4. Команда создания каталога: md имя каталога

5. Команда удаления пустого каталога: rd имя каталога

6. Команда вывода содержимого текстового файла на экран: type имя файла

7. Команда очистки экрана монитора: cls

8. Команда копирования файлов:

copy имя файла1 имя файла2 — копирование одного файла в другой файл;

copy имя файла имя каталога — копирование файла в каталог;

copy имя файла prn — распечатка файла на принтере.

9. Создание текстового файла:

copy con: имя файла, нажать Enter, ввести построчно текст, в конце каждой строки Enter, затем в конце F6 или Ctrl+Z и Enter.

10. Объединение содержимого двух и более текстовых файлов

(конкатенация файлов): copy имя 1-го файла + имя 2-го файла имя нового файла

11. Команда удаления файла: del имя файла или erase имя файла

12. Переименование файла: ren имя файла новое имя файла

13. Вывод версии DOS: ver

14. Вывод метки диска: vol

15. Ввод текущей даты: date

16. Ввод текущего времени: time

17. Exit — выход из командного процессора DOS.

Примечание: После ввода с клавиатуры указанных команд в командную строку следует нажать клавишу Enter.

II. Основные внешние команды dos (для версии ms-dos 6.22).

Внешние команды DOS выполняют вспомогательные программы (утилиты), расположенные в каталоге DOS на диске С:.

1. format имя диска: — форматирование диска (для дискет format a: или format b:).

Создание системного диска: format имя диска: /s

Будьте внимательны: при форматировании диска (дискеты) вся информация на нем уничтожается!

2. fdisk — разбиение жесткого диска на разделы (логические диски С, D, E и так далее).

Внимание: при разбиении жесткого диска на разделы вся информация на нем уничтожается!

3. sys имя диска: — перенос файлов ядра DOS на диск (дискету), создание системного диска (дискеты). Используется также для смены (обновления версии) DOS.

4. mem — вывод карты оперативной памяти. Чаще используется команда mem/c/p или mem/d/p (ключ p — постраничный вывод информации).

5. chkdsk c: /f — проверка файловой системы и восстановление потерянных кластеров.

6. scandisk — проверка файловой системы и диска на наличие логических сбоев. Для дискет scandisk a: или scandisk b:

7. label имя диска: — создание или обновление метки на диске, дискете.

8. undelete имя диска: — восстановление случайно стертых файлов.

9. diskcopy имя диска: имя диска: — создание точной копии дискеты.

10. print имя файла prn — печать файла на принтере в фоновом режиме. Отмена фоновой печати: print /t

11. graphics — поддержка печати информации с экрана (при нажатии клавиши Print Screen).

12. defrag c: /fd — устранение фрагментации файлов и оптимизация размещения информации на жестком диске (эта программа аналогична программе Speed Disk из комплекта Norton Utilities).

13. deltree имя каталога — удаление дерева каталогов (с файлами).

Внимание: Использовать эту команду можно только, если Вы уверены в необходимости удаления данного дерева каталогов! В противном случае будет утрачена важная информация!

14. msd — диагностика компьютера.

15. edit — вызов текстового редактора MS-DOS Editor.

16. qbasic — вызов языка программирования BASIC.

17. doskey — вызов программы, облегчающей редактирование содержимого командной строки (вводимых команд DOS).

18. tree c:\имя каталога /f — вывод содержимого указанного каталога.

19. msav — проверка дисков антивирусной программой MS-Antivirus.

20. memmaker — оптимизатор распределения оперативной памяти.

Структура и функции DOS

Эволюция ОС MSDOS

MSDOS

1980 г. фирма США выпустила первый ПК и разработали ОС QDOS, потом все продали Microsoft и переименовали в MSDOS, затем создали PCDOS.

Другая фирма разработала DRDOS. Затем DRDOS переименовали в Novell DOS.

MSDOS версии1.0. это версия похожа на СР/м. Отличие в том что поддерживала пятидюймовые диски объемом 160 КБ

1.1. пятидюймовые диски объемом 320 КБ

2.0.она разработана для компьютера IBM-РС/XT. Из ОС Unix заимствована древовидная система каталогов; переназначение устройств в/в. Документированные драйверы (текст программы получают на языке ассемблера), возможность их написания; доступ к последовательным устройствам как к файлам; винчестер 10 МБ и пятидюймовые диски по 180 и 360 КБ

2.1. на винчестере логические диски до 32 МБ

3.0.новые компьютеры IBM-РС/АT; переписана полностью с ассемблера на язык С; дискеты 1,2 МБ и виртуальные диски

3.1. добавлены средства обеспечения сети

3.2.это дискеты 3,5 дюйма, емкостью в 720 КБ

3.3. новые ПК, выпущенные фирмой IBM, это IBM – PC – PS/2; для компьютера PS/2 была разработана ОС ОС/2. ОС MSDOS 3.3. могла выполняться как задача под управлением ОС/2; дискеты V = 1,44 МБ

4.0. поддержка двух задачного режима: одна задача в оперативном режиме (здесь выполняются все программы MSDOS), а вторая в фоновом режиме (здесь выполняется не большое количество задач, например сетевые и телекоммуникационные). Оболочка: DOS Shell, она для замены оболочки NC (Norton Commander). Она поддерживала старые микропроцессоры 8088, 8086…

4.0.1. сняты ограничения в 32 МБ на размер логического диска. Первая русифицированная версия, содержит грубые ошибки

5.0. расширена возможность работы с оперативной памятью (ОП); сняты ограничения на 640 КБ в ОП

6.0. новые команды; интерактивные системы конфигурирования; поддержка оптических дисков; подсистема управления энергопитанием; утилитарные оптимизации ОП; добавлен антивирусный пакет; подсистема межкомпьютерной связи

6.2. добавлена утилита восстановления информации на диске; оболочка DOS Shell исключена из комплекта доставки

6.2.2. переработаны и улучшены драйверы управления ОП; усовершенствована система помощи; упрощен процесс загрузки

1. интерпретатор командного языка (командный процессор)

2. файловая система

3. драйверы внешних устройств

Драйвер – программа, управляемая внешними устройствами.

DOS состоит из модулей:

— базовая система в/в [BIOS]

— блок начальной загрузки [Boot Record]

— блок расширения BIOS

— модуль обработки прерываний

Расположение модулей: BIOS – в микросхеме памяти (в ПЗУ); Boot Record , блок расширения BIOS, модуль обработки прерываний – на системном диске; а остальные на системном или обычном дисках.

BIOS (программа) функции:

Представляется в виде программы на микросхеме,

— автоматическое тестирование основных компонентов при включении компьютера

— вызов блока начальной загрузки; передает управление блоку начальной загрузки; блок начальной загрузки осуществляет загрузку остальных модулей

— обслуживание прерываний (аппаратные, процессорные, программные). (аппаратные – перемещение мышки; процессорные – вызывает процессор, деление на 0; программные – программа хочет выполнить … функцию), каждое прерывание имеет номер (0…255), аппаратура – 0…32, остальные — программные.

BIOS – программная оболочка вокруг аппаратных средств с использованием механизма прерываний.

Блок начальной загрузки

нулевая дорожка a первый сектор диска просматривает каталог системного диска a убеждается, что первые два файла это модули DOS a считывает их a загружает в ОП (расширения и обработки прерываний). Boot Record загружает 2 модуля:

· модуль расширения BIOS;

· модуль обработки прерываний.

Эти модули д.б на системном диске стоять первыми.

Блок расширения BIOS

Находится на диске в файле IO.SYS, представляет собой дополнение к BIOS. Он загружается BIOS-ом. Постоянно находится в ОП. BIOS позволяет добавлять драйверы, а также изменять выполнение некоторых функций BIOS.

Модуль обработки прерываний

реализован в виде файла MSDOS IO.SYS; основной модуль DOS. Он обеспечивает взаимодействие программ пользователя и ОС. Постоянно находится в ОП. Компоненты модуля – это подпрограммы, обеспечивающие работу файловой системы, обмен информации с дисками и т.д.

Командный процессор

Находится в файле command.com.. Может находиться в любом месте на диске (не на системном).

1. прием и синтаксический разбор команд, полученный с клавиатуры или с командного файла (.bat.).

2. исполнение внутренних команд ОС.

3. запуск и исполнение внешних команд и прикладных команд пользователя.

При загрузке command.com в памяти получается 2 части:

1. резидентная – при загрузке всегда в ОП, занимает мало места.

2. нерезидентная – загружается в ОП по необходимости, если надо ОП, она стирает визуальную память.

Драйверы устройств

Драйвер – резидентная программа, дополняющая систему в/в. Драйверы хранятся в виде файлов Расширение *.SYS. Имена драйверов указываются в файле CONFIG.SYS.

Когда управление передано модулю Input Output.SYS, он считывает модуль CONFIG.SYS. Далее загружаются драйверы, описанные в файле CONFIG.SYS. Управление затем передается модулю обработки прерываний, он устанавливает таблицы прерываний. Затем загружается файл командного процессора (он по умолчанию находится на системном диске в корневом каталоге). И уже ОС готова к работе и ждет команды. Командный процессор ищет файл автозагрузки, чтобы выполнить команду, заданную пользователем.

Внешние команды.

Внешние команды реализуются программами, которые хранятся на диске в виде загруженных файлов.

Загрузка MS DOS.

1. автоматически при включении питания – после успешного тестирования.

2. принудительная перезагрузка.

В дисководе А: д.б системная дискета: Boot Record, IO.SYS, MS DOS.SYS. или жесткий диск с установленной ОС.

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

После загрузки модулей IO.SYS и MS DOS.SYS , управление передается IO.SYS, который осуществляет поиск файла Config.sys, загружаются драйверы и устанавливаются параметры ОС. Если Config.sys отсутствует, загружаются стандартные драйверы, и устанавливаются параметры по умолчанию. Затем управление передается MS DOS.SYS, устанавливается таблица прерываний. Потом управление возвращается BIOS, которое передается командному процессору. Командный процессор ищет на диске файл автозагрузки.

Autoexec.bat передает ему управление. Autoexec.bat содержит команды, которые необходимо выполнить при каждом включении ПК.

Командная строка

это строка на экране, которую формирует на половину ОС и пользователь. КС: код__ параметры__ и она завершает свое выполнение после нажатия Enter.

Организация информации в MSDOS

Вся информация организуется в виде файлов, они формируются в каталоги. Существуют понятия текущего, корневого, подкаталогов.

Как в командной строке размещается?

Организация информации в MS DOS.

Для хранения информации используется файловая система.

· метасимволы (их 2:*(любое количество дополнительных символов) и ?(любой один дополнительный символ))

· зарезервированные имена устройств, которые м.б использованы в качестве файлов: CON – консоль монитор + клавиатура; AUX – первое коммуникационное устройство (CON1), CON2 – второе коммуникационное устройство(их м.б до 4), PRN – первое печатное устройство (LPT1), их м.б несколько; NUL – псевдоустройство.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Для студента самое главное не сдать экзамен, а вовремя вспомнить про него. 10034 — | 7499 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

MS-DOS

Операционные системы MS-DOS, Windows 95, Windows 98 и старое железо компьютера — установка, настройка, использование.

Основные команды MS-DOS . Часть 2.

Команды MS-DOS — минимальный список.

Команды MS-DOS легко запоминаются в случае, если вы владеете хорошо (на школьном уровне) английским языком. Чаще всего команда — это сокращенная фраза.

Эта чистая как снег команда format c: …

Рассмотрим минимальный список команд, которые нам могут понадобиться для работе в DOS. Мы их будем использовать для установки операционных систем на базе DOS или поиска и запуска установленного файлового менеджера.

Команды MS-DOS общесистемного назначения.

При запуске MS-DOS вы увидите приглашение работы в командной строке. По умолчанию оно будет обозначать корневой каталог диска с установленной операционкой. Допустим, операционная система установлена на диск C: , приглашение будет выглядеть:

C:\>

Сменить текущий диск можно набрав новое имя дисковода.

Примеры:
d: — устанавливает текущий диск D:\>
a: — устанавливает текущий диск A:\>

prompt

Изменить вид приглашения (prompt — англ. напоминание, подсказка).

Формат команды:
prompt [текст]

Специальные сочетания символов:
$p — текущий дисковод и каталог;
$n — текущий дисковод;
$d — текущая дата;
$t — текущее время;
$v — версия DOS;
$_ — переход на новую строку;
$s — пробел;
$g — символ «>»;
$h — удаление предыдущего символа.

Примеры:
prompt $p$g — устанавливает приглашение вида c:\mydir\doc>;
prompt $t$h$h$h$h$h$h$g — устанавливает приглашение вида 15:35>

Вывести на экран версию DOS (version — англ. версия).

Формат команды:
ver

Пример:
ver — на экран выводится версия используемой операционной системы. Например: MS-DOS Version 6.22

Команды MS-DOS для работы с каталогами.

Отобразить список файлов и подкаталогов для указанного каталога (directory — англ. директория, каталог)

Формат команды:
dir [дисковод:][путь\][имя-файла] [параметры]

Параметры:
/p — поэкранный вывод;
/w — вывод в широком формате;
/s — оглавление указанного в команде каталога и всех его подкаталогов;
/b — только имена файлов без заголовочных и итоговых сведений;

Сортировки:
/on — по имени;
/oe — по расширению;
/od — по времени;
/og — сначала выводить сведения о подкаталогах;

Примеры:
dir — оглавление текущего каталога
dir *.exe — сведения обо всех файлах .exe текущего каталога

Вывод оглавления в файл или на принтер:
dir > prn — вывести оглавление текущего каталога на принтер;
dir c:\*.txt > txtfiles.txt — создать в файле txtfiles.txt список всех файлов с расширением .txt, находящихся в корневом каталоге диска c:

Изменить текущую рабочую директорию (change directory — англ. изменить каталог, директорию).

Формат команды:
cd [дисковод:][путь]

Примеры:
cd \ — переход в корневой каталог текущего диска;
cd \exe — переход в каталог exe в корневом каталоге;
cd .. — переход в наддиректорию;
cd — сообщает текущий диск и каталог

Создать директорию (make directory — англ. создать каталог, директорию).

Формат команды:
md [дисковод:][путь\]имя-каталога

Примеры:
md abc — создать каталог abc в текущем каталоге;
md c:\users\my — создать каталог my в каталоге users в корневом каталоге диска c:

Переместить файлы в другой каталог. Переименовать директорию (move — англ. переместить).

Формат команды:
move [/y] имя-файла имя-каталога
move [/y] имя-файла [дисковод:][путь]новое-имя-файла

С параметром /y при существовании в каталоге-приемнике файлов с теми же именами, что и пересылаемые, выполняется замещение этих файлов без запроса. Задание нового имени возможно только при пересылке одного файла. Например, команда move *.bac a:\*.old ошибочна.

Примеры:
move *.doc d:\ — переместить файлы с расширением doc из текущего каталога в корневой каталог диска d:;
move f1.txt tmp\f2.txt — переместить файл f1.txt в каталог tmp с переименованием в f2.txt.

Формат команды:
move [дисковод:][путь\]имя-каталога новое-имя-каталога

Примеры:
move a:\temp tmp — переименовать каталог temp корневого каталога диска а: в tmp.

deltree

Удалить каталог со всем содержимым (delete tree — англ. удалить дерево (файлов или директорий)).

Формат команды:
deltree [/y] имя-файла-или-каталога

Команда deltree может удалять как каталоги, так и файлы. В имени файла-или-каталога можно использовать символы * и ?.

Примеры:
deltree temp — удалить каталог или файл с именем temp из текущего каталога;
deltree /y d* — удалить из текущего каталога все каталоги и файлы, имя которых начинается на d, не запрашивая подтверждение.

Команды MS-DOS для работы с файлами.

Вывести (напечатать) содержимое файла на экран (type — англ. напечатать).

Формат команды:
type имя-файла

Примеры:
type t1.doc — вывод на экран файла type t1.doc из текущего каталога.

copy con

Создать текстовый файл (copy console- англ. скопировать консоль (то, что набираем клавиатурой на экране) в файл).

Формат команды:
copy con имя-файла

Ctrl+Z, F6 — признак конца файла.
Enter — признак конца строки.

Примеры:
copy con work.txt — создать в текущем каталоге текстовый файл work.txt.

Копировать файл (copy — англ. скопировать).

Формат команды:
copy имя-файла1 имя-файла2
copy имя файла1 [имя-каталога2]

В именах файлов можно употреблять символы * и ?, а также указывать имя диска и путь.
Команда copy не копирует скрытые файлы и файлы нулевой длины.
Если файл с таким же именем, как у копии, создаваемой командой уже существует, то он замещается.

Примеры:
copy x.txt z.txt — скопировать файл x.txt в текущий каталог с именем z.txt;
copy a:\*.* — cкопировать все файлы из корневого каталога диска а: в текущий каталог текущего диска;
copy \text\*.txt a:*.doc — скопировать из подкаталога text текущего каталога все файлы с расширением txt в текущий каталог диска а:. Файлы получат расширения doc.

Илон Маск рекомендует:  Что такое код closedir

Использование устройств:
copy t1.txt prn — копирование файла t1.txt на принтер;
copy t1.txt con — копирование файла t1.txt на экран монитора

Удалить файл (delete- англ. удалить).

Формат команды:
del имя-файла

Примеры:
del *.txt — удалить все файлы с расширением .txt из текущего каталога;
del name.doc — удалить из текущего каталога файл с именем name.doc

Переименовать файл (rename- англ. переименовать).

Формат команды:
ren имя-файла1 имя-файла2

В параметре имя-файла1 можно указывать дисковод и путь, в имя-файла2 — нет.
Команда ren не обрабатывает скрытые файлы.

Примеры:
ren xxx.doc xxx.txt — переименовать файл xxx.doc текущего каталога в xxx.txt;
ren a:*.txt *.doc — переименовать все файлы текущего каталога на диске а: с расширением .txt в файлы с такими же именами и расширениями .doс

Команды MS-DOS для работы с дисками.

format

Форматировать диск (format— англ. форматировать).

Формат команды:
format дисковод: [параметры]

Параметры:
/s — создать системный диск;
/v:метка — задание метки диска;
/u — безусловное форматирование с уничтожением имеющихся данных;
/q — быстрая очистка без контроля наличия сбойных участков.

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

Примеры:
format a: /u — безусловное форматирование дискеты а:;
format a: /q — очистка дискеты;
format a: /s — форматировать дискету и сделать ее системной.

Перенести на диск системные файлы DOS (system- англ. система).

Формат команды:
sys [путь] диск:

Если путь не задан, системные файлы берутся из корневого каталога текущего диска.

Примеры:
sys a: — перенести на диск а: системные файлы из корневого каталога текущего диска.

fdisk

Сконфигурировать жесткий диск для использования DOS. Работает в интерактивном режиме. (disk— англ. диск). Работает в интерактивном режиме (вопрос-ответ).

  • создание основного раздела MS-DOS;
  • создание расширенного раздела MS-DOS;
  • установка активного раздела;
  • удаление раздела;
  • вывод данных раздела;
  • выбор следующего жесткого диска для создания разделов (если система имеет несколько жестких дисков).

Формат команды:
fdisk [параметры]

Параметры:
/? или /H — вывести справочный текст.
/d — позволяет удалять разделы, отличные от DOS. Его следует использовать с осторожностью.
/ststus — вывести обзорную информацию о разделах жесткого диска (дисков) вашего компьютера. Если /ststus не обеспечивает достаточно подробной информации о диске, то запустите программу fdisk без параметра /ststus и выберите пункт 4.

Примеры:
fdisk — начать работу с дисками в интерактивном режиме.

label

Задать метку диска, тома (label— англ. метка, этикетка).

Формат команды:
label дисковод:

Метка — обозначение длиной до 11 символов.
Недопустимые символы: * ? / \ | . , ; : + = [ ] ( ) & ^ » .
Чтобы узнать метку диска, можно использовать команду vol. (vol дисковод:)

Примеры:
label a: — сообщить меткe диска а:.

В третьей части цикла статей об основных командах MS-DOS мы рассмотрим применение наших знаний на практике при установке операционной системы на старое железо.

Комментировать Отменить

Для отправки комментария вам необходимо авторизоваться.

Лабораторная работа №2. Системные функции dos ввода-вывода символьной информации и ее обработка в компьютере

ЛАБОРАТОРНАЯ РАБОТА №2

СИСТЕМНЫЕ ФУНКЦИИ DOS ВВОДА-ВЫВОДА СИМВОЛЬНОЙ ИНФОРМАЦИИ И ЕЕ ОБРАБОТКА В КОМПЬЮТЕРЕ

­ Освоение стандартных способов ввода-вывода DOS.

­ Разработка программ по обработке символьной информации с использованием строковых команд.

1.2 Стандартные способы ввода-вывода DOS

Для того чтобы написать простую, но законченную программу, необходимо знать три вещи — как вводить данные, как выводить результат и как остановить выполнение программы. В языках высокого уровня имеются специальные операторы ввода/вывода, которые позволяют в удобной форме реализовать эти функции. В системе команд процессора ix86 также имеются команды ввода/вывода, но они реализуют эти операции на самом низком, физическом уровне, т. е. обеспечивают обращение к портам ввода/вывода по конкретным адресам. Для обеспечения ввода/вывода информации на этом уровне программист должен знать номера портов каждого устройства, а также протоколы или алгоритмы обслуживания этих устройств. Операционная система MS DOS реализует ряд сервисных функций ввода/вывода на логическом уровне, которые выступают как пронумерованные функции прерывания Int 21h. При этом прикладная программа пользователя должна сообщить необходимые для данной функции параметры и передать управление DOS, которая и осуществит все необходимые операции по управлению устройством на физическом уровне, а затем вернёт управление прикладной задаче, сообщив, успешно ли завершилась операция, или же была допущена ошибка.

Функции информационного обмена MS DOS в своём развитии изменялись от специализированных программ обмена для каждого типа устройства на основе блока управления файлами FCB, до унификации обмена на основе мощной файловой системы (начиная с DOS 3.0) через описатель (дескриптор). Описатель или логический номер файла идентифицирует файл или устройство, с которым должна работать прикладная программа. Это упрощает программирование операций ввода/вывода, т. к. позволяет осуществлять обмен информации независимо от природы файла (устройства). Существует пять стандартных описателей файлов, которые предоставляются прикладной программе:

– 0 – стандартное устройство ввода (CON — клавиатура);

– 1 — стандартное устройство вывода (CON — монитор);

– 2 — стандартное устройство ошибок (всегда CON – монитор, для сообщений);

– 3 — стандартное вспомогательное устройство;

– 4 — стандартное печатающее устройство;

При вызове любой функции DOS код функции помещается в регистр AH, дополнительные параметры располагаются в других регистрах РОН. Возвращаемая информация содержится в регистре AL или AX, если флаг CF=0. Флаг CF устанавливается в 1, если произошла какая-либо ошибка, код которой заносится в регистр AX (так называемый код возврата ошибки).

Стандартный ввод (как и стандартный вывод) можно перенаправить средствами DOS на любое устройство или в файл, а стандартная ошибка всегда связана с экраном (обычно дескриптор 2 используют для вывода диагностических сообщений).

Перенаправление ввода или вывода программы осуществляет командный процессор . Если, допустим, в программе PROG предусмотрен ввод данных через дескриптор стандартного ввода ²0² , а вывод данных через дескриптор вывода ²1² , то при обычном запуске программы командой

программа будет требовать входные данные с клавиатуры, и выводить результаты своей работы на экран. Если, однако, при запуске программы использовать символ перенаправления

PROG. EXE > FILE. TXT

система сама создаст файл FILE. TXT, и весь вывод программы будет записан в этот файл. Ввод по-прежнему будет осуществляться с клавиатуры. Запуск программы командой

PROG. EXE FILE. TXT

заставит программу выполняться в режиме ввода информации из файла FILE. DAT и вывода в файл FILE. TXT. Ни экран, ни клавиатура использоваться не будут. Сама программа ничего не знает об этих перенаправлениях — она во всех случаях обращается к стандартному устройству ввода для ввода данных и к стандартному устройству вывода для её вывода.

Просто DOS как бы подставляет ей на входе и выходе другие устройства.

1.3 Ввод с клавиатуры символьной информации

Буфер ввода данных с клавиатуры.

Нажатие любой клавиши клавиатуры вызывает сигнал аппаратного прерывания (прерывания с типом 09h), заставляющий процессор прервать исполняемую программу и перейти на подпрограмму обработки прерывания от клавиатуры. Обработчик прерывания формирует двухбайтовый код с последующей засылкой его в кольцевой буфер ввода данных с клавиатуры, располагающийся по адресу 0040h:001Eh в системной области оперативной памяти. Для алфавитно-цифровых клавиш старший байт этого кода представляет scan— код клавиши (условный номер клавиши на клавиатуре), а младший — ASCII-код клавиши, т. е. 8- битовый код закреплённого за этой клавишей символа.

Заполнение буфера клавиатуры, рассчитанного на 15 слов или ударов по клавишам, происходит по мере нажатия клавиш и не связано с выполнением текущей программы. Если программе требуется ввести с клавиатуры определённый символ (или строку), она с помощью соответствующей системной функции DOS обращается к буферу ввода и, при наличии в нём данных, передаёт первый из поступивших в этот буфер символов в программу. Дело в том, что запись и считывание кодовых слов в буфер клавиатуры соответствует принципу FIFO (first in — first out, первым вошёл — первым вышел), поэтому считывание символа из буфера освобождает место для ввода последующих.

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

Процесс считывания кодов с буфера ввода может дать непредсказуемый эффект, если перед вызовом функции DOS этот буфер не был пуст. Программа не желающая вводить набранные досрочно коды, должна очистить клавиатурный буфер с помощью специальной функцией 0Ch прерывания 21h (при al=0).

Системные функции DOS ввода данных с клавиатуры.

DOS предоставляет несколько способов ввода данных с клавиатуры:

­ использование группы функций Int 21h (01h, 06h, 08h, 0Ah¸ 0Ch), обеспечивающих посимвольный ввод с клавиатуры в разных режимах;

­ обращение к клавиатуре, как к файлу, с помощью функции 3Fh.

Все функции DOS, считывающие данные с клавиатуры, передают в программу только ASCII — код (младший байт кодового слова клавиши), оставляя scan — код (старший байт) без внимания. Правда это относится только к алфавитно-цифровым клавишам, т. е. клавишам, за которыми закреплены отображаемые на экране символы (94 символа со значениями ASCII — кода от 32 до 126). Особенности считывания информационных кодов с других, так называемых функциональных и управляющих клавиш, будет рассмотрено дальше в разделе ² Расширенные коды ASCII² .

­ Функция 01h — ввод одиночного символа с эхом.

Вводит символ из стандартного устройства ввода и отображает его на устройстве стандартного вывода. Ввод каждого символа сопровождается изменением координат. При отсутствии символа ждёт ввода. При наборе строки обрабатываются управляющие клавиши: BS (шаг назад), TAB (табуляция), ENTER (переход на начало текущей строки). Допустимо перенаправление ввода. Если ввод не перенаправлен, выполняет обработку (нажатие данной комбинации клавиш вызывает обработчик прерывания int 23h, завершающий текущую программу с выходом в DOS). Для чтения расширенного кода ASCII требует повторного выполнения функции.

Вызов: AH=01, Int 21h.

Выход: AL= код символа.

Для приобретения практических знаний для работы с этой, а также некоторыми другими функциями DOS, предназначен демонстрационный файл-программа Demon. asm, приведённый в Приложении 1 к данной работе.

­ Функция 06h — ввод одиночных символов из стандартного устройства ввода и вывод одиночных символов на стандартное устройство вывода.

Режим работы определяется содержанием регистра DL в момент вызова функции: DL= FF — режим ввода, DL= <0h - 0feh>— режим вывода соответствующего этому коду символа. В режиме вывода коды ASCII: 07h — звонок, 0Dh — возврат каретки, 0Ah — перевод строки, рассматриваются как управляющие и выполняются соответствующие им действия.

Если вводимый символ в устройстве ввода присутствует, то он помещается в AL (без эха) с установкой флага ZF=0, иначе ZF=1. Отличительным качеством функции 06h является то обстоятельство, что она, просматривая устройство ввода, не останавливает программы, если не обнаруживает в нём символа, а просто устанавливает флаг ZF=1 (обнаружено 0- символов). Допускает перенаправление ввода — вывода. Для чтения расширенного кода ASCII требуется повторное выполнение функции.

Вызов: AH=06h, Int 21h.

Ввод (без эха): DL=FF. Выход: ZF=0, AL= код символа;

ZF=1 — устройство ввода пустое.

Вывод: DL=FEh¸ 00h. Код в регистре DL является одновременно и кодом выводимо символа.

­ Функция 08h — ввод символа без эха.

Вводит символ из стандартного устройства ввода. При отсутствии символа ждёт его ввода. Допустимо перенаправление ввода. Для чтения расширенного кода ASCII требует повторное выполнение функции. Если ввод не перенаправлен, выполняет отработку (иначе надо предварительно включить режим BREAK).

Функция, как правило, используется для ввода пароля для защиты программы от несанкционированного запуска. Пример использования данной функции будет рассмотрен в одной из программ этой работы.

Вызов: AH=08h, Int 21h.

Вывод: AL= код символа.

­ Функция 0Ah — буферизованный ввод с клавиатуры.

Вводит строку байт из устройства стандартного ввода в буфер пользователя по адресу DS:DX, с отображением на устройстве стандартного вывода. Допустимо перенаправление ввода. Если ввод не перенаправлен, выполняет отработку (иначе надо предварительно включить режим BREAK).

Функция допускает редактирование данных при их вводе клавишами: Backspace (отмена последнего символа), Esc (отмена всего набранного текста), F5 (запоминает текущую строку как подсказку), F3 (восстанавливает подсказку для ввода). Ввод символов строки заканчивается нажатием клавиши , код которой (0Dh), вводится в качестве последнего символа в отведённый буфер.

Структура буфера (резервируется в сегменте данных): байт 0- назначаемая пользователем максимальная длина строкис учётом символа CR (0Dh), байт 1- число реально введённых символов без учёта символа CR, байт 2 и далее — строка. В следующем примере приведена процедура In_string ввода строки в буфер, емкостью 50 символов. Она возвращает адрес первого символа строки в регистре DX, а число символов в регистре CX.

;Адрес буфера пользователя

;запрос функции 0Ah

;Поместить счётчик символов в cx

;Сделать dx указателем строки

­ Функция 0Ch — вызов служебной функции DOS для ввода данных с предварительной очисткой буфера клавиатуры. Допускает переопределение ввода.

Вызов: AH= 0Ch, Int 21h,

AL= номер функции ввода: 01, 07, 08, 0Ah (если AL=0, то только очистка),

DS:DX = адрес буфера, если AL=0Ah.

Выход: AL = байт входных данных (если при вызове Al=0Ah, данные помещаются в буфер).

­ Функция 3Fh — ввод данных из файла или устройства.

Универсальная функция ввода данных в буфер с указателем DS:DX из источника, определённого дескриптором в регистре BX.. Допускает переопределение ввода. В регистре CX указывается число байтов, которое необходимо ввести. Пример использования:

;Дескриптор ввода (клавиатуры)

;Число пересылаемых байт

;Адрес буфера ввода

;Вызов функции DOS

;Вызов функции DOS

Команда Int ожидает окончание ввода символов, которое фиксируется нажатием клавиши Enter. После ввода текста и нажатия клавиши Enter в буфер In_Aria автоматически вводится два управляющих символа: CR(код 0Dh) и LF(код 0Ah). Вследствие данной особенности, максимальное число символов и размер буфера ввода должны содержать место для двух дополнительных символов. При успешном завершении операции флаг CF=0, а в регистре AX устанавливается число байтов, введённых с клавиатуры (плюс два дополнительных символа). Если CF=1, то в регистре AX содержится возвратный код ошибки. Это либо 5 (отказ в доступе), либо 6 (неверный дескриптор).

К особенностям использования данной функции следует отнести автоматический переход на новую строку по окончанию ввода данных.

1.4 Функции DOS вывода данных на экран

DOS предоставляет следующие способы вывода данных на экран:

— использование функций Int 21h (02h, 06h, 09h), обеспечивающих посимвольный ввод с клавиатуры в разных режимах;

— обращение к экрану, как к файлу, с помощью функции 40h.

· Функция 02h — вывод одиночного символа.

Выводит символ, находящийся в регистре DL на экран, после чего курсор сдвигается на одну позицию вправо. Для вывода строки функцию следует использовать в цикле. Допустимо перенаправление вывода. Выполняет обработку при вводе этой комбинации с клавиатуры перед выводом каждого 64-го символа. Эта функция выводит и управляющие ASCII — символы с кодами 7, 8, 9, 0Ah, 0Dh. Символ с кодом 7 (bell, звонок) вызывает звуковой сигнал, с кодом 8 (backspace, забой)- возвращает курсор на одну позицию влево, с кодом 9 (tab, табуляция) — смещает курсор на одну позицию вправо, кратную 8. Действия управляющих клавиш с кодами 0Ah и 0Dh рассматривались ранее.

Вызов: AH=02h, Int 21h

Ввод: DL=ASCII -код символа

Вывод: AL= код последнего записанного символа (кроме случая, когда DL=09, тогда возвращается значение 20h)

Использование данной функции рассмотрим на примере процедуры перехода на новую строку.

;Запрос функции 02h

;Второй вызов DOS

· Функция 09h — вывод строки.

Выводит строку символов на устройство стандартного вывода (используется в системных программах для вывода на экран информационных сообщений). Строка должна заканчиваться символом $ (код 24h), который служит признаком конца строки, и сам не выводится. Допустимо перенаправление вывода. В сообщение могут быть включены и управляющие коды (7, 8, 9, 0Ah, 0Dh), которые вызывают соответствующие им действия (см. функцию 02h). Допустимо использование Exc- последовательностей. Функция выполняет обработку при вводе этой комбинации с клавиатуры перед выводом каждого 64-го символа.

;Адрес строки Promt: DS:DX

;Запрос функции 09h

· Функция 40h — вывод данных в файл или в устройство.

Универсальная функция вывода данных из буфера пользователя в сегменте данных в файл или на устройство, дескриптор которого указывается в регистре BX. Дескриптор 1, закреплённый за стандартным устройством вывода, обеспечивает перенаправление вывода. Значение регистра CX определяет число байтов, которые должны быть выведены, а пара регистров DS:DX указывает адрес выводимых данных. Управляющие коды 08h, 0Ah, 0Dh и некоторые другие приводят к выполнению соответствующих им действий. После завершения вывода при CF=0 регистр AX содержит число действительно выведенных байтов, а при CF=1 — возвратный код ошибки. Как и при использовании функции 3Fh, это коды ошибок 5 или 6.

;Запрос функции 40h

;Число пересылаемых байт

;Адрес буфера для выводимого сообщения

1.5 Расширенные коды ASCII и управление программой с клавиатуры

Как уже отмечалось в п.1.2, рассмотренный процесс считывания ASCII — кодов клавиш клавиатуры с помощью системных функций DOS относится к алфавитно-цифровым клавишам, за которыми закреплены ASCII — таблицей отображаемые символы (буквы, цифры, знаки препинания и др.). Кроме них, на клавиатуре персонального компьютера имеется ряд клавиш, которым не назначены какие-либо отображаемые символы. Это, например, функциональные клавиши . , клавиши управления курсором , , . , , , специальные клавиши , , а также использующие на практике различные сочетания клавиш с , и . В этом случае, в качестве scan— кода клавиши или какой-либо комбинации из них, выступает также старший байт кодового слова, но уже при нулевом младшем байте (нулевом коде ASCII). Например, при нажатии клавиши в кольцевой буфер ввода клавиатуры поступает код 3B00h, а клавиши — 4700h.

Илон Маск рекомендует:  Добавление данных

В литературе, двухбайтовые коды клавиш, содержащие на месте кода ASCII ноль, называются расширенными кодами ASCII. Эти коды (и соответствующие им клавиши) широко используются для управления программами. Широкое использование в компьютерах интерактивных средств требовало расширение возможностей ввода с клавиатуры управляющей информации, которую программа должна отличать от вводимого текста. Поэтому расширенные коды ASCII генерируются и всеми алфавитно-цифровыми, если они нажимаются совместно с клавишей . В Приложении к работе приведены некоторые значения расширенных ASCII — кодов.

Рассмотренные выше функции DOS, предназначенные для посимвольного ввода данных с клавиатуры, позволяют работать и с расширенными кодами ASCII. Однако программа при этом должна вызывать функцию DOS дважды. Первый вызов всегда возвращает младший байт и если он равен нулю, то необходимо повторить вызов этой же функции (вообще-то это необязательно) для вывода старшего байта. Это и будет информационный байт расширенного кода ASCII, который можно использовать для управления программой.

Обратим здесь внимание на важный момент! Расширенный код ASCII можно считать, если программа будет настроена на проверку нулевого значения младшего байта для каждого нажатия клавиши.

В качестве примера управления программой от функциональных клавиш приведён фрагмент программы, в которой альтернативные действия реализуются на основе анализа расширенных кодов ASCII.

;Ожидаем нажатия клавиши

;Функция ввода одиночного символа без эха

;Первый вызов DOS

;Расширенный ASCII код?

;Да, введём старший байт

;Повторный вызов DOS

;Вывод сообщения mes1

;Вывод сообщения mes2

;Вывод сообщения mes3

1.6 Строковые команды. Общая характеристика

Строкой или литералом в языке ассемблера называется последовательность букв, цифр и др. символов, заключённых в кавычки или апострофы, (двойные кавычки). Следует отметить, что иногда понятие строки трактуется в расширительном смысле, а именно, как последовательность байтов, которые могут либо представлять, либо не представлять ASCII — символы.

Строковые команды, несмотря на синонимичное название со строковыми переменными, предназначены для обработки не только ASCII — строк, но и вообще блоков байтов, одинарных или двойных слов, каждое из которых хранится в памяти в двоичном коде.

Строковые команды представлены в табл. 1.1 и по своему назначению делятся на две группы:

— команды перемещения данных (Lods, Stos, Movs),

— команды для поиска и сравнения данных (Scas, Cmps).

Любая строковая команда может оперировать как байтами, так и словами, что отражается в мнемокоде команды (например: movsb, movsw, movsd). Все строковые команды, в отличие от других команд процессора ix86, используют для выполнения своих функций одни и те же регистры: ds:si(esi)- регистры строки — источника,

es:di(edi)- регистры строки — приёмника.

При этом индексные регистры si(esi) и di(edi) определяют смещения элементов строк в сегментах данных, определяемых регистрами ds и es соответственно. Установите es=ds, если это не противоречит другим условиям реализации программы, что позволит вам не беспокоится о корректной адресации сегментов памяти. Необходимо помнить, что в строковых инструкциях приёмник — строка es:di(edi) не допускает переопределение, а источник — строка ds:si(esi), допускает переопределение на es:si(esi).

Каждая из строковых команд выполняет операцию только над парой элементов двух строк (или над одним для команд Lods, Stos, Scas) и автоматически настраивается на обработку соседних элементов, обеспечивая продвижение по строке в нужном направлении, а именно:

Здесь величина d определяется согласно правилу:

Таблица 1.1 — Команды обработки строк

Название команды и её мнемокод в TASM

Lods src-Загрузка Acc из строки

src=byte ds:si Lodsb

src=word ds:si Lodsw

src=dword ds:si Lodsd

Stos dst — Сохранение Acc в строке

dst=byte es:di Stosb

dst=word es:di Stosw

dst=dword es:di Stosd

Movs dst, src — Пересылка элемента строки

dst=byte es:di, src=byte ds:si Movsb

dst=word es:di, src=word ds:si Movsw

dst=dword es:di, src=dword ds:si Movsd

Scas dst — Поиск элемента в строке

dst=byte es:di Scasb

dst=word es:di Scasw

dst=dword es:di Scasd

Все флаги операции сравнения

Cmps dst, src — Сравнение элементов строк

src=byte ds:si, dst=byte es:di Cmpsb

src=word ds:si, dst=word es:di Cmpsw

src=dword ds:si, dst=dword es:di Cmpsd

Все флаги операции сравнения

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

Существуют три командных префикса:

— REP (repeat, повторять) — повторять, пока cx¹ 0,

— REPE/REPZ — повторять, пока (cx¹ 0)& (zf=1),

— REPNE/REPNZ — повторять, пока (cx¹ 0)& (zf=0).

Префиксы, используют регистр CX как счётчик числа циклов (беззнаковое число), которое должно быть записано в cx до начала выполнения строковой команды. Счётчик cx декрементируется на 1 после выполнения строковой команды, но проверяется перед её выполнением. Если cx=0, то строковая команда не выполняется ни разу. Префиксы REPE и REPNE дополнительно выставляют флаг нуля zf после выполнения строковой операции.

Идея простейшей защиты программы от несанкционированного запуска заключается в том, что где-то в программе записывается ключевое слово-пароль, и программа, начав работать, требует ввода этого слова с клавиатуры. Если пользователь ввёл пароль правильно, программа продолжит свою работу, иначе попросит ввести его заново или завершится. Ввод пароля обычно осуществляется функцией DOS не отображающей вводимые символы на экране и заканчивается нажатием клавиши (обычно 08h).

Password DB ‘camel’ ;Пароль

String DB 80 DUP(?)

Promt DB 13,10,’Введите пароль: $’

OK DB 13,10,’Работаем!$’

Start: mov ax,@data

;Вывод запроса на ввод пароля

Begin: mov ah,09h

mov dx, offset promt ;Адрес запроса

mov bx,0 ;Инициализация индексирования ввода

Pass: mov ah,08h ;Функция ввода символа в AL без эха

je compare ;Да, на сравнение

mov [string+bx],al ;Нет, сохраним символ

mov ah,02 ;Запишем на экран *

jmp pass ;Повторять

;Сравнение введённого пароля с действительным (сравнение строк)

Compare: push ds ;Установить ES на сегмент данных

mov si, offset string ;DS:SI- начало string

mov di, оffset password ;ES:DI — начало password

cld ;DF=0- просмотр вперёд

mov cx, bx ;Установить счётчик сравнения

Repe cmpsb ;Сравнивать, пока или повторять, пока символы двух строк ;совпадают, но не более CX раз

jne begin ;Строки не равны

;Вывод сообщения ОК, подтверждающего правильность пароля

mov dx, offset OK

Exit: mov ax,4C00h ;Ввод функции 4С для завершения программы

Логика построения программы поясняется подробными комментариями. В программе ввод пароля выполняется в бесконечном цикле, поэтому пользователь, не знающий пароля и запустивший программу, для выхода из неё должен будет нажать комбинацию клавиш .

– Ознакомиться с содержанием материала лабораторной работы и соответствующими тематическими разделами в рекомендуемой литературе.

– Получить исполняемый EXE — файл для программы Demon. asm (Распечатка. ASM — файла приведена в Приложении 1) и выполнить действия с операторами перенаправления ввода-вывода данных, а именно:

– Разработка программы в соответствии с индивидуальным заданием.

– Демонстрация основной программы с возможным использованием операторов перенаправления ввода-вывода.

– Основная программа должна обеспечивать интерактивный режим и удобный интерфейс с пользователем.

1.8 Варианты индивидуальных заданий

1. Ввести строку из произвольных ASCII — символов и произвести её сортировку под управлением функциональных клавиш: F1- по возрастанию; F2- по убыванию; F10- завершение программы. Работу программы отобразить на экране.

2. Ввести строку из произвольного числа символов и произвести в ней поиск подстроки SYMBOL. Если подстрока найдена, то её необходимо удалить. Вновь полученную строку вывести на экран. Если подстрока не найдена, вывести сообщение NOT_FOUND. Программу защитить паролем.

3. Ввести строку из произвольного числа символов. Выполнить преобразование символьной строки в её цифровой аналог на основе ASCII — кодов, поле чего произвести поиск максимального кода. Работу программы отобразить на экране и защитить паролем.

4. Ввести строку из произвольных ASCII — символов и произвести её сортировку к виду, включающему четыре части разделённые пробелами: цифры, буквы прописные, буквы строчные, все другие символы. Работу программы отобразить на экране и защитить паролем.

5. Ввести строку из нескольких слов, разделённых пробелами. Слова включают в произвольном порядке цифры, строчные и прописные латинские буквы. Отредактированная строка включает слова, начинающиеся с прописной буквы (остальные строчные). Цифры из слов должны быть удалены. Программу защитить паролем.

6. Ввести строку из произвольных ASCII — символов и выполнить с ней преобразования, задаваемые нажатием функциональных клавиш: — изменение порядка следования символов исходной строки на обратный, — замена строчной буквы на прописную и обратно, — завершение программы.

7. Ввести строку из произвольного числа символов и произвести в ней поиск подстроки COMPUTER. Если такой подстроки нет, то данную подстроку ввести в начало исходной строки и вывести на экран. В противном случае дать сообщение There is. Программу защитить паролем.

8. Добавление и удаление элементов из неупорядоченного списка. Элементы последовательно один за другим вводятся с клавиатуры. При этом, если такой элемент отсутствует в списке (первоначально список пуст), то он вводится в конец списка, в противном случае, он удаляется из него, а оставшиеся элементы сдвигаются влево (в сторону младших адресов) на одну позицию. Список элементов постоянно отображается на экране. Выход из программы осуществляется с помощью клавиши .

9. Ввести строку из произвольного числа символов. Выполнить преобразование символьной строки в её цифровой аналог на основе ASCII — кодов, поле чего произвести поиск минимального кода. Работу программы отобразить на экране и защитить паролем.

10. Ввод с клавиатуры на экран произвольный текста с одновременной записью в буфер. Реализовать элементы редактирования: стирание последних символов клавишей «», контроль над прописной буквой первого слова нового предложения. При ошибке строчная буква заменяется прописной. Переход на новую строку осуществляется кл. . Управление: — вывод копии отредактированного текста из буфера, — выход из программы.

11. Ввод с клавиатуры на экран произвольного текста с одновременной записью в буфер. Программа демонстрирует переход на новую строку одним из двух способов:

– нажатием клавиши , если последнее введённое слово пересекло границу в 40 символов. В этом случае на новую строку автоматически переносится всё последнее слово. После перехода на новую строку вывод текста может быть продолжен в обычном порядке. Выход из программы с помощью клавиши .

12. Ввести строку из произвольного числа символов и произвести в ней поиск подстроки AUTOMATON. Если такой подстроки нет, то в начало исходной строки поместить символ @, а в её конец дописать подстроку и вывести на экран. В противном случае дать сообщение: There is. Программу защитить паролем.

Отчёт по лабораторной работе должен содержать программы п. 1.7, а т

акже разработанные программы индивидуального задания из п. 1.8.

1.9 Контрольные вопросы к лабораторной работе №1

1. Что такое описатель (дескриптор)? Сколько описателей определено в DOS и как ими пользоваться?

2. Какие три функции DOS можно использовать для ввода символов с клавиатуры в регистр AL процессора?

3. Назовите функции DOS, осуществляющие ввод строки символов с клавиатуры в память данных.

4. Какие функции DOS осуществляют операцию вывода на экран:

– одиночных символов из регистра DL процессора,

– строки символов из памяти данных?

5. Напишите процедуру перевода курсора на новую строку с помощью DOS-функции 02.

6. Что такое скан — код клавиши и чем он отличается от расширенного кода ASCII? Как нужно организовать вызовы соответствующей функции DOS для получения расширенного ASCII-кода?

7. Каким сегментным регистром должен адресоваться сегмент данных, в котором располагается:

8. Какие строковые команды влияют на флаги, а какие нет?

9. Что нужно предпринять при написании программы, если строки — операнды команды должны располагаться в одном сегменте?

10. Перечислите префиксы повторения строковых команд и их возможные сочетания друг с другом.

11. В какой фазе исполнения команды происходит проверка счётчика на равенство нулю при выполнении:

– строковой команды с префиксом повторения,

– команды управления циклом Loop ?

12. Что происходит с исполнением этих команд, если счётчик СХ инициализирован нулём?

Файл Demon. asm для изучения поведения универсальных функций ввода-вывода DOS (38h и 40h) при использовании операторов переназначения ввода-вывода данных.

%TITLE «Исследование операторов перенаправления ввода вывода. Demon. asm»

;Дескриптор стандартного ввода

;Дескриптор стандартного вывода

;Дескриптор стандартной ошибки (экрана)

Db ‘Введите строку!’

;Установка в ds адреса

;Вывод служебного сообщения msg

mov bx, descrip_err

mov dx, offset msg

;Ввод строки с клавиатуры в буфер Buf

mov bx, descrip_in

;Ввод максимум 80 байт

mov dx, offset Buf

;Преобразование строчных латинских букв в прописные

;Счётчик элементов строки

;Инициализация указателя элементов строки

;Да, не преобразовывать

;Да, не преобразовывать

;Преобразуем в прописную

mov bx, descrip_out

mov dx, offset Buf

;Функция DOS 4Сh: выход из программы

;Возврат кода ошибки

;Вызов DOS. Останов

;Конец программы/точка входа

В таблицах П.1 и П.2 приводятся информационные байты некоторых расширенных кодов для функциональных клавиш и их сочетаний.

1 — Расширенные коды для функциональных клавиш

Использование системных вызовов операционной системы MS-DOS

Использование системных вызовов операционной системы MS-DOS

Функция Краткое описание
bdos вызов системы MS-DOS; используются только регистры DX и AL
dosexterr получение значений регистров из системы MS-DOS вызовом 59H
FP_OFF возвращает смещение far-указателя
FP_SEG возвращает сегмент far-указателя
int86 вызов прерывания MS-DOS
int86x вызов прерывания MS-DOS
intdos системный вызов MS-DOS
intdosx системный вызов MS-DOS
segread возвращает текущее значение сегментных регистров

Прототипы функций и макроопределения содержатся в файле dos.h.

Система программирования MSC предоставляет дополнительно функции:

Функция Краткое описание
inp чтение с указанного порта в/в
outp вывод в указанный порт в/в

Прототипы функций inp и outp содержатся в файле conio.h.

Система программирования ТС предоставляет дополнительно следующие функции:

Функция Краткое описание
absread чтение с диска по номеру сектора
abswrite запись на диск по номеру сектора
bdosptr вызов системы MS-DOS
country определение способа записи времени в данной стране
ctrlbrk установить реакцию на
disable отменить прерывания
enable разрешить прерывания
freemem освободить память
getinterrupt возбудить прерывание
getcbrk узнать установленную реакцию на
getdfree узнать объем свободного места на диске
getdta узнать адрес области передачи данных диска
getfat получить информацию из таблицы размещения файлов
getfatd получить информацию из таблицы размещения файлов
getpsp получить сегментный префикс для текущего программного адреса текущего выполняемого процесса
getvect узнать значение вектора прерывания
getverify узнать режим проверки записи на диск
harderr регистрация функции обработки аппаратных ошибок
hardresume возврат из функции обработки аппаратных ошибок
hardretn возврат из функции обработки аппаратных ошибок
inport ввести слово из порта
inportb ввести байт из порта
intr аналог функции int86
keep зафиксировать программу в памяти
MK_FP составить far-указатель из компонент
outport вывести слово в порт
outportb вывести байт в порт
parsfnm выделение имени файла из командной строки MS-DOS
peek получить значение слова по адресу
peekb получить значение байта по адресу
poke записать слово в память по адресу
pokeb записать байт в память по адресу
randbrd чтение с диска
randbwr запись на диск
setdta установить адрес области передачи данных диска
setvect задать значение вектора прерывания
setverify включить режим проверки записи на диск
sleep задержка
unlink удаление файла

Прототипы функций и макроопределения содержатся в файле dos.h.

Система программирования ТС предоставляет также следующие функции для обращения к BIOS (базовой подсистеме ввода/вывода операционной системы):

Конвертер DOC (WORD) в DOCX (WORD)

Сконвертируйте ваши doc-файлы в docx онлайн и бесплатно

  • Image
  • Document
  • Ebook
  • Audio
  • Archive
  • V >
  • abc
  • abw
  • csv
  • dbk
  • djvu
  • dng
  • doc
  • docm
  • docx
  • erf
  • ebm
  • ewm
  • emw
  • gzip
  • kwd
  • odt
  • oxps
  • ppt
  • pptx
  • pdf
  • rtf
  • rar
  • txt
  • wps
  • xls
  • xlsx
  • zip
  • Image
  • Document
  • Ebook
  • Audio
  • Archive
  • V >
  • abc
  • abw
  • csv
  • dbk
  • djvu
  • dng
  • doc
  • docm
  • docx
  • erf
  • ebm
  • ewm
  • emw
  • gzip
  • kwd
  • odt
  • oxps
  • ppt
  • pptx
  • pdf
  • rtf
  • rar
  • txt
  • wps
  • xls
  • xlsx
  • zip

Документ Microsoft Word

DOC ― это расширение файлов для документов текстового редактора. Оно связано преимущественно с приложением Microsoft Word. Файлы DOC также могут содержать графики, таблицы, видео, изображения, звуки и диаграммы. Этот формат поддерживается почти всеми операционными системами.

Microsoft Office Open XML

С 2007 года Microsoft начал использовать формат файла docx, созданный с использованием формата Office Open XML. Этот формат представляет собой сжатый файл, содержащий текст в форме XML, графики и иные данные, которые могут быть преобразованы в битовые последовательность при помощи защищенных патентами двоичных форматов. Поначалу предполагалось, что этот формат заменит формат doc, но оба формата все еще используются по сегодняшний день.

Функции DOS и BIOS для ввода/вывода

Функция ДОС INT 21/01– ввод с клавиатуры (Стандартного входного потока) символа с повтором его на экране (эхо-повтор), возвращает ASCII-код символа в регистре AL.Если имеется старшая часть кода, то есть ASCII-код расширенный (extended ASCII), используется для клавиш, не являющихся алфавитно-цифровыми: F1…F12, комбинации с ALT, CTRL, SHIFT; требуется двойной вызов данной функции (первый раз возвращается ).

Функции 03-08 имеют аналогичный формат.

Функция ДОС INT 21/03 аналогичный формат, только ввод производится с последовательного порта (по умолчанию, COM1)

Функция ДОС INT 21/07 –ввод с клавиатуры (нефильтрованный, нажатие CTRL-BREAK не определяется), без эхо-повтора на экране.

Функция ДОС INT 21/08 –ввод с клавиатуры, без эхо-повтора на экране.

Функция ДОС INT 21/0C –ввод с очисткой буфера (в AL – номер функции (01,06,07,08,0A)

Функции BIOS INT 16/00– возвращает в AL– ASCII код, в AH– Scan Code (аппаратный шестнадцатеричный код нажатой клавиши), однако если нажата клавиша, использующая расширенный ASCII-код, то AL=0,AH=Расширенный ASCII-код.

Илон Маск рекомендует:  Две колонки, навигация слева

Функция BIOS INT 16/01 –устанавливает флаг ZF, если есть символ во входном потоке; в остальном аналогична функции 00.

Может еще понадобиться функция 05– поместить символ во входной поток (символ в CL)

Функция ДОС INT 21/02 — вывод символа на экран (стандартный выходной поток), символ задается в DL, интерпретируются управляющие символы (08 – возврат курсора на одну позицию, 0А – переход на строку вниз и т.п.)

Функция ДОС INT 21/04 –аналогичный формат, только вывод в последовательный порт.

Функция ДОС INT 21/05 —тоже, стандартный вывод на принтер (в порт LPT).

Функция BIOS INT10/0E – AL– выводимый символ, интерпретируются управляющие символы. (BL– цвет фона для графических режимов)

Функция BIOS INT10/0A –тоже, но BH=0 (страница видеопамяти, основная), в CXможно задать количество повторений, управляющие символы не интерпретируются

Функция BIOS INT 10/09 –тоже, но в BLзадаются атрибуты (цвет) символа.

Функция в/в ДОС INT 21/06 –если DL = FF — то выполняется ввод, иначе вывод символа. Введенный символ возвращается в AL – как и в функциях 01,07,08; однако в отличие от них ДОС НЕ ОЖИДАЕТ, пока символ появится (будет нажата клавиша), если символа не появится, то на выходе будет установлен флаг ZF.

Цикл «пока не будет нажата какая-либо клавиша, продолжать действия»

Jnz Symbol_Ready ;Переход, если клавиша нажата

Функции BIOS и DOS для ввода/вывода строки символов:

В ряде случаев целесообразно организовать ввод строки символов как последовательный ввод символов по отдельности (например, если строка может состоять только из определенных символов):

Функция ДОС INT 21/09 –вывод строки, DS:DX – адрес строки, должна заканчиваться символом ‘$

Функция ДОС INT 21/0A –ввод строки, DS:DX буфер, организованный след. Образом – первый байт – максимальное количество символов в строке, во втором байте возвращается реальное количество введенных символов, начиная с третьего байта расположена сама строка, заканчивающаяся кодом «Enter»-а – 0Dh

H E L ODh

Функции BIOS ввода строки с клавиатуры отсутствуют. Функции вывода есть, но достаточны громоздки (рекомендуется использовать посимвольный вывод)

Функция BIOS INT 10/13 –вывод строки ES:Bp, длиной в CX,

AL=0, — строка символов, курсор не двигается

AL=1, — строка символов, курсор передвигается в конец строки

AL=2, — последовательность симв., атриб., симв., атриб, курсор не двигается

AL=3, — последовательность симв., атриб., симв., атриб, курсор передвигается в конец строки

Пример – ввод строки, состоящей только из числовых символов

Mov bx,offset string ;адрес начала

Nov_vvod:

Mov ah,01

Int 21h ; ввод

Cmp al,’0’

Jl nov_vvod

Cmp al,’9’

Jg nov_vvod

Mov [bx],al

Inc bx

Jmp nov_vvod

String db 10 dup (?)

Помимо ввода/вывода с клавиатуры программа также может получать данные с командной строки. То, что указывается после имени программы при её запуске, называется параметрами командной строки (они разделяются пробелами). В частности, при использовании нами Tlink.exe параметры командной строки – lab3.obj и /t. Командная строка при запуске программы расположена по адресу DS:0080h в формате Длина строки, строка, заканчивающаяся кодом 0Dh.

Кроме процедур в программе также можно использовать макросы –последовательность команд, на которую компилятор заменяетназвание макроса (макрокоманды) в тексте программы. Например, чтобы не писать много раз при выводе на экран последовательность из 3-х команд, можно оформить их в виде следующей макрокоманды .

Print macro x

Mov dx,offset x

Mov ah,09

Int 21h

Endm

Описание макрокоманды делается вначале (после org 100h и перед start: ).

Тогда, если приходится выводить в программе много разных сообщений, можно каждый раз писать одну команду вместо трех:

Mov ah,09h Mov dx,offset msg1 -> Int 21h Print msg1

Сам машинный код от этого не изменится, просто сократится время набирания программы. Компилятор ассемблера, встретив в тексте Print заменит его на последовательность 3-х команд, описанных в макросе, а «х» (параметр макрокоманды в описании) заменит на msg1.

Работа с экраном.

Экран (дисплей) с точки зрения программиста на ассемблере – тоже массив цифровой информации. Этот массив хранится в специальной области памяти, называемой видеопамять. Содержимое «текстовой» видеопамяти (то есть отображение экрана в текстовом режиме) начинается с адреса B800:0000,графической A000:0000.Видеоадаптер считывает данные области памяти и отображает на экране информацию в соответствии с режимом работы (текстовым или графическим).

Экран для программиста как бы состоит из отдельных ячеек, которые имеют свои координаты, отсчитываемые по горизонтали и вертикали (столбцы и строки). Координаты начинаются с 0. В текстовом режиме в ячейке может быть записан какой-либо символ, всего таких ячеек в зависимости от режима либо 80х25, либо 40х25 (столбцов х строк) в зависимости от режима экрана. В графическом режиме – точка (пиксель), которых опять же в зависимости от режима может быть от 320х200 до 1024х768 и более (по горизонтали х по вертикали).

В текстовой видеопамяти за каждую «ячейку» отвечают 2 байта – в первом содержится ASCII-код символа, во второй – байт атрибутов.Байт атрибутов определяет цвет символа и фона. Соответственно по адресу B800:0000 находится ASCII-код первого символа (в верхнем левом углу), B800:0001 – цвет его и фона, B800:0002 – второй символ и т.д.

Байт атрибутов организован следующим образом –

Бит интенсивности отвечает за яркость символа (1 – яркий), признак мерцания (1 – символ мерцает на экране). Биты R – red – красный, G – green – зеленый, B – blue – синий отвечают за соответствующие цвета. С помощью их комбинаций (как и в фотографии, где изображение формируется из трех основных цветов) и определяется цвета символа и фона. Например, 001 –синий , 010 – зеленый, 100 – красный, 011 – желтый и т.п.

В графической видеопамяти каждый байт (для режимов с количеством цветов до 16, иначе используются несколько байт) отвечает за отдельный пиксель и обозначает его цвет – адресу A000:0000 соответствует цвет точки с координатами (0,0) – левый верхний угол экрана, A000:0001 – точке с координатами (0,1) и т.д.

Последнее изменение этой страницы: 2020-12-17; Нарушение авторского права страницы

Операционная система MS-DOS

1.5. Обзор прерываний DOS

DOS предоставляет программе набор системных вызовов, реализованных с использованием механизма программных прерываний. Эти вызовы открывают прикладной программе доступ к системной информации, к системе консольного ввода/вывода, файловой системе, к подсистеме управления программами и памятью, позволяют организовать обращение к драйверам устройств ввода/вывода и т.д.

Все основные функции DOS вызываются с помощью прерывания INT 21h, однако DOS использует и другие прерывания:

INT 20h завершение работы программы;
INT 25h/26h чтение/запись на диск с абсолютной адресацией секторов;
INT 27h завершение работы программы с оставлением ее резидентной в памяти;
INT 28h прерывание зарезервировано для DOS, может быть использовано для составления резидентных программ;
INT 2Eh выполнение команды DOS;
INT 2Fh прерывание мультиплексора, используется для спулера печати PRINT.COM.

Функции прерывания INT 21h можно разделить на следующие группы:

  • получение системной информации;
  • символьный ввод/вывод;
  • работа с файловой системой;
  • управление программами;
  • управление памятью;
  • связь с драйверами устройств;
  • прочий системный сервис.

В данном обзоре мы кратко рассмотрим эти группы, делая акцент в основном на составе функций. Полностью информация об использовании функций прерывания DOS INT 21h (и других прерываний DOS) будет приводиться в соответствующих разделах книги.

Номер функции задается при вызове прерывания INT 21h в регистре AH.

Получение системной информации.

Функция 30h возвращает в регистре AX номер версии DOS. Например, для версии MS-DOS 5.00 содержимое регистра AH равно 00, регистра AL — 05.

Дополнительно через регистр BH функция возвращает программе серийный номер фирмы-производителя ОЕМ (IBM — 00, DEC — 16h, 0FFh — Microsoft и т.п.), а в регистрах BL:CX после вызова функции находится серийный номер пользователя.

Эта информация может применяться для анализа возможности использования таких средств операционной системы, которые поддерживаются не всеми версиями DOS, или для настройки программы на конкретный серийный номер пользователя.

Функции 2Ah и 2Ch позволяют программе узнать системную дату и время.

Есть функции, возвращающие текущий диск и текущий каталог. Номера этих функций — 19h и 47h.

Функция 2Fh позволяет программе узнать адрес текущей области DTA (Disk Transfer Area). Эта область используется, например, при поиске файлов в каталоге.

Важная информация находится в блоке PSP (Programm Segment Prefix). Этот блок располагается в памяти непосредственно перед выполняющейся программой. В нем находятся, в частности, параметры, передаваемые программе при запуске. Функция 62h возвращает адрес текущего блока PSP.

Кратко перечислим некоторые другие функции для получения системной информации:

35h получить значение вектора прерывания с заданным номером;
4Dh узнать код завершения процесса;
59h получить расширенный код ошибки;
54h узнать, используется ли проверка при записи на диск;
33h узнать, используется ли проверка на CTRL-BREAK.

Символьный ввод/вывод.

Эти функции применяются для работы со всеми символьными устройствами, такими как консоль, принтер, последовательный порт, и называются функциями стандартного ввода/вывода.

Ввод/вывод программы, использующей стандартные функции, может быть переназначен.

Приведем обзор основных функций стандартного символьного ввода/вывод в виде таблицы:

Код Назначение Описание
01h Ввод с клавиатуры Выполняется ввод символа со стандартного ввода и эхо-вывод символа на стандартное устройство вывода. Выполняется проверка на нажатие комбинации клавиш CTRL/C и CTRL-BREAK
06h Ввод с клавиатуры Ввод символа со стандартного ввода без ожидания и вывод его на устройство стандартного вывода. Комбинации CTRL/C и CTRL-BREAK не проверяются.
07h Прямой ввод Ввод символа со стандартного с клавиатуры устройства ввода. Комбинации клавиш CTRL/C и CTRL-BREAK не проверяются.
08h Ввод с клавиатуры Аналогично функции 07h, но проверяются комбинации клавиш CTRL/C и CTRL-BREAK.
02h Отобразить символ Отображаемый символ посылается на стандартное устройство вывода.
09h Отобразить строку На стандартное устройство вывода символов посылается строка, закрытая символом ‘$’.
03h Ввод из последовательного порта Вводится символ из последовательного порта
04h Вывод в последовательный порт Выводится символ на последовательный порт
05h Вывод на принтер Выводится символ на принтер.

Из таблицы видно, что для ввода с клавиатуры можно использовать несколько функций. Ввод без эхо-вывода удобен для такой информации, как пароли. Если логика работы программы не допускает прерывания по нажатию комбинаций клавиш CTRL-C или CTRL-BREAK, нужно использовать функции, которые не проверяют эти комбинации.

Для вывода строки символов можно использовать функцию 09h, но выводимая строка не может содержать символ ‘$’, так как этот символ используется в качестве признака конца строки.

Работа с файловой системой.

DOS предоставляет программам обширный сервис для работы с файлами и дисками. Практически все файловые операции можно выполнять с помощью специально предназначенных для этого функций, только в некоторых случаях (защита данных от копирования, например) приходится использовать прямое обращение к диску.

С помощью файловых функций DOS можно создавать и удалять файлы и каталоги, открывать и закрывать файлы, создавать временные файлы. Ввод/вывод может быть буферизован, можно получить как последовательный доступ к содержимому файла, так и произвольный.

Мы не будем приводить сейчас конкретные примеры или номера функций, отложим это до книги 3, посвященной файловой системе.

Управление программами.

DOS предоставляет программам возможность организовать запуск других программ или загрузку и выполнение программных оверлеев. Для этого служит функция 4Bh.

Для завершения работы программа должна также использовать одну из специальных функций DOS. Функция 4Ch, завершая работу программы, позволяет передать операционной системе некоторое число, называемое кодом завершения программы. Это число может быть затем проанализировано в пакетном файле командой IF ERRORLEVEL. Если одна программа запускает другую, то первая может получить код завершения второй с помощью функции 4Dh.

Для того чтобы завершающаяся программа осталась в оперативной памяти (т.е. стала резидентной), она должна вызвать прерывание INT 27h или воспользоваться функцией 31h.

Мы приведем различные примеры запуска программ из программ и научимся составлять резидентные программы.

Управление памятью.

DOS управляет распределением памяти с помощью блоков управления памятью MCB (Memory Control Block). Вся память разбивается на блоки различного размера, которым предшествует блок MCB, содержащий характеристики данного блока памяти (например, его размер).

Программа может динамически получать и освобождать области памяти с помощью функций 48h и 49h соответственно. Кроме того, можно изменять размер блока, выделенного операционной системой программе. Это делает функция 4Ah.

Детально механизм управления памятью будет рассмотрен в главе 2 при описании векторной таблицы связи DOS.

Связь с драйверами устройств.

Мы уже обращали Ваше внимание на то, что программы не могут обращаться непосредственно к драйверам устройств ввода/вывода. Все обращения к драйверам имеют либо неявный характер (ввод/вывод с помощью функций прерывания INT 21h), либо используют специальную функцию DOS с кодом 44h. Эта функция используется для обмена управляющей информацией между драйвером и программой.

Другие функции.

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

Bdos, bdosx вызвать функцию dos

Язык:
Русский
English

Процедуры и функции модуля DOS (по назначению)

Это — список функций и процедур модуля DOS по назначению.

Вы можете также искать эти процедуры и функции в списке по имени .

Процедуры даты и времени: Что делает

GetDate (процедура) Возвращает текущую дату, установленную в
операционной системе.
GetFTime (процедура) Возвращает дату и время обновления файла.
GetTime (процедура) Возвращает текущее время в операционной системе.
PackTime (процедура) Преобразовывает запись типа DateTime в LongInt.
SetDate (процедура) Устанавливает текущую дату в операционной системе.
SetFTime (процедура) Устанавливает атрибуты даты и времени файла.
SetTime (процедура) Устанавливает текущее время в операционной системе.
UnpackTime (процедура) Преобразовывает 4-х байтовое, упакованное значение
типа Longint, полученное от GetFTime , FindFirst ,
или FindNext в запись типа DateTime.

Дисковые функции: Что делает

DiskFree (функция) Возвращает число свободных байт на диске.
DiskSize (функция) Возвращает полный размер диска.

Функции обработки файлов: Что делает

FExpand (функция) Расширяет имя файла до полного.
FSearch (функция) Ищет файл.
FSplit (функция) Разбивает имя файла на три его компонента.
FindFirst (процедура) Ищет файл в заданном каталоге.
FindNext (процедура) Ищет следующий файл, соответствующий имени
и атрибутам, найденного ранее файла.
GetFAttr (процедура) Возвращает атрибуты файла.
SetFAttr (процедура) Устанавливает атрибуты файла.

Процедуры поддержки прерываний: Что делает

GetIntVec (процедура) Возвращает адрес, сохраненный в заданном
векторе прерывания.
Intr (процедура) Выполняет определенное программное прерывание.
MsDos (процедура) Выполняет вызов функции DOS.
SetIntVec (процедура) Устанавливает заданный вектор прерывания
на заданный адрес.

Подпрограммы обработки процессов

Exec (процедура) Выполняет заданную программу с заданными
параметрами командной строки.
Keep (процедура) Завершает программу и оставляет ее в памяти.
SwapVectors (процедура) Переключает указатели SaveIntXX в модуле
System на текущие вектора.
DosExitCode (функция) Возвращает код завершения подпроцесса.

Вывод строки на экран в DOS

15.09.2020, 15:20

Вывод символов на экран в MASM под DOS
Недавно начал изучать ассамблер по Калашникову. У него приведен пример такой программы CSEG.

DOS неправильный вывод строки
Разбирая программу отслеживаю переходы по условию. Ветви которые в данный момент не интересуют.

Вывод информации на экран DOS: выводятся непонятные лишние символы
Ламерский вопрос. Писал программу, выводящую на экран английский алфавит и ещё пару символов.

Прерывания по Dos, Ввод и вывод текстовой строки, (Tasm)
Составить программу вывода на экран текста пословицы на английском языке. С клавиатуры к каждой.

TASM. Вывод строки в DOS по нажатию на горячую клавишу
Есть код вывода строки. Как вывести его по нажатию на клавишу, например «Г». main proc near .

15.09.2020, 16:24 2

Это готовые подпрограммы, предоставляемые ОС DOS. В ah указывается желаемая функция, в остальных регистрах недостающие данные и вызывается процедура. Только она оформлена в виде прерывания.

При изучении Windows подобные вещи называются WinAPI. Это такой же набор процедур, только оформлен не в виде прерываний, а в виде DLL.

Завершение программы нужно для передачи управления операционной системе.

15.09.2020, 17:17 [ТС] 3 15.09.2020, 18:33 4 15.09.2020, 19:01 5

Регистр сегмента стека один. Значит одна программа — один стек. При реализации резидентных программ, драйверов для DOS, в самом резиденте переключается стек. Но пока не заморачивайтесь.
Раз вы работаете по книге — перечитывайте пройденные главы. При описании программной модели процессора всё это есть.

Не задумывался над этим. Попробуйте. Думаю, что компилятор объединит все объявления в одну область — сегмент.

Добавлено через 22 минуты
Вадим77, видимо моё восприятие мира отличается от вашего тем, что для меня ассемблер всего лишь инструмент, и я не собираюсь подвергать его «краш-тестам» («а что будет, если. «). Вы к ассемблеру относитесь как новому гаджету — не умея пользоваться базовыми возможностями ищите, как накуролесить.

Я обучаюсь по подобному сценарию (каждый год по работе изучаю 1-2 новых контроллера со своими языками программирования — немного лукавлю, IEC утвердило только 5 языков, из которых распространены всего 2):
1. Ищу некий шаблон оформления. В вашем случае DOS exe программы

2. Внутрь шаблона набираю разные тестовые программы с возрастающей сложностью. Проверяю ввод, вывод, связь с внешними устройствами (модулями расширения, операторской панелью). Пробую организовать конечный автомат, инициализацию внутренних устройств (регуляторов, таймеров, и прочего). Это подзадачи требуемой мне программы.
3. После этого обучения делаю программу для заказчика. При сложностях, выделяю в новую тестовую программу проблемный фрагмент и разбираю его работу.

По мере набора, чтения статей, форумов (сам тоже задаю вопросы) приобретаю опыт, позволяющий самостоятельно ответить на вопросы о «границах дозволенного».

Основная мысль — сосредоточьтесь на языке ассемблера, оставьте на потом элементы шаблона. Когда многое прояснится — можно будет менять шаблон, понимая производимые изменения. Без этого вы за деревьями не увидите леса.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL