Dos fn 29h разобрать имя файла


Команды работы с каталогами и файлами в операционной системе Ms DOS

Цели урока:

  1. Выработка умений работы в операционной системе с использованием командной строки, применения теоретических знаний и возможностей операционной системы MS DOS на практике.
  2. Формирование информационной компетентности.
  3. Развитие интеллектуальных способностей и познавательных интересов школьников.

ХОД УРОКА

Организационная часть:

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

3. Теоретическая часть. Объяснение нового материала

Общие сведения о командах MS DOS

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

Работа на компьютере в операционной системе MS DOS организуется командами. Они вызывают определенное действие в компьютере: организуют передачу информации; вырабатывают необходимый управляющий сигнал; подключают внешнее устройство для организации процесса ввода-вывода информации и т.д.

Команда технически реализована программой в машинных кодах и хранится либо в файле на диске, либо входит в состав командного процессора операционной системы MS DOS. Ввод команды осуществляется в командной строке в соответствии с определенными правилами, заданными в виде формата.

Командная строка — строка экрана, начинающаяся с приглашения операционной системы.

Формат команды — правило формирования команды пользователем с клавиатуры.

При формировании команды в соответствии с установленным форматом запомните правила:

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

Процедура ввода команды состоит в следующем:

  • В соответствии с форматом в командной строке вы набираете ее имя и необходимые параметры.
  • Нажимаете клавишу ввода, что служит сигналом начала анализа ее структуры: при отсутствии ошибок в формате команды будет выполнено указанное действие; при наличии ошибок на экране выдается сообщение Bad kommand or file name (Неверная команда или имя файла).
  • При невыполнении команды вы внимательно просматриваете заданную конструкцию команды и вновь вводите ее, но уже в откорректированном варианте.

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

4. Опорный конспект:

Основные команды DOS

Команды работы с каталогами Команды работы с файлами
Команда смены текущего дисковода.

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

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

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

Создание текстовых файлов. сopy con имя-файла

После ввода этой команды нужно будет поочередно вводить строки файла. В конце каждой строки нужно нажимать клавишу Enter, а после ввода последней – нажать клавишу F6 и затем Enter.

Создание каталога.

md [дисковод:] путь

Копирование файлов. copy имя-файла1 имя-файла2 или copy имя-файла1 [имя-каталога]
Изменение текущего каталога.

cd [дисковод:] путь

Переименование файлов. ren имя-файла1 имя-файла2
Уничтожение каталога.

rd [дисковод:] путь

Соединение (конкатенация) файлов.

copy имя-файла [+ имя-файла]. имя-файла

Удаление каталога со всем содержимым. deltree имя-файла-или-каталога [/Y] Удаление файлов.

del имя-файла

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

type имя-файла

Другие команды
Очистка экрана монитора.

cls

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

date

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

time [часы:минуты]

Получение информации о версии DOS.

5. Практическая часть.

Выполнение лабораторной работы.

Лабораторная работа №1

Работа с операционной системой MS DOS

Задание Выполнение
Запустить Командную строку Пуск – Программы – Стандартные — Командная строка
Выполнить команду просмотра логического устройства dir
В корневом каталоге диска создайте директорий, назовите своей фамилией. md IVANOV
Проверить наличие созданного каталога при помощи команды DIR.
Сделать каталог IVANOV текущим cd IVANOV
Создать в каталоге IVANOV каталог с номером лабораторной работы md LAB1
Сделать каталог LAB_1 текущим cd LAB1
Создать в текущем каталоге файл с расширением .txt и именем, соответствующем вашему реальному имени. Ввести фамилию, дату выполнения работы. copy con IVAN.txt

Нажать F6 для выхода из режима редактирования.

Создать текущем каталоге файл text1.txt. Ввести “Я изучаю DOS” copy con text1.txt

Я изучаю DOS F6

Создать в текущем каталоге каталог с именем COPYTEST md COPYTEST
Копировать файл text1.txt в каталог COPYTEST copy text1.txt D:\IVANOV \LAB1\COPYTEST
Копировать файл IVAN.txt в каталог COPYTEST с переименованием на PETR.txt copy IVAN.txt D:\IVANOV \LAB1\COPYTEST\PETR.txt
Переместиться в на уровень выше cd ..
Выполнить команду просмотра каталога Dir
Переместить файл text1.txt в каталог IVANOV: move text1.txt D:\ IVANOV
Переместить файл IVAN.txt в каталог IVANOV с переименованием на MARIA.txt move IVAN.txt D:\ IVANOV\ MARIA.txt
Проверить наличие файла в каталоге IVANOV при помощи команды DIR.

6. Практическая работа (раздаточный материал)

Работа с файлами и каталогами в DOS

  • Создать каталог d:\ (Своя фамилия)
  • Создать систему подкаталогов в каталоге d:\ (Своя фамилия) по следующему ОБРАЗЦУ:
  • В каталоге DIR1 создать файл wan.txt
  • В каталоге DIR2 создать файл tu.txt.
  • Скопировать файл wan.txt в каталог INF2 с переименованием на tir.txt
  • Переместить файл tu.txt d в каталог INF2 с переименованием на tir.txt
  • На диске D в личном каталоге создать каталог CHET
  • Создать систему подкаталогов в каталоге CHET по образцу
  • В каталоге DOS1 создать файл ban.txt.
  • В каталоге ZAH2 создать файл mu.txt.
  • Скопировать файл ban.txt в каталог DOS2 с переименованием на tvr.txt
  • Переместить файл mu.txt в каталог DOS2 с переименованием на bir.txt
  • Вывести на экран содержимое каталога DOS2
  • На диске D в личном каталоге создать каталог TROL
  • Создать систему подкаталогов в каталоге TROL :
  • В каталоге KONT1 создать файл ran.txt.
  • В каталоге KONT2 создать файл man.txt. редакторами текстов.
  • Скопировать файл man.txt в каталог BOSS1 с переименованием на tnt.txt
  • Переместить файл ran.txt в каталог BOSS2 с переименованием на bat.txt/
  • Вывести на экран содержимое каталога BOSS2
  • Создать каталог d:\ (Своя фамилия)
  • Создать систему подкаталогов в каталоге d:\ (Своя фамилия) по следующему ОБРАЗЦУ:
  • В каталоге DAR1 создать файл dan.txt.
  • В каталоге DАR2 создать файл din.txt.
  • Скопировать файл dan.txt в каталог LAIT2 с переименованием на tan.txt
  • Переместить файл din.txt d в каталог LAIT2 с переименованием на tin.txt
  • Вывести на экран содержимое каталога LAIT2
  • На диске D в личном каталоге создать каталог RIM
  • Создать систему подкаталогов в каталоге RIM по образцу
  • В каталоге ROS1 создать файл bon.txt.
  • В каталоге RAH2 создать файл son.txt.
  • Скопировать файл bon.txt в каталог ROS2 с переименованием на ton.txt
  • Переместить файл son.txt в каталог ROS2 с переименованием на don.txt
  • Вывести на экран содержимое каталога ROS2
  • На диске D в личном каталоге создать каталог TRON
  • Создать систему подкаталогов в каталоге TRON :
  • В каталоге KON1 создать файл ron.txt.
  • В каталоге KON1 создать файл mon.txt.
  • Скопировать файл ron.txt в каталог BOR2 с переименованием на ton.txt
  • Переместить файл mon.txt в каталог BOR2 с переименованием на bon.txt
  • Вывести на экран содержимое каталога BOR2
  • Создать каталог c:\ RABOTA_1
  • Создать систему подкаталогов в каталоге c:\RABOTA_1 по следующему дереву:
  • В каталоге PAP1 создать файл wan.txt,
  • В каталоге РАР2 создать файл tu.txt
  • Скопировать файл wan.txt в каталог LIST2
  • Перенести файл tu.txt в каталог LIST2
  • Вывести на экран содержимое каталога LIST2

Опорный конспект, основные команды работы с файлами и каталогами в операционной системе MS DOS

Командная строка / Команды MS DOS

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

Смена текущей директории

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

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

Просмотр содержимого директории

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

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

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

Примеры: dir – оглавление текущей директории dir *.exe – сведения обо всех файлах .exe текущей директории dir a: – оглавление текущей директории диска а: dir /w – оглавление текущей директории в широком формате dir с:\*.exe /s – сведения обо всех файлах .exe на диске с: dir *.* /ash /b – сведения обо всех файлах текущей директории с атрибутами “системный” и “скрытый”, при этом выводить только имена файлов без заголовочных и итоговых сведений.

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

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

Примеры: md abc – создать директорию abc в текущей директории; md c:\users\my – создать директорию my в директории users в корневой директории диска c:.

Удаление пустой директории

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

Примеры: rd abc – удалить директорию abc из текущей директории; rd c:\users\my – удалить директорию my из поддиректории users корневой директории диска c:.

Удаление директории со всем содержимым

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

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

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

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

Примеры: move a:\temp tmp – переименовать директорию temp корневой директории диска а: в tmp.

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

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

Примеры: path ; – поиск программ должен вестись только в текущей директории path – имена директорий, в которых производится поиск программ path c:\exe; c:\exe\program; d:\msdos – поиск программ производить в директориях exe, program, msdos.

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

Создание текстовых файлов

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

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

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

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

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

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

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

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

Формат команды: 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.

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

Соединение (конкатенация) файлов

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

Если имя исходного файла (или одного из файлов) совпадает с именем создаваемого командой copy файла, то существующий файл замещается. Например, если файл all.doc уже существует, то команда copy *.doc all.doc будет ошибочной, т.к. файл all.doc будет уничтожена в начале копирования.

Примеры: copy .lst+*.ref *.prn – к каждому файлу текущей директории с расширением lst добавить файл с тем же именем и расширением ref, результат записывается в файл с тем же именем и расширением prn; copy f1.doc+f2.doc – объединить файлы f1.doc и f2.doc, содержимое объединенного файла записывается в файл f1.doc; copy *.txt all.prn – содержимое всех файлов с расширением txt записывается в файл all.prn.

Перемещение файлов в другую директорию

Формат команды: 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.

Формат команды: fc [параметры] имя-файла имя-файла [имя-файла-протокола]

Если имя файла-протокола не задано, сведения о сравнении выводятся на экран.

Параметры: /lпострочное сравнение. Если программа обнаруживает различия в файлах, она пытается найти после точки рассогласования места, начиная с которых файлы снова становятся одинаковыми. На выходе – различающиеся строки; /bпобайтовое сравнение. После обнаружения различия файлов сравнение прекращается.

По умолчанию режим сравнения выбирается по расширению: /b – .exe, .com, .sys, .obj, .lib, .bin, /l — остальные.

Параметры построчного сравнения: /c – игнорировать различия между строчными и прописными буквами; /n – вывод номеров строк; /число – сколько строк файлов должно совпадать, чтобы файлы считались снова согласованными. По умолчанию 2 строки; /lbчисло – размер внутреннего буфера для нахождения соответствий в файлах после рассогласования. По умолчанию 100 строк.

Примеры: fc doclad.doc doclad1.doc > diff – сравнить файлы, отчет поместить в файл diff.

Вывод файла на экран

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

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

Команда копирования xcopy

Формат команды: xcopy имя-файла-или-директории [имя-файла-или-директории]…[параметры]

Преимущества команды xcopy:

 работает быстрее, чем copy;

 позволяет копировать файлы из всех поддиректорий указанной директории;

 позволяет выборочное копирование файлов, в зависимости от значения атрибута «архивировать» или даты файла.Ограничения команды xcopy:

 не поддерживает копирования с логических устройств или на логические устройства;

 не позволяет объединять файлы;

 копирует файлы всегда целиком, команды copy может прекращать копирование, если в исходном файле встретится символ конца файла.Параметры: /s – копирование файлов из указанных директорий и всех их поддиректорий. Файлы из поддиректорий копируются в соответствующие поддиректории той директории, в который копируются файлы; /e – копирование всех поддиректорий, даже если они пусты. Используется только вместе с режимом /s;

/a – копирование только тех файлов, у которых установлен атрибут “архивировать”; /m – копирование только тех файлов, у которых установлен атрибут “архивировать”. После копирования, атрибут “архивировать” отменяется; /dдата – копирование файлов, созданных или измененных начиная с указанной даты. Если дата не указана, то копируются только файлы, более новые, чем файлы, которые они замещают; /p – запрос на копирование каждого файла; /y – перезапись имеющихся файлов с теми же именами без запросов; /n – проверка правильности копирования каждого файла. Примеры: xcopy a:\ b:\ /s /e – копирование всех директорий с диска а: на b:; xcopy *.doc a:\ /s – копирование всех файлов с расширением .doc из текущей директории в корневую директорию диска а:. Файлы с расширением .doc из поддиректорий текущей директории копируются в одноименные поддиректории корневой директории диска а:; xcopy *.* a:\ /s /e – копирование всех файлов и поддиректорий текущей директории в корневую директорию и соответствующие поддиректории диска а: (создание архивной копии файлов текущей директории); xcopy *.* a:\ /m /s /e – копирование всех измененных файлов и поддиректорий текущей директории в корневую директорию и соответствующие поддиректорию диска а:, (обновление архивной копии файлов текущей директории).

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

Смена текущего дисковода

Формат команды: Имя-дисковода:

Примеры: С: – установить текущим диск с:; a: – установить текущим диск a:.

Режим проверки при записи на диски

Формат команды: verify [on/off]

Примеры: verify on – включить режим проверки при записи на диски; verify off – отключить режим проверки при записи на диски; verify – вывести информацию о том, включен или выключен режим проверки.

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

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

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

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

Перенос на диск системных файлов MS-DOS

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

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

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

Задание метки диска

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

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

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

Программы и команды MS-DOS общесистемного назначения

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

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


Примеры: date Запрос: Введите новую дату (дд-мм-гг): (Enter new date (dd-mm-yy)) Вводимая строка: 10-12-2010

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

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

Примеры: time – вывести текущее время; time 11:29 – установить время 11 часов 29 минут.

Изменение вида приглашения MS-DOS

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

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

Примеры: prompt $p$g – устанавливает приглашение вида c:\users\doc>; prompt $t$h$h$h$h$h$h$g – устанавливает приглашение вида 13:38>.

Получение информации о версии MS-DOS

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

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

Dos fn 29h: разобрать имя файла

Связь с администрацией сайта:

Среди толпы я одинок

  • Вы здесь:
  • Home >
  • Блог >
  • Документация и курсы >
  • Самоучитель по ассемблеру >
  • Глава 18 — практика: работа с файлами, перехват и восстановление прерываний

Глава 18 — практика: работа с файлами, перехват и восстановление прерываний

  • Written by Administrator
  • Tagged under АссемблерAssemblerСамоучитель по ассемблеру
  • Print

Замечание! Это пожалуй самая большая глава! информация представленная в ней в принципе довольно важна! К сожалению при работе в NT/Windows 2000/XP вам не удастся опробовать пример! Тут нужен чистый DOS, или хотя бы Win9x! Я например воспользуюсь эмулятором!

Работа с файлами через описатели

Если программы, написанные на языках высокого уровня могут открыть файл без выполнения подготовительных действий (они выполняются автоматически), то ассемблерные программы должны создать специальные области данных, которые используются при операциях ввода/вывода. Используется два метода доступа к файлам: метод управляющего блока файла (FCB) и метод дескриптора файла. С помощью метода FCB можно получить доступ только к файлам, находящимся в текущем каталоге. Метод дескриптора файла позволяет получить доступ к любому файлу, независимо от того, какой каталог является текущим.
Начиная с DOS версии 2.0, в набор функций прерывания 21h включе-ны UNIX-подобные файловые функции. Идея их состоит в том, что, когда программа открывает файл, DOS возвращает 16-битовое значение «описателя файла» (дескриптора файла) (handle). После этого, когда программа читает, позиционирует, пишет или закрывает файл, она ссылаетесь на него через описатель. Одно из самых больших удобств – то, что можно обращаться к некоторым устройствам так, как будто это дисковые файлы, через зарезервированные описатели DOS:

Ниже приведен перечень наиболее часто используемых функций пре-рывания 21h для работы с файлами через описатели.
Функция 3cH
Создать файл.
Вход. AH=3ch
DS:DX=адрес строки ASCIIZ с именем файла
CX=атрибут файла
Выход. AX=код ошибки, если CF установлен и описатель файла,
если ошибки нет.
Описание. Файл создается в указанном (или умалчиваемом) оглав-лении и открывается в режиме доступа «чтение/запись». Если файл уже существует, то при открытии файл усекается до нулевой длины. Если атрибут файла – «только чтение», открытие отвергается (атрибут можно изменить функцией 43H).
Функция 5bH
Создать новый файл (не должен существовать).
Вход. AH=5bh
DS:DX=адрес строки ASCIIZ с именем файла
CX=атрибут файла
Выход. AX=код ошибки, если CF установлен и описатель файла,
если ошибки нет
Описание. Этот вызов идентичен функции 3ch, с тем исключением, что он вернет ошибку, если файл с заданным именем уже существует.
Функция 5aH
Создать уникальный файл.
Вход. AH=5ah
DS:DX=адрес строки ASCIIZ с путем (заканчивается \)
CX=атрибут файла
Выход. AX=код ошибки, если CF установлен и описатель файла,
если ошибки нет
DS:DX (не изменяется) становится полным
ASCIIZ-именем нового файла.
Описание. Открывает (создает) файл с уникальным именем в оглав-лении, указанном строкой ASCIIZ, на которую указывает DS:DX. Описа-ние пути должно быть готово к присоединению в его конец имени файла. Необходимо обеспечить минимум 12 байт в конце строки. После возврата строка DS:DX будет дополнена именем файла. DOS создает имя файла из шестнадцатеричных цифр, получаемых из текущих даты и времени. Ес-ли имя файла уже существует, DOS продолжает создавать новые имена, пока не получит уникальное имя.
Функция 3dH
Открыть файл.
Вход. AH=3dh
DS:DX=адрес строки ASCIIZ с именем файла
AL=режим открытия
Выход. AX=код ошибки, если CF установлен и описатель файла,
если ошибки нет
Описание. В момент открытия файл должен существовать. Файл открывается в выбранном режиме доступа (AL = 0 – для чтения; AL = 1 – для записи; AL = 2 – для чтения и записи) и указатель «чтения/записи» ус-танавливается в 0.
Функция 3eH
Закрыть файл.
Вход. AH=3eh
BX=описатель файла
Выход. AX= код ошибки, если CF установлен
Описание. BX содержит описатель файла (handle), возвращенный при открытии. Файл, представленный этим описателем, закрывается, его буфер сбрасываются, а оглавление обновляется корректными размером, временем и датой.
Функция 41H
Удалить файл.
Вход. AH=41h
DS:DX=адрес строки ASCIIZ с именем файла
Выход. AX=код ошибки, если CF установлен
Описание. Имя файла не может содержать обобщенные символы («?» и «*»). Файл удаляется из заданного оглавления заданного диска. Если файл имеет атрибут только чтение, то перед удалением необходимо изме-нить этот атрибут через функцию 43H.
Функция 42H
Установить указатель чтения/записи (можно также узнать размер файла).
Вход. AH=42h
BX=описатель файла
CX:DX=смещение указателя: (CX * 65536) + DX
AL=0 переместить к началу файла + CX:DX
AL=1 переместить к текущей позиции + CX:DX
AL=2 переместить к концу файла — CX:DX
Выход. AX=код ошибки, если CF установлен
DX:AX=новая позиция указателя файла (если нет
ошибки)
Описание. Перемещает логический указатель чтения/записи к нужному адресу, с которого начнется очередная операция чтения или за-писи. Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX. DX здесь старшее значащее слово: действительная длина (DX * 65536) + AX.
Функция 3fH
Читать из файла/устройства.
Вход. AH=3fh
BX=описатель файла
DS:DX=адрес буфера для чтения данных
CX=число считываемых байт
Выход. AX=код ошибки, если CF установлен
AX=число действительно прочитанных байт
Описание. CX байт данных считываются из файла или устройства с описателем, указанным в BX. Данные читаются с текущей позиции указателя чтения/записи файла и помещаются в буфер вызывающей програм-мы, адресуемый через DS:DX.
Всегда необходимо сравнивать возвращаемое значение AX (число прочитанных байт) с CX (запрошенное число байт):
1) если AX=CX, (и CF сброшен) – чтение было корректным без ошибок;
2) если AX=0 – достигнут конец файла (EOF);
3) если AX
Функция 40H
Писать в файл/устройство.
Вход. AH=40h
BX=описатель файла
DS:DX=адрес буфера, содержащего данные
CX=число записываемых байт
Выход. AX=код ошибки, если CF установлен
AX=число действительно записанных байт
Описание. CX байт данных записывается в файл или на устройство с описателем, заданным в BX. Данные берутся из буфера, адресуемого через DS:DX и записываются, начиная с текущей позиции указателя чтения/записи файла. Необходимо всегда сравнивать возвращаемое значение AX (число записанных байт) с CX (запрошенное число байт для записи): если AX = CX, запись была успешной; если AX
Некоторые функции в качестве параметра используют атрибут файла. Атрибут — это один байт битовых флагов, связанный с каждым файлом и находящийся в элементе оглавления для файла. В атрибуте определены следующие биты:
x x A D V S H R
R- только чтение (нельзя обновлять или удалять);
H- скрытый;
S- системный;
V- метка тома;
D- элемент подоглавления;
A- архивный;
x- не используются.
ASCIIZ строка, содержащая имя файла, имеет вид:

«‘d:\путь\имя_файла’,0»

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

;Создание файла
MOV AH,3CH
MOV CX,0
LEA DX,BUF ;DS:DX – адрес ASCIIZ строки с именем
INT 21H
JC NO_CREATE ;Проверка флага переноса
. . . ;Работа с файлом
NO_CREATE:
. . .
BUF DB ‘d:\Users\1.txt’,0

Работа с файлами через DTA

Как было сказано ранее, используются два метода доступа к файлу: метод управляющего блока файла (FCB) и метод дескриптора файла. В любом случае программа при работе с файлами должна указывать место в памяти, куда будут помещаться принимаемые данные или откуда будут извлекаться выводимые. Обычно временный буфер устанавливается раз-мером в одну запись и бывает удобно описать его как строковую переменную в сегменте данных.
Буфер, используемый методом FCB доступа к файлам, называется областью обмена с диском или DTA. На этот буфер указывает условный указатель, который хранится операционной системой и который может быть изменен программой. В документации этот указатель на DTA часто сам называют DTA. Указатель на DTA устанавливается специальной функцией DOS и после того как он установлен все функции чтения/записи автоматически обращаются к нему. Это означает, что сами функции не должны содержать адрес временного буфера.
Для установки указателя на DTA используется функцию 1AH прерывания 21H (DS:DX должны указывать на первый байт DTA). Функция 2FH прерывания 21H сообщает текущую установку указателя DTA (при возврате ES:BX содержат сегмент и смещение DTA).
Префикс программного сегмента PSP обеспечивает каждую программу 128-байтным встроенным DTA, начиная со смещения 80H и до 9FH. Программа может использовать его при нехватке памяти. Первоначально указатель на DTA указывает именно на этот буфер, поэтому если программа будет использовать его, то нет нужды устанавливать указатель. Этот буфер по умолчанию особенно удобно использовать с COM файлами, где DS указывает на начало префикса программного сегмента. Для файлов EXE может потребоваться небольшой добавочный код, чтобы использовать DTA по умолчанию.

Примечание: после извлечения года к нему необходимо прибавить 1980.
Существует ряд функций для работы с файлами, используя DTA. Наиболее употребимые из них приведены ниже.
Функция 1ah
Установить адрес DTA.
Вход. AH=1aH
DS:DX=адрес для DTA
Выход. Нет
Описание. Устанавливает адрес DTA.
Функция 2fh
Дать текущий DTA.
Вход. AH=2fH
Выход. ES:BX=адрес для DTA
Описание. Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA глобальна для всех процессов, в рекурсивной процедуре (например, при проходе по дереву оглавления) может потребоваться со-хранить адрес DTA, а впоследствии восстановить его посредством функ-ции 1aH.
Функция 4eh
Найти 1-й совпадающий файл.
Вход. AH=4eH
DS:DX=адрес строки ASCIIZ с именем файла
CX=атрибут файла для сравнения
Выход. AX=код ошибки, если CF установлен
DTA=заполнена данными (если не было ошибки)
Описание. DS:DX указывает на строку ASCIIZ в форме: «d:\путь\имяфайла»,0. Если диск и/или путь опущены, они подразумевают-ся по умолчанию. Обобщенные символы * и ? допускаются в имени файла и расширении. DOS находит имя первого файла в оглавлении, которое совпадает с заданным именем и атрибутом, и помещает найденное имя и другую информацию в DTA.
Функция 4fh
Найти следующий совпадающий файл.
Вход. AH=4fH
DS:DX= адрес данных, возвращенных предыдущей 4eH.
Выход. AX=код ошибки, если CF установлен
DTA=заполнена данными (если не было ошибки)
Описание. DS:DX указывает на 2bH-байтовый буфер с информаци-ей, возвращенной функцией 4eH (либо DTA, либо буфер, скопированный из DTA).Необходимо использовать эту функцию после вызова 4eH. Сле-дующее имя файла, совпадающее по обобщенному имени и атрибуту фай-ла, копируется в буфер по адресу DS:DX вместе с другой информацией (см. функцию 4eH о структуре файловой информации в буфере, заполняе-мом DOS).
Ниже приведен фрагмент программы, иллюстрирующий организацию поиска файлов в текущем каталоге.

;Установить адрес DTA
MOV AH,01AH
LEA DX,FDTA
INT 21H
. . .
;Наити первый совпадающий файл
MOV AH,4EH
LEA DX,MASKA
MOV CX,10H
INT 21H
JC EXIT
NEXT:
. . .
;Найти следующий совпадающий файл
MOV AH,4FH
MOV CX,10H
LEA DX,MASKA
INT 21H
JNC NEXT
EXIT:
. . .
;========== DTA =========
FDTA DB 15H DUP (?)
FATTR DB ?
FTIME DW ?
FDATA DW ?
FSIZE DD ?
FNAME DB 0DH DUP (‘$’)
;========================
MASKA DB ‘*.*’,0

Структура PSP

Префикс программного сегмента PSP (Program Segment Prefics) – специальная область оперативной памяти размером 256 (100h) байт. PSP может использоваться в программе для определения имен файлов и пара-метров из командной строки, введенной при запуске программы на выпол-нение, объема доступной памяти, переменных окружения системы и так далее. После загрузки программы в память сегментные регистры DS и ES указывают на начало PSP этой программы.

Окружение DOS

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

имя_1=значение_1«0»
имя_2=значение_2«0»
. . .
имя_N=значение_N«0»
«0»
«xxxx»
EXEC_string_1«0»
. . .
EXEC_string_NN«0»
«0»

Здесь «0» — это символ ASCII NUL (00H), а «xxxx» — 16-битовое дво-ичное значение (количество дополнительных строк).
Окружение не превышает 32K байт и начинается на границе парагра-фа. Смещение 2cH в PSP текущей программы содержит номер параграфа окружения. Используя окружение, можно найти нужное имя’ серией срав-нений строк ASCIIZ, пока не достигнута пустая строка (нулевой длины), что указывает конец окружения.
В последних версиях DOS, за концом официального окружения по-мещается дополнительная строка, которая содержит диск и путь, с которых была загружена программа. Вслед за последней строкой ASCIIZ окруже-ния находится нулевой байт, указывающий конец официального окруже-ния. Следующие два байта содержат 16-битовый двоичный счетчик допол-нительных строк (обычно 0001H). Вслед за значением счетчика находится строка ASCIIZ, содержащая путь и имя файла. Это в точности та строка, которая использовалась функцией DOS 4bH (EXEC) для загрузки и запуска программы.

Работа с прерываниями

Иногда необходимо выполнить одну из набора специальных проце-дур, если в системе или в программе возникают определенные условия, например, нажата клавиша на клавиатуре. Действие, стимулирующее вы-полнение одной из таких процедур, называется прерыванием. Существует два общих класса прерываний: внутренние и внешние. Первые иницииру-ются состоянием ЦП или командой, а вторые — сигналом, подаваемым от других компонентов системы.
Переход к процедуре прерывания осуществляется из любой програм-мы, а после выполнения процедуры прерывания обязательно происходит возврат в прерванную программу. Перед обращением к процедуре преры-вания должно быть сохранено состояние всех регистров и флагов, исполь-зуемых процедурой прерывания, а после окончания прерывания эти реги-стры должны быть восстановлены.
Последовательность прерывания состоит в следующем:
1) текущее значение регистра Flags включается в стек;
2) текущее значение регистра CS включается в стек;
3) текущее значение регистра IP включается в стек;
4) сбрасываются флаги IF и TF.
Новое содержимое IP и CS определяет начальный адрес выполняемой процедуры прерывания (обслуживание прерывания). Возврат в прерван-ную программу осуществляется командой, которая извлекает из стека со-держимое для IP, CS и регистра флагов (обычно это команда IRET).
Адреса подпрограмм обслуживания прерываний (вектора прерыва-ний) хранятся в таблице векторов прерываний. Таблица векторов прерыва-ний располагается по адресу 0000:0000 и представляет собой массив из 256 элементов, каждый элемент которого занимает 4 байта и представ-ляет собой начальный адрес процедуры обработки прерывания.
Иногда в программе возникает необходимость переопределения (пе-рехвата) прерываний (например, выполнение дополнительных действий при нажатии определенной клавиши клавиатуры). Процесс перехвата пре-рываний состоит в следующем:
1) подготавливается FAR-процедура – новый обработчик прерыва-ний (должна заканчиваться командой IRET);
2) сохраняется старый вектор прерывания (функция 35h прерывания 21h)
3) адрес нового обработчика заносится в таблицу векторов прерыва-ний (функция 25h прерывания 21h);
4) в конце программы происходит восстановление первоначального обработчика прерываний.
Функция 35h
Вход. AH=35H
AL=номер прерывания (00H до 0ffH)
Выход. ES:BX=адрес обработчика прерывания
Описание. Возвращает значение вектора прерывания для INT (AL),
то есть загружает в BX 0000:[AL*4], а в ES –
0000:[(AL*4)+2].
Функция 25h
Вход. AH=25H
AL=номер прерывания (00H до 0ffH)
DS:DX=вектор прерывания (адрес подпрограммы)
Выход. Нет
Описание. Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL равным DS:DX. Это равно-сильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, в момент записи прерывания будут заблокированы.

Разбор практической программы

Задание: Создать текстовый файл «Dir.Txt», содержащий перечень файлов в текущем каталоге. Написать программу переопределения прерывания 05h (клавиша Print Screen).
Примечание:
1) файл «Dir.txt» можно создавать через описатели;
2) получение пути по которому была запущена программа (первая строка в файле «Dir.Txt») можно осуществить, используя окружение DOS. Для этого, во-первых, необходимо получить адрес PSP (функция 062H прерывания 21H), во-вторых, найти в нем адрес окружения DOS. В-третьих, получив из окружения DOS строку, содержащую путь и имя за-пущенного файла, выделить из нее путь к текущему каталогу;
3) на следующем этапе производится поиск первого совпадающего с маской «*.*» файла и его имя записывается в файл «Dir.Txt». Перед на-чалом поиска необходимо правильно установить атрибут файла в CX для сравнения. Далее производится поиск следующего совпадающего с маской файла, используя функцию 04FH прерывания 21H. Если такой файл най-ден, то его имя записывается в «Dir.Txt», иначе осуществляется выход из программы;
4) перед загрузкой нового вектора прерывания необходимо сохранить старый вектор (функция 35h прерывания 21h);
5) новый обработчик прерывания должен быть FAR-процедурой;
6) для проверки, новая процедура обработки прерывания 05h должна выводить в динамик сигнал (прерывание 21H). В основной программе не-обходимо организовать большой цикл, например, выводящий на экран символы (прерывание 21h использовать нельзя, можно использовать, на-пример, прерывание 10h). Таким образом, при нажатии на PrintScreen во время этого цикла компьютер должен издавать сигнал.

Файл fandp.asm
.model tiny
.186
.code
;благодаря этой директиве мы сразу имеем адрес окружения! :) удобно! :)
org 2Ch
okr dw ?
org 100h
start:
;так можно загрузить сегм. регистр! :)
push okr
pop es
;начали искать строку с именем в окружении DOS
xor ax,ax
xor di,di
cld
met:scasb
jne d
cmp es:[di+1],byte ptr 0
je quit
d:jmp met
quit:add di,2
xor si,si
ms:mov al,byte ptr es:[di]
cmp al,0
je poka
mov path[si],byte ptr al
inc si
inc di
jmp ms
;закончили сканировать окружение в поисках пути
;перехватываем прерывание
poka:sub si,9
mov ax,3505h
int 21h
mov word ptr oldint, bx
mov word ptr oldint+2,es
mov ax,2505h
mov dx,offset inter
int 21h
;выдаем писк! :) а то принт скрин всё равно нажать не успеем! :)
int 5h
mov ah,0h
int 16h
lea dx,mesg
mov ah,9
int 21h
;открываем файл
call openfile
mov handle,ax
mov ah,40h
mov bx,handle
mov cx,si
lea dx,path
int 21h
mov ah,40h
mov bx,handle
mov cx,2
lea dx,crlf
int 21h
;установить адрес dta
mov ah,01ah
lea dx,fdta
int 21h
;начать поиск файлов
mov ah,4eh
lea dx,maska
mov cx,10h
int 21h
jc exit
mov di,0
mov cx,14
m0:cmp fname[di],’0′
je h0
inc di
h0:loop m0
mov ah,40h
mov bx,handle
mov cx,di
lea dx,fname
int 21h
mov ah,40h
mov bx,handle
mov cx,2
lea dx,crlf
int 21h
next:mov ah,4fh
mov cx,10h
lea dx,maska
int 21h
jc exit
mov di,0
mov cx,14
m2:cmp fname[di],’0′
je h1
inc di
h1:loop m2
mov ah,40h
mov bx,handle
mov cx,di
lea dx,fname
int 21h
mov ah,40h
mov bx,handle
mov cx,2
lea dx,crlf
int 21h
xor ax,ax
mov di,0
mov cx,14
m1:mov fname[di],al
inc di
loop m1
jmp next
exit: mov ah,3eh
mov bx,handle
int 21h
;восстанавливаем вектор обратно
mov ax,2505h
mov dx,word ptr oldint+2
mov ds,dx
mov dx,word ptr cs:oldint
int 21h
ret
;процедура обработки прерывания
inter proc far
pusha
push es
push ds
mov dl,07
mov ah,02
int 21h
pop ds
pop es
popa
jmp cs:oldint
inter endp
;процедура открытия файла
openfile proc near
mov ah,3ch
mov cx,0
mov dx,offset buf
int 21h
jnc nerr
mov dx,offset myerr
mov ah,9
int 21h
;перевод строки
mov dx,offset crlf
mov ah,09h
int 21h
nerr: ret
openfile endp
;.
oldint dd ?
mesg db «Find files$»
crlf db 0Dh,0Ah,’$’
buf db «filedir»,0
myerr db «WARNING.
File not create$»
handle dw ?
maska db «*.*»,0
fdta db 15h dup (?)
fattr db ?
ftime dw ?
fdata dw ?
fsize dd ?
fname db 14 dup (‘0’)
path db 256 dup (?)
end start

Компиляция :
c:\specprog\tasm\bin\tasm.exe /m fandp.asm
c:\specprog\tasm\bin\tlink.exe fandp.obj /t/x

Вот что имеем в результате запуска:
(под эмулятором и на реальном DOS при запуске вы услышите «писк»)
список найденых файлов сохраняется в файле filedir

Основные команды операционной системы MS DOS

COMMAND.COM содержит следующие три вида команд, представленные в табл. 2.3.

Виды команд в MS DOS

Вид команды Расширение имени Примеры
1. Внутренняя DIR, REN, TYPE и т.д.
2. Внешняя .COM или .EXE lex.com, debug.exe, format.com и др.
3. Пакетная .BAT Файлы, содержащие мно-жества перечисленных выше команд.

Все файлы, содержащие расширение «.COM» или «.EXE«, можно использовать как внешние, при этом допускается имена файлов указывать в сокращенной форме, без расширения «.COM» или «.EXE«.

В операционной системе MS DOS можно выполнить последовательность команд, используя для этого режим пакетной обработки.

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

Каждый пакетный (или командный) файл должен иметь расширение «.BAT«

Пакетный файл можно создать командой COPY или любым текстовым редактором. Каким образом это осуществляется, будет изложено в последующих темах.

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

Команда смены текущего (активного) дисковода (устройства, или накопителя) содержит имя требуемого дисковода с последующим двоеточием:

После набора команды должна быть нажата клавиша «Enter».

C>A: Enter

В этом примере дисковод C: (НЖД, или винчестер) сменен на дисковод A: для гибких магнитных дисков.

Ниже представлены основные команды операционной системы MS DOS, которые рассматриваются в данной лабораторной работе.

VER – выводится на экран дисплея номер версии операционной системы, которая загружается при запуске компьютера.

DIR – выводит на дисплей список файлов каталога.

TYPE – выводит на экран дисплея содержимое текстового файла.

TIME – выводит на экран дисплея текущее системное время.

DATE – отображает используемую MS DOS текущую системную дату.

MD (MKDIR) – создает новые каталоги (или подкаталоги).

CD – позволяет сменить текущий каталог.

RD – позволяет удалять подкаталог.

COPY – позволяет копировать файлы или группы файлов.

REN (RENAME) – позволяет переименовывать отдельные файлы или группы файлов.

DEL (ERASE) – позволяет удалять файлы.

TREE – выводит на экран дисплея все каталоги или их иерархическую структуру.

Рассмотрим более подробно каждую из приведенных выше команд.

VER

Тип команды: внутренняя.

Функции: выводится на экран дисплея номер версии операционной системы, которая загружена при запуске компьютера.

На экран выводится сообщение вида

MS-DOS Version 5.00

DIR

Тип команды: внутренняя.

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

Формат использования команды:

/z – комбинация из дополнительных параметров (ключей).

Если не задан дисковод (disk:) или путь (path\), то подразумевается текущий дисковод или текущий каталог. Если не задано имя файла (filename), то выводится все содержимое каталога. При задании имени файла допускается использование шаблона.

В качестве комбинации /z могут использоваться следующие параметры или ключи:

/P – (Pause или Page) приостанавливает вывод списка файлов каждый раз, когда заполняется экран дисплея. После нажатия любой клавиши вывод продолжается;

/W – (Wide Display или Width) обеспечивает вывод в уплотненной форме, т. е. пять имен в одной строке, при этом указываются только имена файлов и каталогов;

/A:атрибуты – выводит только те файлы, которые имеют указанные атрибуты. Возможны следующие сокращения для требуемых атрибутов:

A (archive – архивировать);

R (read-only – защищенный от записи);

Поставив перед каталогом знак минус («-«, черточку), можно изменить значение атрибута на противоположное.

обеспечивает вывод списка всех нескрытых файлов.

Двоеточие («:«) перед перечислением требуемых атрибутов можно опускать.

/O:критерий – (Order) обеспечивает упорядочение выводимого на экран списка файлов в соответствии с заданным критерием. Допускаются следующие сокращения для критериев сортировки:

N – в алфавитном порядке имен (Name);

E – в алфавитном порядке расширений (Extension);

T – по времени создания (Time).

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

Двоеточие («:«) перед перечислением требуемых критериев можно опускать!

/S – вывод на экран списка файлов не только из указанного каталога, но и из всех подчиненных подкаталогов (Subdirectories):

/B – вывод на экран только имен файлов без дополнительной информации. Для каждого файла используется отдельная строка на экране дисплея;

/L – вывод на экран имен осуществляется строчными буквами.

Параметры (ключи) /A:, /O:, /S, /B и /L реализованы только в версии MS DOS 5.00 и выше. В более ранних версиях использовались ключи /P и /W.

На экран дисплея выводится список имен всех файлов, имеющихся в корневом каталоге диска A:.

При этом отображается следующая информация:

– метка тома (имя носителя данных, если оно задано);

– имя файла с расширением и размер файла или имя подкаталога с пометкой ;

– дата и время последнего изменения файла;

– количество файлов в текущем каталоге;

– размер свободного пространства на дискете.

Выводится список всех файлов, находящихся в каталоге D:\TP и имеющих расширение .PAS.

Выводит список всех файлов текущего каталога дисковода B:. В каждой строке экрана помещается информация для пяти файлов в порядке их следования. Размер файлов, дата и время их создания не указываются.

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

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

Strike a key when ready

(Нажмите любую клавишу, когда будете готовы)

Для вывода следующей страницы необходимо нажать любую клавишу.

Выводит список файлов корневого каталога (Root) текущего дисковода (за исключением скрытых файлов).

Выводит список всех файлов с расширением .PAS, которые расположены в каталоге, верхнем (родительском) подкаталоге по отношению к текущему.

Выводится список всех скрытых и не защищенных от записи файлов корневого каталога текущего дисковода.

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

TYPE

Тип команды: внутренняя.

Назначение: просмотр информации, содержащейся в файле, на экране дисплея.

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

1. Внутри имени файла символы маски (* ?) не допускаются. Для определения имени файла используется команда DIR.

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

3. Вывод на экран можно приостановить нажатием Ctrl+S и продолжить их повторным нажатием (либо нажатием какой-либо клавиши).

Выводит на экран дисплея содержимое текстового файла HS.txt, который находится в подкаталоге MD1 диска A:.

Выводит содержимое текстового файла lex.doc, который находится в текущем каталоге и на текущем диске.

TIME

Тип команды: внутренняя.

Назначение: вывод на экран текущего времени и установка нового времени.

Формат использования команды:

hh – часы (24-часовой цикл), число, состоящее из одной или двух цифр (0-23);

mm – минуты, число, состоящее из одной или двух цифр (0-59);

ss – секунды, число, состоящее из одной или двух цифр (0-59);

cc – сотые доли секунды, число, состоящее из одной или двух цифр (0-99);


a|p – при использовании 12-часового формата времени указывает на то, о каком времени идет речь: о дополуденном (A.M.) или послеполуденном (P.M.).

Если параметр P.M. не задается, то MS DOS считает, что речь идет о дополуденном времени A.M.

Правильными разделителями являются двоеточие («:«) и точка («.»). Возможно использование в качестве разделителей только точки («.»). Если пользователь вводит неправильное время или неверные разделители, то система MS DOS повторяет запрос времени. Иногда в некоторых версиях MS DOS для разделения отдельных элементов вместо двоеточия необходимо использовать другие символы, например, черточку.

На экран будет выведено сообщение:

Current time is 8:12:00.64a

(Текущее время 8:12:00.64a)

Enter new time:_

(Введите новое время:_)

Если время изменяться не будет, то необходимо нажать клавишу Enter. Если необходимо ввести новое время, то следует ввести цифрами текущее время, например:

и нажать клавишу Enter.

Если задание времени произведено неверно или задан неправильный разделитель, то выводится сообщение:

(Введите новое время:)

В этом случае будет установлено новое время и на экран дисплея никаких дополнительных сообщений выводиться не будет.

DATE

Тип команды: внутренняя.

Назначение: установка или вывод на экран текущей даты.

Формат использования команды:

mm – число, состоящее из одной или двух цифр 1-12 (обозначающее месяц);

dd – число, состоящее из одной или двух цифр 1-31 (обозначающее день месяца);

yy – число, состоящее из двух цифр 80-99 (обозначающее год 1980-1999, предполагается, что первые две цифры 19) либо число, состоящее из четырех цифр 1980-2099.

Выше представлен американский стандарт формата команды DATE.

Кроме этого, существует европейский ( — — ) и восточноазиатский ( — — ) стандарты.

Вид представления даты определяется установкой кода страны в файле CONFIG.SYS командой COUNTRY, которые в данной работе не рассматриваются.

Разделителями могут служить знаки:

На экране появится сообщение:

Current date is sun 01-26-1994

Enter new date (mm-dd-yy):

(Введите новую дату (mm-dd-yy):)

Если нажать клавишу Enter, то эта дата останется неизменной.

Если же необходимо ввести новую дату, то следует ввести цифрами новую дату, например:

и нажать клавишу Enter.

Если задание времени произведено неверно или задан неправильный разделитель, то выводится сообщение:

Enter new date (mm-dd-yy):

(Введите новую дату (mm-dd-yy):)

В этом случае будет установлена новая дата и на экран дисплея никаких дополнительных сообщений выводиться не будет.

MD (илиMKDIR)

Тип команды: внутренняя.

Назначение: команда MD (Make Directory) создает новый подкаталог в указанном каталоге.

Формат использования команды:

MD [disk:][path\] dirname

dirname – имя создаваемого каталога.

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

Если не указано имя диска disk:, то подразумевается текущий диск.

Если не указан путь path\, каталог создается в текущем каталоге текущего или указанного диска.

В текущем каталоге создается подкаталог TL1.

В корневом каталоге дискеты A: создается подкаталог DOS.

Создает на дискете A: в каталоге DOS подкаталог BATCH.

CD (илиCHDIR)

Тип команды: внутренняя.

Назначение: (Change Directory – сменить каталог) изменяет текущий каталог, отображает на экране дисплея имя текущего (рабочего) каталога.

Формат использования команды:

disk: – определяет дисковод, для которого необходимо изменить или вывести текущую директорию;

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

1. Если указан disk:, то путь path\ задается от корневого каталога заданного диска.

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

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

4. Для перехода в каталог предыдущего уровня (ро­ди­тель­ский каталог) используются символы «..» (две точки).

5. Описание пути к нужному каталогу от корневого каталога начинается с символа «\».

Левая косая черта («\»Backslash), расположенная в начале пути, символически воплощает корневой каталог, для которого не существует собственного имени .

6. Если, находясь в главном (корневом) каталоге Root, выполнить команду

появится сообщение об ошибке:

так как для корневого каталога это невозможно.

Осуществляется переход из текущего каталога в подкаталог TL1. Каталог TL1 становится текущим каталогом.

Выводит имя текущего каталога на текущем диске.

Вывод имени текущего каталога на диске F:, который не является текущим.

Переход в каталог, расположенный на 1 уровень выше, т. е. в родительский каталог.

Переход в корневой каталог текущего дисковода (первая косая черта «\» обозначает корневой каталог).

Переход на дисковод A: в корневой каталог (Root), т.е. активным является корневой каталог дисковода A:.

Переход от текущего корневого каталога диска A: через «дочерний» каталог BOOKS к каталогу-«внуку» FICTION, который и становится текущим.

Переход на два каталога «вверх».

RDилиRMDIR

Тип команды: внутренняя.

Назначение: (Remove Directory) уничтожение (удале-ние) каталога.

Формат использования команды:

RD [disk:][path\] dirname,

disk: – имя дисковода, на котором находится удаляемый каталог;

path\ – путь к удаляемому каталогу;

dirname – имя удаляемого каталога.

Внимание! Удалять можно только пустой каталог, т. е. каталог, не содержащий файлов и подкаталогов (Subdirectories).

1. Если на первом месте в обозначении пути поиска стоит обратная (левая) косая черта (Backslash«\»), то удаляемый каталог надо искать, начиная с корневого.

Если этот символ опущен, то MS DOS будет искать удаляемый каталог, начиная с текущего каталога.

Другими словами, первым способом задается “абсолютный» путь, а вторым – «относительный«.

2. Корневой каталог (Root) нельзя удалить командой RD.

3. Нельзя уничтожить текущий каталог!

Из текущего каталога удаляется подкаталог TEST.

Удаляется подкаталог VS из каталога PROGS диска A:.

COPY

Тип команды: внутренняя.

Назначение: копирует один или несколько файлов на другое дисковое устройство и присваивает скопированному файлу другое имя в том случае, когда это имя задано в команде COPY.

Копирует также файлы на одном диске. В этом случае необходимо присваивать файлам-копиям другие имена, если файлы находятся в одной директории.

При выполнении команды COPY может быть выполнена конкатенация (объединение) файлов.

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

Форматы использования команды:

COPY pathname1 [switches] [pathname2] [switches]

pathname1 – задает источник копирования: имя файла (или файлов – при этом допускается использование шаблона) или имя каталога, если необходимо скопировать все файлы каталога;

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

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

Если pathname2 – имя файла, то источник копируется в файл с указанным именем.

switches – ключи, допускаемые при выполнении команды COPY:

/A –файл обрабатывается как текстовой в кодах ASCII;

/B – файл обрабатывается как двоичный файл;

/V – (Verify – проверить) проверяет, правильно ли записаны данные в целевой файл (назначение).

При копировании допускается использование логических устройств, например, CON – консоль (клавиатура – при вводе, дисплей – при выводе), PRN – принтер (только как выходной файл).

Использование этих устройств будет рассмотрено в последующем материале.

Формат использования команды COPY для конкатенации файлов имеет следующий вид:

COPY pathname1[+pathname2+. ] [pathname]

Источник представляет собой перечень файлов, соединенных знаком «+» (плюс), при этом допускается использование шаблона.

Не следует использовать имена файлов источника (кроме первого имени) в качестве имени файла назначения: это приведет к потере информации.

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

Примечания к операциям копирования с указанием входных и выходных спецификаций файлов.

1. В команде сначала указывается входная спецификация, затем – выходная.

2. Если не указано имя диска, подразумевается текущий диск (это относится как к диску-источнику, так и к диску-приемнику).

3. Если не указан путь, подразумевается текущий каталог (как на диске-источнике, так и на диске-приемнике).

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

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

6. Если в выходной спецификации отсутствует имя файла, выходные файлы принимают имена входных.

7. При копировании с диска на диск файлы рассматриваются как двоичные (т. е. по умолчанию действует ключ /B).

8. При копировании с или на устройство файлы рассматриваются как текстовые (т. е. по умолчанию действует ключ /A).

Примечания к операциям копирования с указанием одной спецификации.

1. Указывается входная спецификация.

2. Выходной спецификацией считается текущий диск или текущий каталог; копируемым файлам даются имена входных.

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

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

5. Копируемые файлы рассматриваются как двоичные (т. е. по умолчанию действует ключ /B).

Примечания к операциям объединения.

1. Символ «,,» (две запятые), вводимый после знака «+», указывает MS DOS, что список входных файлов исчерпан.

2. Объединяемые файлы считаются текстовыми. При объединении двоичных файлов необходимо указывать ключ /B.

COPY TS1.PAS TS2.PAS /V

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

Файл LIB.txt из текущего каталога диска F: копируется на дискету, не имеющую древовидного каталога, либо в текущий каталог дискеты A:.

Файл с дисковода A: копируется на дисковод B: под тем же именем. На компьютере с одним дисководом DOS перед копированием запросит установку дискеты для копии.

F:>COPY \DOSDOC\BOOK\ch1.txt \WORDS\ch2.doc

Копирование файла ch1.txt из каталога \DOSDOC\BOOK в каталог \WORDS с изменением имени на ch2.doc. Оба каталога находятся на текущем диске F:.

Копирование всех файлов с расширением C из текущего каталога диска F: в текущий каталог диска A: под тем же именем.

Копирование всех файлов из текущего каталога диска A: в текущий каталог текущего диска F: под теми же именами.

Входной файл VP.PAS копируется «сам в себя» с изменением даты и времени создания на текущие.

Файл DTA.C копируется в текущий каталог текущего диска. Имя файла назначения (целевого файла) не задано, поэтому в текущем каталоге создается копия этого файла под тем же именем. Если активным будет дисковод A:, будет выдано сообщение:

File cannot be copied onto itself

(Файл не может быть скопирован сам на себя).

Копируются данные, которые вводятся через клавиатуру в файл h1.bat. После ввода этой команды можно набирать текст через клавиатуру. Чтобы записать этот файл в память, необходимо нажать клавишу F6 или одновременно клавиши Ctrl+Z, а вслед за этим – Enter. При этом на экране дисплея появляются символы ^Z, и этот файл записывается на дискету или жесткий диск.

С помощью этой команды текст, набираемый на клавиатуре, будет печататься на принтере, т. е. компьютер превращается в пишущую машинку! После набора текста и нажатия клавиш Ctrl+Z, а затем Enter, весь текст будет отпечатан на принтере.

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

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8377 — | 8007 — или читать все.

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

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

очень нужно


Приложение Б Функции DOS (INT 21h)

Приложение Б Функции DOS (INT 21h)

DOS, функция 00h

CS – сегмент PSP завершающегося процесса

Описание. Передает управление на вектор завершения в PSP (выходит в родительский процесс). Идентична функции INT 20h (Terminate). Регистр CS должен указывать на PSP. Восстанавливает векторы прерываний DOS 22h-24h (Завершение, Ctrl-Break и Критическая ошибка), устанавливая значения, сохраненные в родительском PSP. Выполняет сброс файловых буферов. Файлы должны быть предварительно закрыты, если их длина изменилась.

Данная функция не рекомендуется к использованию. Для выхода из программы лучше использовать функцию DOS 4Ch.

DOS, функция 01h Считать со стандартного устройства ввода

Выход: AL – символ, полученный из стандартного ввода

Описание. Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). При обнаружении Ctrl-Break выполняется INT 23h.

Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и другие) требует двух обращений к этой функции. Первый вызов возвращает AL=0. Второй вызов возвращает в AL расширенный код ASCII.

DOS, функция 02h Записать в стандартное устройство вывода

DL – символ, выводимый в стандартный вывод

Посылает символ из DL в стандартное устройство вывода. Обрабатывает символ Backspace (ASCII 8), перемещая курсор влево на одну позицию и оставляя его в новой позиции. При обнаружении Ctrl-Break выполняется INT 23h.

DOS, функция 03h Считать символа со стандартного вспомогательного устройства

Выход: AL – символ, введенный со стандартного вспомогательного устройства

Описание. Считывает (ожидает) символ со стандартного вспомогательного устройства, COM1 или AUX и возвращает этот символ в AL.

Ввод не буферизуется и должен опрашиваться (не управляется прерываниями). При запуске DOS порт AUX (COM1) инициализируется так: 2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Команда DOS MODE используется для установки иных характеристик.

DOS, функция 04h Записать символ в стандартное вспомогательное устройство

DL – символ, выводимый в стандартное вспомогательное устройство

Посылает символ, находящийся в регистре DL, на стандартное вспомогательное устройство, COM1 или AUX.

DOS, функция 05h Вывести на принтер

DL – символ, записываемый на стандартный принтер

Посылает символ в DL на стандартное устройство печати, обычно LPT1.

DOS, функция 06h Консольный ввод-вывод

DL=00h-FEh – символ, посылаемый на стандартный вывод

DL=FFh – запрос ввода со стандартного ввода

ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода

AL – считанный символ

ZF=1, если осуществлялся ввод символа и символа в консоли нет

При DL=0FFh выполняет ввод с консоли «Без ожидания», возвращая включенный флаг нуля ZF, если на консоли нет готового символа. Если символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL. Если DL не равен 0FFh, то DL направляется на стандартный вывод.

DOS, функция 07h Нефильтрующий консольный ввод без эха

Выход: AL – символ, полученный через стандартный ввод

Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. Не проверяет на Ctrl-Break, BackSpace и другие.

Для ввода расширенного символа ASCII должна быть вызвана дважды. Для проверки статуса используется функция DOS 0Bh (чтобы не ожидать нажатия клавиши).

DOS, функция 08h Консольный ввод без эха

Выход: AL – символ, полученный через стандартный ввод

Описание. Считывает (ожидает) символ со стандартного входного устройства и возвращает этот символ в AL. При обнаружении Ctrl-Break выполняется прерывание INT 23h.

Для ввода расширенного символа ASCII должна быть вызвана дважды.

DOS, функция 09h Запись строки на стандартный вывод

DS:DX – адрес строки, заканчивающейся символом «$» (ASCII 24h)

Строка, исключая завершающий ее символ «$», посылается на стандартный вывод. Символы Backspace обрабатываются как в функции 02h (вывод на дисплей). Чтобы перейти на новую строку, обычно включают в текст пару CR/LF (ASCII 0Dh и ASCII 0Ah). Строки, содержащие «$», можно передать на стандартное устройство вывода с помощью функции 40h (BX=0).

DOS, функция 0Ah Ввод строки в буфер

DS:DX – адрес входного буфера (Таблица Б-1)

Таблица Б-1. Формат входного буфера

Буфер содержит введенные данные, в конце – символ CR (ASCII 0Dh)

DOS, функция 0Bh Проверка статуса ввода

Выход: AL=FFh, если символ доступен со стандартного ввода AL=00h, если нет доступного символа

Описание. Проверяет состояние стандартного ввода. При распознавании Ctrl-Break выполняется INT 23h.

Используется перед функциями 01h, 07h и 08h, чтобы избежать ожидания нажатия клавиши.

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

DOS, функция 0Ch Ввод с очисткой

AL – номер функции ввода DOS:

AL=01h – ввод с клавиатуры

AL=06h – ввод с консоли

AL=07h – нефильтрующий без эха

AL=08h – ввод без эха

AL=0Ah – буферизованный ввод

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

DOS, функция 0Dh Сброс диска

Сбрасывает диск (записывает на диск все файловые буферы). Файл, размер которого изменился, должен быть предварительно закрыт (при помощи функций 10h или 3Eh).

DOS, функция 0Eh Установить текущий диск DOS

DL – номер диска (0 – A, 1 – B и так далее), который становится текущим

Выход: AL – общее число дисководов в системе

Описание. Диск, указанный в DL, становится текущим. Проверка: используется функция 19h (дать текущий диск). В регистре AL возвращается число дисководов всех типов, включая жесткие диски и «логические» диски (как диск B: системе с одним гибким диском).

AL имеет то же значение, что и LASTDRIVE, указанное в файле CONFIG.SYS, и по умолчанию равно 5.

DOS, функция 0Fh Открыть файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

Таблица Б-2. Формат FCB

AL=00h, если функция выполнена успешно (FCB заполнен)

AL=FFh, если файл не найден или доступ к файлу не разрешен

Файл, описываемый неоткрытым FCB, должен существовать в текущем оглавлении на диске, специфицированном в FCB (0 – текущий, 1 – A, 2 – B и так далее). Если файл не существует, возвращается AL=0FFh. Файл открывается в режиме совместимости. Если поле «Номер диска» в FCB равно нулю в момент вызова, то оно заполняется номером текущего дисковода (1 – A, 2 – B и так далее). Поле FCB «Номер текущего блока» устанавливается в ноль. Поле FCB «Размер логической записи» устанавливается в 80h. Поля даты и размера файла в FCB устанавливаются из оглавления.

DOS, функция 10h Закрыть файл через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если файл не найден там, где он находился при открытии с помощью функции 0Fh

Закрывает файл, открытый функцией 0Fh. Файл должен находиться на своем первоначальном месте в текущем оглавлении диска, на котором он был открыт. Если файл найден, оглавление обновляется, файловые буфера сбрасываются и возвращается AL=00h. Если файл не найден, оглавление не обновляется и возвращается AL=FFh.

DOS, функция 11h Найти первый совпадающий файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если подходящее имя найдено

AL=FFh, если подходящего имени нет

В текущем оглавлении DOS происходит поиск файлов с именем, соответствующим заданному шаблону. При неудаче возвращается AL=0FFh. Если имя найдено, AL очищается, в первый байт DTA помещается номер дисковода (A – 1, B – 2 и так далее), а в следующие 32 байта помещается элемент оглавления для найденного файла.

Можно использовать при вызове расширенный FCB, чтобы выбирать файлы с указанными атрибутами. В этом случае в DTA помещаются: байт FFh, 7 байт нулей, номер диска и элемент оглавления.

DOS, функция 12h Найти следующий совпадающий файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если подходящее имя найдено

DTA заполнен AL=FFh, если подходящего имени нет

Используется после вызова функции 11h (Найти первый совпадающий файл через FCB) с обобщенным именем файла. Каждый последующий вызов заполняет DTA очередным подходящим элементом оглавления и возвращает AL=00h. Если подходящих имен больше нет, возвращается AL=FFh.

Резервируемая область в FCB сохраняет информацию, необходимую для продолжения поиска. Поэтому не стоит открывать и изменять FCB между вызовами.

DOS, функция 13h Удалить файл через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если файл не найден или доступ к файлу не разрешен

Эта функция удаляет все подходящие файлы в текущем оглавлении указанного диска согласно спецификации в FCB. Если подходящие файлы не найдены или если доступ отвергнут (как при попытке удалить файл с атрибутом Read-Only), функция возвращает в регистре AL значение FFh.

DOS, функция 14h Последовательное чтение из файла через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если чтение было успешным и DTA содержит данные

AL=01h, если достигнут конец файла (EOF) и данные не считаны

AL=02h, если произошел выход за сегмент (чтения не было)

AL=03h, если EOF и считана усеченная запись (дополнена нулями)

Функция читает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать CurRec в ноль, так как функция 0Fh не инициализирует это поле.

DOS, функция 15h Последовательная запись в файл через FCB

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если запись была успешной

AL=01h, если ошибка переполнения диска (данные не записаны)

AL=02h, если произошел выход за сегмент (записи не было)

Функция записывает файл, специфицированный в FCB. Затем соответственно увеличивает значения полей в FCB.

Перед началом последовательной обработки файла нужно сбрасывать «Номер текщей записи» в ноль, так как функция 0Fh не инициализирует это поле.

DOS буферизует данные, записывая полный сектор за один раз.

DOS, функция 16h Создание файла через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно FCB заполнен

AL=FFh, если при выполнении функции возникли ошибки

Описание. Файл, специфицированный неоткрытым FCB, создается на диске, указанном в FCB (0 – текущий, 1 – A и так далее). Он открывается в текущем оглавлении этого диска. FCB заполняется аналогично функции 0Fh. Если файл существует в момент вызова, его элемент оглавления перекрывается новым файлом, а длина файла сбрасывается в ноль.

Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.

DOS, функция 17h Переименовать файл через FCB

DS:DX – адрес измененного FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если при выполнении функции возникли ошибки

Переименовывает файл в текущем оглавлении.

DOS, функция 19h Получить текущий диск DOS

Выход: AL – номер текущего диска (0 – A, 1 – B, и так далее)

Возвращает номер дисковода текущего диска DOS.

DOS, функция 1Ah Установить адрес DTA

DS:DX – адрес DTA

Устанавливает адрес DTA. Все FCB-ориентированные операции работают с DTA. DOS не позволяет операциям ввода/вывода пересекать границу сегмента. Функции поиска 11h, 12h, 4Eh и 4Fh помещают данные в DTA. DTA глобальна, поэтому надо проявлять осторожность при назначении ее в рекурсивной процедуре. При запуске программы ее DTA устанавливается по смещению 80h относительно PSP.

DOS, функция 1Bh Получить информацию FAT для текущего диска

DS:BX – адрес байта FAT ID, отражающего тип диска (Таблица Б-3)

DX – всего кластеров (единиц распределения) на диске

AL – секторов на кластер

CX – байт на сектор

Таблица Б-3. Значения >

Возвращает информацию о размере и типе текущего диска. Размер диска (в байтах) равен DX*AL*CX. Свободную память можно найти функциями 36h или 32h.

Версии: DOS 1.x держит FAT в памяти и возвращает DS:BX => FAT. DOS 2.0+ может держать в памяти лишь часть всей FAT.

Эта функция изменяет содержимое регистра DS.

DOS, функция 1Ch Получить информацию FAT для указанного диска

DL – номер диска (0 – текущий, 1 – A и так далее)

DS:BX – адрес байта FAT ID, отражающего тип диска (приведен в описании функции 1Bh)

DX – всего кластеров (единиц распределения)

AL – секторов на кластер

CX – байт на сектор

Аналогична функции 1Bh с той разницей, что регистр DL указывает диск, для которого нужно получить информацию.

DOS, функция 21h Считать произвольную запись файла

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если чтение было успешным и DTA заполнена данными

AL=01h, если достигнут конец файла (EOF) и чтения не было


AL=02h, если произошел выход за сегмент (чтения нет)

AL=03h, если встречен EOF и усеченная запись дополнена нулями

Данная функция читает из файла с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».

DOS, функция 22h Писать произвольную запись файла

DS:DX – адрес открытого FCB (Таблица Б-2)

AL=00h, если запись была успешной

AL=01h, при переполнении диска

AL=02h, если DTA+FCB выходит за сегмент (нет записи)

Данная функция записывает в файл с текущей позиции как с указанной в полях FCB «Запись с текущей позиции» и «Номер записи при непосредственном доступе к файлу».

DOS, функция 23h Получить размер файла через FCB

DS:DX – адрес неоткрытого FCB (Таблица Б-2)

AL=00h, если функция выполнена успешно

AL=FFh, если при выполнении функции возникли ошибки

Проще определить размер файла при помощи функции 3Dh с последующим выполнением 42h (при AL=2).

DOS, функция 24h Установить адрес произвольной записи в файле

DS:DX – адрес открытого FCB (Таблица Б-2)

Устанавливает поле «Номер записи при непосредственном доступе к файлу» в FCB на файловый адрес, соответствующий значениям полей «Текущий блок» и «Запись с текущей позиции».

DOS, функция 25h Установить вектор прерывания

AL – номер прерывания

DS:DX – вектор прерывания – адрес программы обработки прерывания

Описание. Устанавливает значение элемента таблицы векторов прерываний для прерывания с номером AL, равным DS:DX. Это равносильно записи 4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS знает, что происходит, и гарантирует, что в момент записи прерывания будут заблокированы.

Восстановить DS (если необходимо) после этого вызова.

DOS, функция 26h Создать новый PSP

DX – адрес сегмента (параграфа) для нового PSP

CS – сегмент PSP, используемый как шаблон для нового PSP (Таблица Б-4)

Описание. Устанавливает PSP для порождаемого процесса по адресу DX:0000. Текущий PSP (100h байт, начиная с CS:0) копируется в DX:0000h, поле MemTop соответственно корректируется, векторы Terminate, Ctrl-Break и Critical Error копируются в PSP из векторов прерываний INT 22h, INT 23h и INT 24h. После этого можно загрузить программу с диска и передать ей управление посредством FAR JMP.

Если перехватывается INT 21h, нужно позаботиться о помещении в стек корректного CS: IP. Еще лучше использовать функцию 4Ch.

Таблица Б-4. Формат PSP

DOS, функция 27h Читать произвольный блок файла

DS:DX – адрес открытого FCB (Таблица Б-2)

CX – число считываемых записей

Выход: AL=00h, если чтение успешно и DTA заполнена данными AL=01h если достигнут конец файла (EOF) и данные не считаны AL=02h, если при чтении произошел выход за границу сегмента AL=03h, если EOF и считана усеченная порция (дополнена нулями) CX – действительное число считанных записей

Читает несколько записей из файла, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Помещает данные в память, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).

DOS, функция 28h Писать произвольный блок файла

DS:DX – адрес открытого FCB (Таблица Б-2)

CX – число записываемых блоков (если CX равен нулю, то размер файла усекается до указанного в поле FCB «Номер записи при непосредственном доступе к файлу»)

AL=00h, если запись успешна

AL=01h, при переполнении диска

AL=02h, если при записи произошел выход за границу сегмента

CX – действительное число сделанных записей

Описание. Записывает несколько блоков в файл, начиная с файлового адреса, указанного полем «Номер записи при непосредственном доступе к файлу» в FCB. Читает данные из памяти, начиная с адреса DTA. Соответствующие поля FCB корректируются, чтобы указывать на следующую запись (первую за прочитанными).

DOS, функция 29h Разобрать имя файла

DS:SI – адрес исходной текстовой строки для разбора

ES:DI – адрес буфера для результирующего неоткрытого FCB (Таблица Б-2)

AL – битовые флаги, указывающие опции разбора (Таблица Б-5).

AL=00h, если результирующий FCB не содержит обобщенных символов

AL=01h, если результирующий FCB содержит обобщенные символы

AL=FFh, если неверно обозначение диска в имени файла

DS:SI – изменен – указывает на символ сразу вслед за именем файла

ES:DI – не изменен – указывает на неоткрытый FCB

Создает неоткрытый FCB из строки текста или параметра команды. Текст, начиная с DS:SI, анализируется как имя файла в формате D: FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответственно форматированный FCB.

Таблица Б-5. Битовые флаги

DOS, функция 2Ah Получить системную дату

AL – день недели (0 – воскресенье, 1 – понедельник, … 6 – суббота), DOS 3.0+

CX – год (от 1980 до 2099)

DH – месяц (1 до 12)

DL – день (1 до 31)

Описание. Возвращает текущую дату, которая известна системе.

DOS 2.x не гарантирует возврата в AL значения дня.

DOS 1.0+ возвращает правильный день недели.

Версии до 2.1 имеют проблемы с переходом через дату.

DOS, функция 2Bh Установить системную дату

CX – год (от 1980 до 2099)

DH – месяц (от 1 до 12)

DL – день (от 1 до 31)

AL=00h, если дата корректна

AL=FFh, если дата некорректна и не изменена

Устанавливает системную дату DOS.

DOS, функция 2Ch Получить время DOS

CH – часы (от 0 до 23)

CL – минуты (от 0 до 59)

DH – секунды (от 0 до 59)

DL – сотые доли секунды (от 0 до 99)

Описание. Возвращает текущее время, которое известно системе.

Поскольку системные часы имеют частоту 18.2 Гц (интервал 55мс), DL имеет точность примерно 0.04 сек.

DOS, функция 2Dh Установить время DOS

CH – часы (от 0 до 23)

CL – минуты (от 0 до 59)

DH – секунды (от 0 до 59)

DL – сотые доли секунды (от 0 до 99)

AL=00h, если время корректно

AL=FFh, если время некорректно и не изменено

Устанавливает системное время DOS.

DOS, функция 2Eh Установить/сбросить переключатель верификации

AL=00h – отключить верификацию

AL=01h – включить верификацию

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

DOS, функция 2Fh Получить адрес текущей DTA

Выход: ES:BX – адрес начала текущей DTA

Описание. Возвращает адрес начала области ввода-вывода (DTA). Поскольку DTA глобальна для всех процессов, в рекурсивной процедуре (например, при проходе по дереву оглавления) может потребоваться сохранить адрес DTA, а впоследствии восстановить его посредством функции 1Ah.

Примечание. Эта функция изменяет сегментный регистр ES.

Версии: DOS 2.00 и выше DOS, функция 30h Получить номер версии DOS

AL – старший номер версии

AH – младший номер версии

BL:CX – 24-битный серийный номер (большинство версий не поддерживают этот параметр)

Описание. Возвращает в AX значение текущего номера версии DOS. Например, для DOS 3.20 в AL возвращается 03h, в AH – 14h.

Примечание. Если в AL возвращается 00h, можно предполагать, что работает DOS более ранней версии, чем DOS 2.0.

Версии: DOS 2.00 и выше. DOS, функция 31h Завершиться и остаться резидентным

DX – объем памяти, оставляемой резидентной (в параграфах)

Описание. Выходит в родительский процесс, сохраняя код выхода в AL. Код выхода можно получить через функцию 4Dh. DOS устанавливает начальное распределение памяти, как специфицировано в DX, и возвращает управление родительскому процессу, оставляя указанную память резидентной (число байт равно DX*16). Эта функция перекрывает функцию INT 27h, которая не возвращает код выхода и не способна установить резидентную программу, размер которой превышает 64 Кбайт.

Какие символы недопустимы для имени файла MS-DOS?

Я пишу процедуру ввода-вывода имени файла на языке ассемблера x86-16. Он занимает восемь символов (мне не нужно поддерживать длинные имена файлов) с клавиатуры и печатает их в поле ввода текста на экране.

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

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

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

4 ответов

краткое резюме можно найти Википедии:

допустимые символы для имен файлов DOS:

  • заглавные буквы A — Z
  • цифры 0 — 9
  • пробел (хотя конечные пробелы в базовом имени или расширении считаются заполнением, а не частью имени файла, также имена файлов с пробелами в них должны быть заключены в кавычки, чтобы быть используется в командной строке DOS, и если команда DOS собрана программно, имя файла должно быть заключено в четырехкратные кавычки при просмотре как переменная в программе, строящей команду DOS.)
  • ! # $ % & ‘ ( ) — @ ^ _ `
  • значения 128-255 (хотя если службы NLS активны в DOS, некоторые символы, интерпретируемые как строчные, недопустимы и недоступны)
  • это исключает следующие символы ASCII:

    • » * + , / : ; ? \ [ ] | [9]
    • Windows / MS-DOS не имеет escape-символа оболочки
    • . (U+002E . полная остановка) в полях Имя и расширение, кроме in . и. . записи (см. ниже)
    • строчные буквы a — z (хранится как A–Z на FAT12/FAT16)
    • 0-31 управляющие символы
    • значение 127(DEL) [сомнительно – обсудить]

    и вот что MS-DOS 6 руководство пользователя официально сказал

    имен файлов и каталогов

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

    • может быть до восемь символов. Кроме того, можно включить расширение длиной до трех символов.
    • регистр не учитывается. При вводе не имеет значения, используются ли буквы верхнего или нижнего регистра.
    • может содержать только буквы от A до Z, цифры от 0 до 9 и следующие специальные символы: символ подчеркивания ( _ ), caret ( ^ ), знак доллара ( $ ), tilde (

    ), восклицательный знак ( ! ), знак номера ( # ), знак процента ( % ), амперсанд ( & ), дефис ( — ), скобки ( <> ), at sign ( @ ), одинарные кавычки ( ` ), Апостроф ( ‘ ), а скобки () . Другие специальные символы не допускаются.

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

      он может содержать не более восьми символов.

    оно может состоять из букв A до Z, цифры от 0 до 9 и следующие специальные символы:

    Примечание: никакие другие специальные символы не допустимы.

    • имя не может содержать пробелы, запятые, обратную косую черту или точки (кроме точки, отделяющей имя от расширения).
    • имя не может быть одним из следующих зарезервированных имен файлов: CLOCK$, CON, AUX, COM1, COM2, COM3, COM4, LPT1, LPT2, LPT3, LPT4, NUL и PRN.
    • имя не может совпадать с именем другого файла в каталоге.

    первый байт имени не должен быть 0x20 (пробел). Короткие имена или расширения дополняются пробелами. Специальные символы ASCII 0x22 ( » ), 0x2a ( * ), 0x2b ( + ), 0x2c ( , ), 0x2e ( . ), 0x2f ( / ), 0x3a ( : ), 0x3b ( ; ), 0x3c ( ), 0x3d ( = ), 0x3e ( > ), 0x3f ( ? ), 0x5b ( [ ), 0x5c ( \ ), 0x5d ( ] ), 0x7c ( | ) не допускается.

    если вы также заинтересованы в MS-DOS 5.0, то здесь.

    Dos fn 29h: разобрать имя файла

    При размещении контента, по возможности, прикрепляйте инструкцию

    Правила темы:
    1. Разрешается выкладывать только проверенный софт (так же разрешено отписываться и давать пояснения по уже имеющимуся софту — на каком дивайсе и каким образом испытан).
    2. К каждому инструменту должно быть описание (принадлежность, ОС, мануал).
    3. Запрещается выкладывать и давать ссылки на нелегальный (пиратский) контент.
    4. Запрещается обсуждение софта в теме.

    Сообщение отредактировал Fashionon — 18.02.16, 11:12

    • Бубен Одмина — инструмент для тонкой настройки серверов и не только.
    • Java Development Kit — комплект разработчика приложений на языке Java
    • Android SDK — инструментарий для разработки
    • Busybox — набором утилит командной строки UNIX (Linux) систем


    • UnicodeConverter.bat — Преобразование юникода в человеко-читаемый язык и обратно.
    • ApkTools для Андроид 6.0.1
    • ApktoolMod — на базе apktool 2.0.2
    • Tickle My Android — Многоцелевая кухня, для редактирования системных ресурсов
    • FMD Apktool OS Linux — Утилита для разборки/сборки приложений под Linux от команды FMD
    • Apktool на OS LinuxУстановка и использование apktool на OS Linux Ubuntu 14.04-64bit. Автоматическая установка
    • APKTool — Готовый набор, включающий всё, что нужно для разборки файлов apk
    • Batch ApkTool — Позволяет пакетно деодексировать, декомпилировать, изменять ресурсы и smali-код (переход в тему)
    • Apk Manager — Готовый набор, включающий всё, что нужно для разборки файлов apk
    • ColorEdit — Программа позволяет с удобством редактировать файл color.xml
    • Менеджер apk, для разборки, сборки, подписи — Для UBUNTU.На Русском языке.
    • Easy Debugging Tool — Приложение для определения запущенного активити приложения
    • Public ID Converter — Утилита для поиска и замены id из public.xml в .smali
    • Конвертер смали — Последнее время много инструкций не подходят друг кдругу из за версий smali решение данной проблемы не большим скриптом
    • Список программ для работы с приложениями (.apk) на андроид устройстве.
    • Carliv Image Kitchen for Android — Утилита для распаковки/упаковки boot.img или recovery.img под WINDOWS и Linux.
    • Скрипт для перепаковки boot.img/recovery.img — Перепаковка boot.img/recovery.img на уст-ве без ПК
    • Image Factory — работа с образом *.img на андроид
    • BOOT & RECOVERY REPACKER — инструмент для перепаковки boot.img и recovery.img в LINUX
    • split_bootimg — Распаковка boot.img
    • mkbootimg_tools-master — утилита под Линух с поддержкой dtb, корректно перепаковывающая msm boot.img recovery.img
    • Android Image Kitchen — Unpack/Repack Kernel/Recovery + ramdisk — Утилита для перепаковки ядер и рекавери под виндовс
    • KERNEL Tools — набор утилит для перепаковки ядер
    • UBUNTU — Настройка и подготовка к работе с исходниками, ядрами, приложениями и прошивками под ANDROID
    • JoelDroid Lollipop Batch Deodexer — Инструмент, для пакетного деодексирование приложений в андроид Lollipop
    • Deodexer for Android Runtime — Инструмент для деодексации приложений Android 5.0 и выше
    • xUltimate — Пакет утилит для деодексирования системных apk.
    • AutoDEOTool — деодекс прошивок
    • DeodexForART(Lollipop)_v2.2.2 — Полноавтоматический deodexed инструмент для Lollipop
    • FMD Tools — Новая утилита для удобной обработки файлов прошивок
    • Утилиты для RockChip — 100% рабочие прошивки под стоковый прошивальщик, ОС Убунту
    • Cygwin — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
    • Cygwin — подробная инструкция к UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
    • Android-Kitchen — Инструмент для создания кастомных прошивок на базе Linux.
    • УСТАНОВКА Android Kitchen — by dsixda (xda-developers.com) — ДЛЯ MAC OS X 10.8.x
    • Odin3 ROM Editor — Только для Linux
    • Сборка прошивки на Samsung Galaxy S i9000 для Odin.[/url]
    • New TuxBox Flash Tools v.1.0 — утилитка для работы с образами cramfs и yaffs2
    • Компиляция Android 4.1 Jelly Bean в Ubuntu Linux
    • [DEV_TOOL]HTC ROM-EXTRACTOR — Инструмент для работы с прошивками HTC в LINUX
    • [DEV_TOOL]TAR.MD5 PACKAGER — Инструмент перепаковки прошивок и их отдельных частей в .tar.md5 для последующей прошивки через Odin под Windows
    • ROM Helper — комплексный подход по работе с прошивками из под Windows
    • jBART — Комбайн для работы с прошивками на базе Android OS, a также с файлами apk
    • Фирменный консольный инструмент RockChip — Позволяет сделать все что нужно для разработчика
    • IEEE Calculator (IEEE Floating Point Calculator) — перевод значений из float в HEX и обратно IEEE Floating Point Calculator
    • iCatalyst — приложение для уменьшения веса картинок при сохранении качества
    • Draw9patch утилита для работы с *.9.png изображениями.
    • HTML Color Picker — С помощью этого приложения, вы, можете быстро посмотреть сочетание текста и фона.
    • PNG_convertor_v2.3 — Инструмент для пакетного преобразования индексированных .png картинок в неиндексированные
    • 9 Patch Editor — Это приложение помогает редактировать графические ресурсы Android-приложений и тем.
    • 9Patch Resizer — групповое изменение размеров графики
    • Android Color Tool
    • Преобразование цвета (Инструмент) — инструмент для преобразования цветовых кодов между HEX, SMALI и XML.
    • HEIMDALL — прошивальщик OS: Linux, OS X, Windows
    • HEIMDALL FLASHER SGSIII/SGNII SUPPORT — инструмент на основе известного прошивальщика Heimdall — версия для прошивки в LINUX
    • COPERFIELD ROM MAKER v.0.0.5 — инструмент для создания прошивок для некоторых девайсов Samsung
    • Установка пакета «android-tools» (adb и fastboot) в Ubuntu 12.04, 11.10 и 11.04
    • Porting Tool by fagci — скрипт для портирования прошивок Android. ОС: Windows XP+
    • Packing by tar-md5 — Небольшой инструмент для автоматизации упаковки в tar.md5 для UBUNTU
    • ADB RUN — упрощенное использование ADB
      HUAWEI Multi-Tool -Позволяет выполнять последоваетьность команд fastboot, adb и adb shell, помогая Вам прозводить множество известных операций без лишних телодвижений.

    Сообщение отредактировал Димар — 05.12.17, 11:46

    Java Development Kit (сокращенно JDK) — бесплатно распространяемый Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.

    Все современные интегрированные среды разработки на Java, такие, как NetBeans, Sun Java Studio Creator, IntelliJ IDEA, Borland JBuilder, Eclipse, опираются на сервисы, предоставляемые JDK. Большинство из них для компиляции Java-программ используют компилятор из комплекта JDK. Поэтому эти среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика.

    Доступны полные исходные тексты JDK, включая исходные тексты самого Java-компилятора.

    Материал из Википедии — свободной энциклопедии
    Приложения для Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.

    Google предлагает для свободного скачивания инструментарий для разработки (Software Development Kit), который предназначен для x86-машин под операционными системами Linux, Mac OS X (10.4.8 или выше), Windows XP и Windows Vista. Для разработки JDK 5 или более новый.

    Разработку приложений для Android можно вести на языке Java (не ниже Java 1.5). Существует плагин для Eclipse — «Android Development Tools» (ADT), предназначенный для Eclipse версий 3.3-3.6. Для IntelliJ IDEA также существует плагин, облегчающий разработку Android-приложений. Сообщается, что для среды разработки NetBeans IDE разработан экспериментальный плагин. Кроме того существует Motodev Studio for Android, которая представляет собой комплексную среду разработки, основанную на базе Eclipse и позволяет работать непосредственно с Google SDK.

    1. Извлечь cygwin архив и запустить the setup file.
    2. Выбрать Install from Local Directory:

    4. Указать путь к Package Directory, она находится в распакованном архиве cygwin:

    6. Нажать символ который указан на рисунке, чтобы изменить статус на Install и нажать Next

    2. Извлеките архив с пустой dbdata.rfs Empty_dbdata.rfs_file.zip ( 2,09 КБ )
    и поместите вту же директорию:

    если нет начните сначала.

    Сообщение отредактировал Димар — 25.01.16, 20:15

    Всем, привет! Решил внести и свою лепту по сборке прошивки на Samsung Galaxy S i9000 для одина:

    После этого можно закрыть командную строку и отключить телефон от ББ.

    Нужный вам файл — factoryfs.rfs вы найдёте в папке, которую создали ранее по пути sdcard/BackupRom.
    Далее копируйте файл factoryfs.rfs на ББ в отдельно отведённую для дальнейшей сборки прошивки папку. Туда же копируйте остальные недостающие компоненты прошивки:

    Сообщение отредактировал Димар — 25.01.16, 20:16

    Вот ещё на эту тему

    *Для Win,
    Unix-like изменить расширение на htm

    Поле HEX поддерживает короткую запись цвета: 09f => FF0099FF
    В поле SMALI автоматом добавляется 0x, если отсутствует: 3f3f40 => 0x3F3F40
    █ — Вводится
    █ — Получается

    Совет: Если у вас в smali значение цвета задаётся как const/high16 (const/high16 v6, -0x1), чтобы узнать цвет — прибавьте к значению 4 нуля справа (-0x1 => -0x10000)

    Обновлено: 9.11.2011 15:00
    Причина: Неверный расчёт цвета при значениях HEX меньше 80000000

    Сообщение отредактировал Димар — 25.01.16, 20:19

    KERNEL Tools
    ОС: Linux

    Как перепаковать ядро с целью внесения в него изменений.
    Начнем с того, что ядра делятся на два типа:
    1) Ядро состоящее из образа boot.img состоящего из zImage и RAM Disk (диск в оперативной памяти для начальной инициализации).
    2) Ядро состоящее из образа zImage в который интегрируется образ initramfs (новая концепция загрузочного диска — он представляет собой сжатый gzip’ом cpio-архив).

    Итак перепаковка boot.img:
    Инструкция
    Инструмент
    перепаковка zImage:
    Инструкция
    Инструмент
    извлечение initramfs из zImage
    Инструкция
    Инструмент
    инструмент под Windows

    Сообщение отредактировал As i9000 — 29.11.11, 00:48

    Очень удобная Win утилитка для работы с образами cramfs и yaffs2. Работает с класическими образами (без извратов, типа подписи и т.д.)
    Позволяет удалять/добавлять файлы и линки (понимает буфер обмена из win-проводника), назначать права и владельцев.
    Первоначально создана McRip для спутниковых ресиверов (поэтому ругается на размер прошивки) на немецком языке.
    Я перевел на русский (опустив то, что касается прошивки реса)

    Сообщение отредактировал Димар — 25.01.16, 20:22

    Программа позволяет с удобством редактировать файл color.xml .
    Распаковываем архив, запускаем программу, выбираем файл и изменяем.


    и запустить его на выполнение (аналогично исполняемым файлам с расширением com или exe ), то мы удалим все файлы во временной директории Windows .

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

    Вывод сообщений и дублирование команд

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

    можно отключить дублирование команд, идущих после нее (сама команда ECHO OFF при этом все же дублируется). Например,

    REM Следующие две команды будут дублироваться на экране …

    REM А остальные уже не будут

    Для восстановления режима дублирования используется команда ECHO ON . Кроме этого, можно отключить дублирование любой отдельной строки в командном файле, написав в начале этой строки символ @, например:

    В пакетном файле можно выводить на экран строки с сообщениями.

    Делается это с помощью команды

    Команда ECHO . (точка должна следовать непосредственно за словом » ECHO «) выводит на экран пустую строку.

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

    Используя механизм перенаправления ввода/вывода (символы > и >>), можно направить сообщения, выводимые командой ECHO , в определенный текстовый файл.

    ECHO Привет ! > hi.txt

    ECHO Пока ! >> hi.txt

    REM Попытка копирования

    XCOPY C:\PROGRAMS D:\PROGRAMS /s

    REM Добавление сообщения в файл report.txt в случае

    REM удачного завершения копирования

    IF NOT ERRORLEVEL 1 ECHO Успешное копирование >> report . txt

    Для того , чтобы вручную прервать выполнение запущенного bat -файла, нужно нажать клавиши Ctrl >+ или Ctrl >+ Break >.

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

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

    Пусть имеется командный файл следующего содержания:

    ECHO Э та строка никогда не выполнится

    REM Продолжение выполнения

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

    Проверка существования заданного файла/каталога

    IF [ NOT ] EXIST файл команда1 [ ELSE команда2]

    Условие считается истинным, если указанный файл/каталог существует. Кавычки для имени файла не требуются.

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

    IF EXIST 1.ТХТ GOTO TP

    ECHO Файл 1.ТХТ не существует

    IF NOT EXIST E:\ 1200 MD E:\1200

    IF EXIST 1. ТХТ (TYPE 1. ТХТ ) ELSE (COPY CON 1. ТХТ )

    2.2. КОМАНДНЫЕ ФАЙЛЫ СЛОЖНОЙ СТРУКТУРЫ

    Использование параметров командной строки

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

    Для доступа из командного файла к параметрам командной строки применяются символы %0, %1, …, %9 или %*. При этом вместо %0 подставляется имя выполняемого пакетного файла, вместо %1, %2, …, %9 — значения первых девяти параметров командной строки соответственно, а вместо %* — все аргументы. Если в командной строке при вызове пакетного файла задано меньше девяти параметров, то «лишние» переменные из %1 – %9 замещаются пустыми строками.

    Рассмотрим следующий пример.

    Пусть имеется командный файл copier.bat следующего содержания:

    ECHO Файл %0 копирует каталог %1 в %2

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

    copier.bat C:\Programs D:\Backup

    то на экран выведется сообщение

    Файл copier.bat копирует каталог C:\Programs в D:\Backup

    и произойдет копирование каталога C:\Programs со всеми его подкаталогами в D:\Backup.

    При необходимости можно использовать более девяти параметров командной строки. Это достигается с помощью команды SHIFT , которая изменяет значения замещаемых параметров с %0 по %9, копируя каждый параметр в предыдущий , то есть значение %1 копируется в %0, значение %2 – в %1 и т.д. Замещаемому параметру %9 присваивается значение параметра, следующего в командной строке за старым значением %9. Если же такой параметр не задан, то новое значение %9 — пустая строка.

    В командных файлах имеются некоторые возможности синтаксического анализа заменяемых параметров. Для параметра с номером n (%n) допустимы синтаксические конструкции (операторы), представленные в таблице.

    Операторы для заменяемых параметров

    Переменная %n расширяется до полного имени файла

    Из переменной %n выделяется только имя диска

    Из переменной %n выделяется только путь к файлу

    Из переменной %n выделяется только имя файла

    Из переменной %n выделяется расширение имени файла

    Значение операторов N и X для переменной %n изменяется так, что они работают с кратким именем файла

    Проводится поиск по каталогам, заданным в переменной среды PATH , и переменная %n заменяется на полное имя первого найденного файла. Если переменная PATH не определена или в результате поиска не найден ни один файл, эта конструкция заменяется на пустую строку.

    Данные синтаксические конструкции можно объединять друг с другом, например:

    DPn — из переменной %n выделяется имя диска и путь,

    NXn — из переменной %n выделяется имя файла и расширение.

    Рассмотрим следующий пример. Пусть мы находимся в каталоге C:\TEXT и запускаем пакетный файл с параметром Рассказ.doc (%1=Рассказ.doc). Тогда применение операторов, описанных в таблице, к параметру %1 даст следующие результаты:

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

    Проверка значения переменной

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

    IF [ NOT ] строка 1 ==строка2 команда1 [ ELSE команда2]

    (квадратные скобки указывают на необязательность заключенных в них параметров) или

    IF [/I] [ NOT ] строка 1 оператор_сравнения строка2 команда

    Условие строка 1 ==строка2 (здесь необходимо писать именно два знака равенства) считается истинным при точном совпадении обеих строк. Параметр NOT указывает на то, что заданная команда выполняется лишь в том случае, когда сравниваемые строки не совпадают.

    Строки могут быть литеральными или представлять собой значения переменных (например, %1 или % TEMP %). Кавычки для строк не требуются.

    IF %1==%2 ECHO Параметры совпадают!

    IF %1==Петя ECHO Привет, Петя!

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

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

    IF %1/==/ GOTO ExitLoop

    ECHO Входной параметр не задан

    Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра.

    Проверка кода завершения предыдущей команды

    Еще один способ использования команды IF — это проверка кода завершения (кода выхода) предыдущей команды.

    IF [ NOT ] ERRORLEVEL число команда 1 [ ELSE команда2]

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

    Составим, например, командный файл, который бы копировал файл my.txt на диск C: без вывода на экран сообщений о копировании, а в случае возникновения какой-либо ошибки выдавал предупреждение:

    REM Проверка кода завершения копирования

    IF ERRORLEVEL 1 GOTO ErrOccurred

    ECHO Копирование выполнено без ошибок.

    ECHO П ри выполнении команды XCOPY возникла ошибка!

    Dos fn 29h: разобрать имя файла

    Приложение Б
    Функции DOS (INT 21 h)

    DOS, функция OOh
    Завершить программу

    AH=OOh
    CS — сегмент PSP завершающегося процесса

    Передает управление на вектор завершения в PSP (выходит в родитель-
    ский процесс). Идентична функции INT 20h (Terminate). Регистр CS
    должен указывать на PSP. Восстанавливает векторы прерываний DOS
    22h-24h (Завершение, Ctrl-Break и Критическая ошибка), устанавливая
    значения, сохраненные в родительском PSP. Выполняет сброс файло-
    вых буферов. Файлы должны быть предварительно закрыты, если их
    длина изменилась.

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

    из программы лучше использовать функцию DOS 4Ch.

    DOS, функция 01h
    Считать со стандартного устройства ввода

    AL — символ, полученный из стандартного ввода

    Считывает (ожидает) символ со стандартного входного устройства.
    Отображает этот символ на стандартное выходное устройство (эхо).
    При обнаружении Ctrl-Break выполняется INT 23h.

    Ввод расширенных клавиш ASCII (F1-F12, PgUp, курсор и другие) тре-
    бует двух обращений к этой функции. Первый вызов возвращает AL=0.
    Второй вызов возвращает в AL расширенный код ASCII.

    DOS, функция 02h
    Записать в стандартное устройство вывода

    AH=02h
    DL — символ, выводимый в стандартный вывод

    Посылает символ из DL в стандартное устройство вывода. Обрабатыва-
    ет символ Backspace (ASCII 8), перемещая курсор влево на одну пози-
    цию и оставляя его в новой позиции. При обнаружении Ctrl-Break вы-
    полняется INT 23h.

    Считать символа со стандартного вспомогательного

    AL — символ, введенный со стандартного вспомогательного устройства

    Считывает (ожидает) символ со стандартного вспомогательного устрой-
    ства, СОМ1 или AUX и возвращает этот символ в AL.

    Ввод не буферизуется и должен опрашиваться (не управляется преры-
    ваниями). При запуске DOS порт AUX (COM1) инициализируется так:

    2400 бод, без проверки на четность, 1 стоп-бит, 8-битные слова. Коман-
    да DOS MODE используется для установки иных характеристик.

    DOS, функция 04h
    Записать символ в стандартное вспомогательное устройство

    AH^h
    DL — символ, выводимый в стандартное вспомогательное устройство

    Посылает символ, находящийся в регистре DL, на стандартное вспомо-
    гательное устройство, COM1 или AUX.

    DOS, функция 05h
    Вывести на принтер

    АН-ОЗЬ
    DL — символ, записываемый на стандартный принтер

    Посылает символ в DL на стандартное устройство печати, обычно

    DOS, функция 06h
    Консольный ввод-вывод

    DL=OOh-FEh — символ, посылаемый на стандартный вывод

    DL=FFh — запрос ввода со стандартного ввода

    ZF=0, если осуществлялся ввод символа и символ готов при запросе ввода

    AL — считанный символ
    ZF=1, если осуществлялся ввод символа и символа в консоли нет

    При DL°=OFFh выполняет ввод с консоли «Без ожидания», возвращая
    включенный флаг нуля ZF, если на консоли нет готового символа. Если
    символ готов, сбрасывает флаг ZF и возвращает считанный символ в AL.
    Если DL не равен OFFh, то DL направляется на стандартный вывод.

    DOS, функция 07h
    Нефильтрующий консольный ввод без эха

    AL — символ, полученный через стандартный ввод

    Считывает (ожидает) символ со стандартного входного устройства
    и возвращает этот символ в AL. Не проверяет на Ctrl-Break, Backspace
    и другие.

    Для ввода расширенного символа ASCII должна быть вызвана дважды.
    Для проверки статуса используется функция DOS OBh (чтобы не ожи-
    дать нажатия клавиши).

    DOS, функция 08h
    Консольный ввод без эха

    AL — символ, полученный через стандартный ввод

    Считывает (ожидает) символ со стандартного входного устройства
    и возвращает этот символ в AL. При обнаружении Ctrl-Break выполня-
    ется прерывание INT 23h.

    Примечание.
    Для ввода расширенного символа ASCII должна быть вызвана дважды.

    DOS, функция 09h
    Запись строки на стандартный вывод

    АН-09Н
    DS:DX — адрес строки, заканчивающейся символом «$» (ASCII 24h)

    Строка, исключая завершающий ее символ «$», посылается на стандар-
    тный вывод. Символы Backspace обрабатываются как в функции 02h
    (вывод на дисплей). Чтобы перейти на новую строку, обычно включают
    в текст пару CR/LF (ASCII ODh и ASCII OAh). Строки, содержащие
    «$», можно передать на стандартное устройство вывода с помощью фун-
    кции 40h (ВХ-0).

    DOS, функция OAh
    Ввод строки в буфер

    AH-OAh
    DS:DX — адрес входного буфера (Таблица Б-1)

    Таблица Б-1. Формат входного буфера.

    Буфер содержит введенные данные, в конце — символ CR (ASCII ODh)

    DOS, функция OBh
    Проверка статуса ввода

    AL=FFh, если символ доступен со стандартного ввода
    AL=OOh, если нет доступного символа

    Проверяет состояние стандартного ввода. При распознавании Ctrl-Break

    выполняется INT 23h.

    Используется перед функциями Olh, 07h и 08h, чтобы избежать ожида-
    ния нажатия клавиши.

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

    DOS, функция OCh
    Ввод с очисткой

    AL — номер функции ввода DOS:

    AL=01h — ввод с клавиатуры
    AL=06h — ввод с консоли
    AL=°07h — нефильтрующий без эха

    AL=08h — ввод без эха
    AL=OAh — буферизованный ввод

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

    DOS, функция ODh
    Сброс диска

    Сбрасывает диск (записывает на диск все файловые буферы). Файл,
    размер которого изменился, должен быть предварительно закрыт (при
    помощи функций 10h или 3Eh).

    DOS, функция OEh
    Установить текущий диск DOS

    DL — номер диска (0 — А, 1 — В и так далее), который становится теку-
    щим


    AL — общее число дисководов в системе

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

    AL имеет то же значение, что и LASTDRIVE, указанное в файле

    CONFIG.SYS, и по умолчанию равно 5.

    DOS, функция OFh
    Открыть файл через FCB

    AH-OFh
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL=OOh, если функция выполнена успешно (FCB заполнен)
    AL=FFh, если файл не найден или доступ к файлу не разрешен

    Файл, описываемый неоткрытым FCB, должен существовать в текущем
    оглавлении на диске, специфицированном в FCB (0 — текущий, 1 — А,
    2 — В и так далее). Если файл не существует, возвращается AL=OFFh.
    Файл открывается в режиме совместимости. Если поле «Номер диска»
    в FCB равно нулю в момент вызова, то оно заполняется номером теку-
    щего дисковода (1 -А,2-Ви так далее). Поле FCB «Номер текущего
    блока» устанавливается в ноль. Поле FCB «Размер логической записи»
    устанавливается в 80h. Поля даты и размера файла в FCB устанавлива-
    ются из оглавления.

    DOS, функция 10h
    Закрыть файл через FCB

    AH=10h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    Таблица Б-2. Формат FCB.

    Смещ. Размер Описание
    -07h байт Расширенный FCB, если FFh
    -06h 5 байт Зарезервировано
    -Olh байт Атрибут файла, если расширенный FCB
    +00h байт Номер диска (0 — текущий, 1 — А. )
    +01h 8 байт Имя файла
    +09h 3 байта Расширение файла
    +OCh слово Номер текущего блока
    +OEh слово Размер логической записи
    +10h двойное слово Размер файла
    +14h слово Дата последней записи
    +16h слово Время последней записи
    +18h 8 байт Зарезервировано
    +20h байт Запись с текущего блока
    +21h двойное слово Номер записи при непосредственном доступе к файлу

    AL=OOh, если функция выполнена успешно

    AL=FFh, если файл не найден там, где он находился при открытии

    с помощью функции OFh

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

    DOS, функция 11h
    Найти первый совпадающий файл через FCB

    AH=llh
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL°OOh, если подходящее имя найдено

    DTA заполнен
    AL=FFh, если подходящего имени нет

    В текущем оглавлении DOS происходит поиск файлов с именем, соот-
    ветствующим заданному шаблону. При неудаче возвращается
    AL=OFFh. Если имя найдено, AL очищается, в первый байт DTA поме-
    щается номер дисковода (А — 1, В — 2 и так далее), а в следующие
    32 байта помещается элемент оглавления для найденного файла.

    Можно использовать при вызове расширенный FCB, чтобы выбирать
    файлы с указанными атрибутами. В этом случае в DTA помещаются:

    байт FFh, 7 байт нулей, номер диска и элемент оглавления. ,

    DOS, функция 12h
    Найти следующий совпадающий файл через FCB

    АН-12h
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL=OOh, если подходящее имя найдено

    DTA заполнен
    AL=FFh, если подходящего имени нет

    Используется после вызова функции llh (Найти первый совпадающий
    файл через FCB) с обобщенным именем файла. Каждый последующий
    вызов заполняет DTA очередным подходящим элементом оглавления
    и возвращает AL=OOh. Если подходящих имен больше нет, возвращает-
    ся AL=FFh.

    Резервируемая область в FCB сохраняет информацию, необходимую
    для продолжения поиска. Поэтому не стоит открывать и изменять FCB
    между вызовами.

    DOS, функция 13h
    Удалить файл через FCB

    AH=13h
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL=OOh, если функция выполнена успешно
    AL=FFh, если файл не найден или доступ к файлу не разрешен

    Эта функция удаляет все подходящие файлы в текущем оглавлении
    указанного диска согласно спецификации в FCB. Если подходящие
    файлы не найдены или если доступ отвергнут (как при попытке уда-
    лить файл с атрибутом Read-Only), функция возвращает в регистре AL
    значение FFh.

    DOS, функция 14h
    Последовательное чтение из файла через FCB

    AH°14h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    AL=OOh, если чтение было успешным и DTA содержит данные

    AL=01h, если достигнут конец файла (EOF) и данные не считаны
    AL=02h, если произошел выход за сегмент (чтения не было)
    AL=03h, если EOF и считана усеченная запись (дополнена нулями)

    Функция читает файл, специфицированный в FCB. Затем соответствен-
    но увеличивает значения полей в FCB.

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

    DOS, функция 15h
    Последовательная запись в файл через FCB

    AH°15h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    AL=OOh, если запись была успешной

    AL=01h, если ошибка переполнения диска (данные не записаны)

    AL=02h, если произошел выход за сегмент (записи не было)

    Функция записывает файл, специфицированный в FCB. Затем соответ-
    ственно увеличивает значения полей в FCB.

    Перед началом последовательной обработки файла нужно сбрасывать
    «Номер текщей записи» в ноль, так как функция OFh не инициализиру-
    ет это поле.

    Примечание.
    DOS буферизует данные, записывая полный сектор за один раз.

    DOS, функция 16h
    Создание файла через FCB

    АН-16h
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL=OOh, если функция выполнена успешно

    FCB заполнен
    AL=FFh, если при выполнении функции возникли ошибки

    Файл, специфицированный неоткрытым FCB, создается на диске, ука-
    занном в FCB (0 — текущий, 1 — А и так далее). Он открывается в те-
    кущем оглавлении этого диска. FCB заполняется аналогично функции
    OFh. Если файл существует в момент вызова, его элемент оглавления
    перекрывается новым файлом, а длина файла сбрасывается в ноль.

    Примечание.
    Handle-ориентированные функции DOS 2.0+ гораздо удобнее в работе.

    DOS, функция 17h
    Переименовать файл через FCB

    AH-17h
    DS:DX — адрес измененного FCB (Таблица Б-2)

    AL=OOh, если функция выполнена успешно
    AL=FFh, если при выполнении функции возникли ошибки

    Описание.
    Переименовывает файл в текущем оглавлении.

    DOS, функция 19h i
    Получить текущий диск DOS

    AL — номер текущего диска (0 — А, 1 — В, и так далее)

    Описание.
    Возвращает номер дисковода текущего диска DOS.

    DOS, функция 1Ah
    Установить адрес DTA

    AH=lAh
    DS:DX — адрес DTA

    Устанавливает адрес DTA. Все FCB-ориентированные операции работа-
    ют с DTA. DOS не позволяет операциям ввода/вывода пересекать гра-
    ницу сегмента. Функции поиска llh, 12h, 4Eh и 4Fh помещают данные
    в DTA. DTA глобальна, поэтому надо проявлять осторожность при на-
    значении ее в рекурсивной процедуре. При запуске программы ее DTA
    устанавливается по смещению 80h относительно PSP.

    DOS, функция 1Bh
    Получить информацию FAT для текущего диска

    DS:BX — адрес байта FAT ID, отражающего тип диска (Таблица Б-3)
    DX — всего кластеров (единиц распределения) на диске
    AL — секторов на кластер
    СХ — байт на сектор

    Таблица Б-3. Значения ID.

    ID Описание
    FFh Floppy, 2 стороны, 8 секторов на дорожку (320Кбайт)
    FEh Floppy, 1 сторона, 8 секторов на дорожку (160Кбайт)
    FDh Floppy, 2 стороны, 9 секторов на дорожку (360Кбайт)
    FCh Floppy, 1 сторона, 9 секторов на дорожку (180Кбайт)
    F9h Floppy, 2 стороны, 15 секторов на дорожку (1,2Мбайт)
    F8h Жесткий диск
    FOh Другой

    Возвращает информацию о размере и типе текущего диска. Размер дис-
    ка (в байтах) равен DX*AL*CX. Свободную память можно найти функ-
    циями 36h или 32h.

    DOS l.x держит FAT в памяти и возвращает DS:BX => FAT.
    DOS 2.0+ может держать в памяти лишь часть всей FAT.

    Примечание.
    Эта функция изменяет содержимое регистра DS.

    DOS, функция 1Ch
    Получить информацию FAT для указанного диска

    АН-1Ch
    DL — номер диска (0 — текущий, 1 — А и так далее)

    DS:BX — адрес байта FAT ID, отражающего тип диска (приведен в опи-
    сании функции IBh)

    DX — всего кластеров (единиц распределения)
    AL — секторов на кластер
    СХ — байт на сектор

    Аналогична функции IBh с той разницей, что регистр DL указывает

    диск, для которого нужно получить информацию.

    DOS, функция 21h ^
    Считать произвольную запись файла

    AH-21h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    AL=OOh, если чтение было успешным и DTA заполнена данными
    AL°01h, если достигнут конец файла (EOF) и чтения не было
    AL=02h, если произошел выход за сегмент (чтения нет)
    AL°03h, если встречен EOF и усеченная запись дополнена нулями

    Данная функция читает из файла с текущей позиции как с указанной

    в полях FCB «Запись с текущей позиции» и «Номер записи при непо-
    средственном доступе к файлу».

    DOS, функция 22h
    Писать произвольную запись файла

    AH=22h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    AL=OOh, если запись была успешной

    AL=01h, при переполнении диска

    AL=02h, если DTA+FCB выходит за сегмент (нет записи)

    Данная функция записывает в файл с текущей позиции как с указанной
    в полях FCB «Запись с текущей позиции» и «Номер записи при непо-
    средственном доступе к файлу».

    DOS, функция 23п
    Получить размер файла через FCB

    АН^ЗЬ
    DS:DX — адрес неоткрытого FCB (Таблица Б-2)

    AL=OOh, если функция выполнена успешно
    AL=FFh, если при выполнении функции возникли ошибки

    Проще определить размер файла при помощи функции 3Dh с последу-
    ющим выполнением 42h (при AL=2).

    DOS, функция 24h
    Установить адрес произвольной записи в файле

    AH°24h
    DS:DX — адрес открытого FCB (Таблица Б-2)

    Устанавливает поле «Номер записи при непосредственном доступе
    к файлу» в FCB на файловый адрес, соответствующий значениям полей
    «Текущий блок» и «Запись с текущей позиции».

    DOS, функция 25h
    Установить вектор прерывания

    AL — номер прерывания

    DS:DX — вектор прерывания — адрес программы обработки прерывания

    Устанавливает значение элемента таблицы векторов прерываний для
    прерывания с номером AL, равным DS:DX. Это равносильно записи
    4-байтового адреса в 0000:(AL*4), но, в отличие от прямой записи, DOS
    знает, что происходит, и гарантирует, что в момент записи прерывания
    будут заблокированы.

    Примечание.
    Восстановить DS (если необходимо) после этого вызова.

    DOS, функция 26h
    Создать новый PSP

    DX — адрес сегмента (параграфа) для нового PSP

    CS — сегмент PSP, используемый как шаблон для нового PSP

    Устанавливает PSP для порождаемого процесса по адресу DX:0000.
    Текущий PSP (lOOh байт, начиная с CS:0) копируется в DX:OOOOh, поле
    МетТор соответственно корректируется, векторы Terminate, Ctrl-Break
    и Critical Error копируются в PSP из векторов прерываний INT 22h,
    INT 23h и INT 24h. После этого можно загрузить программу с диска
    и передать ей управление посредством FAR JMP.

    Если перехватывается INT 21h, нужно позаботиться о помещении в стек

    корректного CS:IP. Еще лучше использовать функцию 4Ch.

    Таблица Б-4. Формат PSP.

    Смещ. Размер Описание
    +00h 2 байта Инструкция INT 20h
    +02h слово Сегмент первого байта памяти, выделенной программе
    +04h байт Неиспользуемый заполнитель
    +05h байт СР/М системный вызов
    +06h слово Первый сегмент для СОМ-файла
    +08h 2 байта Запоминаются FARJMP 05h
    +OAh двойное слово Хранит INT 22h (адрес завершения)
    +OEh двойное слово Хранит INT 23h (адрес обработчика Ctrl-Break)
    +12h двойное слово Хранит INT 24h (адрес обработчика критической
    ошибки)
    +16h слово Сегмент родительского PSP
    +18h 20 байт Рабочая таблица файлов. Один байт на файл (FFh —
    закрыт)
    +2Ch слово Сегмент среды окружения для процесса
    +2Eh двойное слово SS:SP на входе при последнем вызове
    прерывания INT 21 h
    +32h слово Количество входов в рабочей таблице файлов
    (по умолчанию 20)
    +34h двойное слово Указатель на рабочую таблицу файлов
    (по умолчанию PSP:0018h)
    +38h двойное слово Указатель на предыдущий PSP
    +3Ch 4 байта Зарезервировано
    +40h 2 байта Версия при возврате на INT 2 lh (AH=30h)
    +42h 26 байт Зарезервировано (используется MS Windows и
    версиями DOS выше 6.00)
    +5Ch 16 байт Первый FCB по умолчанию ‘
    +6Ch 16 байт Второй FCB по умолчанию
    +7Ch 4 байта Не используются
    -i-ent, 1 Ой Й-.Д.Т.

    DOS, функция 27h
    Читать произвольный блок файла

    DS:DX — адрес открытого FCB (Таблица Б-2)

    СХ — число считываемых записей

    AL=OOh, если чтение успешно и DTA заполнена данными
    AL=01h если достигнут конец файла (EOF) и данные не считаны
    AL=02h, если при чтении произошел выход за границу сегмента
    AL=03h, если EOF и считана усеченная порция (дополнена нулями)
    СХ — действительное число считанных записей

    Читает несколько записей из файла, начиная с файлового адреса, ука-
    занного полем «Номер записи при непосредственном доступе к файлу»
    в FCB. Помещает данные в память, начиная с адреса DTA. Соответству-
    ющие поля FCB корректируются, чтобы указывать на следующую за-
    пись (первую за прочитанными).

    DOS, функция 28h
    Писать произвольный блок файла

    DS:DX — адрес открытого FCB (Таблица Б-2)
    СХ — число записываемых блоков (если СХ равен нулю, то размер фай-
    ла усекается до указанного в поле FCB «Номер записи при непосред-
    стванном доступе к файлу»)

    AL=OOh, если запись успешна «1!
    AL=01h, при переполнении диска

    AL=02h, если при записи произошел выход за границу сегмента
    СХ — действительное число сделанных записей ‘

    Записывает несколько блоков в файл, начиная с файлового адреса, ука-
    занного полем «Номер записи при непосредственном доступе к файлу»
    в FCB. Читает данные из памяти, начиная с адреса DTA. Соответству-
    ющие поля FCB корректируются, чтобы указывать на следующую за-
    пись (первую за прочитанными).

    DOS, функция 29h
    Разобрать имя файла

    DS:SI — адрес исходной текстовой строки для разбора

    ES:DI — адрес буфера для результирующего неоткрытого FCB

    AL — битовые флаги, указывающие опции разбора (Таблица Б-5).

    AL=OOh, если результирующий FCB не содержит обобщенных символов
    AL=01h, если результирующий FCB содержит обобщенные символы
    AL°FFh, если неверно обозначение диска в имени файла
    DS:SI — изменен — указывает на символ сразу вслед за именем файла
    ES:DI — не изменен — указывает на неоткрытый FCB

    Создает неоткрытый FCB из строки текста или параметра команды.
    Текст, начиная с DS:SI, анализируется как имя файла в формате
    D.-FILENAME.EXT, и буфер по адресу ES:DI заполняется как соответ-
    ственно форматированный FCB.

    Таблица Б-5. Битовые флаги.

    Бит Описание
    Пропустить разделители
    1 Использовать присутствующий номер диска, если диск не указан,
    вместо того, чтобы устанавливать это поле в ноль ;
    2 Использовать в FCB имя присутствующего файла, если базовое имя
    не указано, вместо того, чтобы заполнять это поле стандартным •
    заполнителем ,
    3 Использовать в FCB расширение присутствующего файла, если
    расширение не указано, вместо того, чтобы заполнять это поле
    стандартным заполнителем
    4 Зарезервировано

    DOS, функция 2Ah
    Получить системную дату

    AL — день недели (0 — воскресенье, 1 — понедельник, . 6 — суббота),
    DOS 3.0+

    СХ — год (от 1980 до 2099)
    DH — месяц (1 до 12)
    DL — день (1 до 31)

    Описание.
    Возвращает текущую дату, которая известна системе.

    DOS 2.x не гарантирует возврата в AL значения дня.
    DOS 1.0+ возвращает правильный день недели.
    Версии до 2.1 имеют проблемы с переходом через дату.

    DOS, функция 2Bh
    Установить системную дату

    СХ — год (от 1980 до 2099)
    DH — месяц (от 1 до 12)
    DL — день (от 1 до 31)

    AL=OOh, если дата корректна ,
    AL=FFh, если дата некорректна и не изменена

    Описание. ,
    Устанавливает системную дату DOS.

    DOS, функция 2Ch
    Получить время DOS

    СН — часы (от 0 до 23)
    CL — минуты (от 0 до 59)
    DH — секунды (от 0 до 59)
    DL — сотые доли секунды (от 0 до 99)

    Описание.
    Возвращает текущее время, которое известно системе.

    Поскольку системные часы имеют частоту 18.2 Гц (интервал 55мс),

    DL имеет точность примерно 0.04 сек.

    DOS, функция 2Dh
    Установить время DOS

    СН — часы (от 0 до 23)

    CL — минуты (от 0 до 59)

    DH — секунды (от 0 до 59)

    DL — сотые доли секунды (от 0 до 99)

    AL=OOh, если время корректно
    AL^FFh, если время некорректно и не изменено


    Описание.
    Устанавливает системное время DOS.

    DOS, функция 2Eh
    Установить/сбросить переключатель верификации

    AL=OOh — отключить верификацию

    AL=01h — включить верификацию

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

    DOS, функция 2Fh
    Получить адрес текущей DTA

    ES:BX — адрес начала текущей DTA

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

    Примечание.
    Эта функция изменяет сегментный регистр ES.

    Версии: DOS 2.00 и выше

    DOS, функция ЗОИ
    Получить номер версии DOS

    AL — старший номер версии
    АН — младший номер версии

    BL:CX — 24-битный серийный номер (большинство версий не поддер-
    живают этот параметр)

    Возвращает в АХ значение текущего номера версии DOS. Например,
    для DOS 3.20 в AL возвращается 03h, в АН — 14h.

    Если в AL возвращается OOh, можно предполагать, что работает DOS

    более ранней версии, чем DOS 2.0.

    Версии: DOS 2.00 и выше.

    DOS, функция 31h
    Завершиться и остаться резидентным

    DX — объем памяти, оставляемой резидентной (в параграфах)

    Выходит в родительский процесс, сохраняя код выхода в AL. Код выхо-
    да можно получить через функцию 4Dh. DOS устанавливает начальное
    распределение памяти, как специфицировано в DX, и возвращает управ-
    ление родительскому процессу, оставляя указанную память резидентной
    (число байт равно DX*16). Эта функция перекрывает функцию
    INT 27h, которая не возвращает код выхода и не способна установить
    резидентную программу, размер которой превышает 64Кбайт.

    Версии: DOS 2.00 и выше.

    DOS, функция 32h
    Получить информацию DOS о диске

    (Официально не документирована)

    AH=32h
    DL — номер диска (0 — текущий, 1 — А и так далее)

    AL=OOh, если в DL был задан корректный диск

    DS:BX — адрес блока информации о диске для запрошенного уст-
    ройства (Таблица Б-6)

    AL=FFh, если в DL был задан некорректный диск

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

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

    трудным определение, например, размера корневого оглавления, числа
    таблиц FAT и прочего. Блок информации диска содержит такие данные
    в хорошо форматированной структуре.

    Версии: DOS 2.00 и выше.

    Таблица Б-6. Формат блока информации о диске.

    Смещ. Размер Описание
    +00h байт Номер диска (0 — текущий, 1 — А и так далее)
    +01h байт Количество блоков в драйвере диска
    +02h слово Количество байт в секторе
    +04h байт Наибольший номер сектора в кластере
    +05h байт Счетчик сдвига для конвертации кластера в сектор
    +06h слово Количество зарезервированных секторов в начале диска
    +08h байт Количество FAT
    +09h слово Количество входов в root-директорию
    +OBh слово Номер первого сектора, содержащего данные
    +ODh слово Максимальный номер кластера
    +OFh байт Количество секторов в FAT
    +10h слово Номер первого сектора директории
    +12h двойное слово Адрес заголовка драйвера устройства
    +16h байт ID (отражает тип диска)
    +17h байт OOh, если диск доступен и FFh, если нет
    +18h двойное слово Указатель на следующий блок информации о диске
    Для версий DOS 2.XX
    +lCh слово Кластер, содержащий старт текущей директории.
    OOOOh — root, FFFFh — не известно
    +lEh 64 байта Путь текущей директории для диска в формате ASCIZ
    Для версий DOS 3.XX
    +lCh слово Кластер, с которого начинается поиск свободного места
    при записи некоторого количества секторов на диск
    +lEh слово Количество свободных секторов на диске.
    FFFFh — не известно

    Таблица Б-6. Формат блока информации о диске. <Окончание)

    Смещ. Размер Описание
    Для версий DOS 4.XX — 6.ХХ
    +OFh слово Количество секторов в FAT
    +llh слово Номер первого сектора директории
    +13h двойное слово Адрес заголовка драйвера устройства
    +17h байт ID (отражает тип диска)
    +18h байт OOh, если диск доступен, и FFh, если нет
    +19h двойное слово Указатель на следующий блок информации о диске
    +lDh слово Кластер, с которого начинается поиск свободного кластера
    при записи некоторого количества секторов на диск
    +lFh слово Количество свободных секторов на диске.
    FFFFh — не известно

    DOS, функция 33h
    Установить/опросить статус Ctrl-Break

    AL=OOh — опросить текущий статус контроля Ctrl-Break
    AL=01h — установить статус контроля Ctrl-Break
    DL — требуемый статус (0 — выключен, 1 — включен)

    DL — текущий статус (0 — выключен, 1 — включен)

    Если AL=OOh, в DL возвращается текущий статус контроля Ctrl-Break.

    Если AL=01h, в DL возвращается новый текущий статус.

    Когда статус «включен», DOS при выполнении большинства функций
    (исключая 06h и 07h) проверяет, нажаты ли клавиши Ctrl-Break. Если
    это обнаружено, выполняется прерывание INT 23h (если оно не пере-
    хватывается, то процесс снимается).

    При статусе «выключен» DOS проверяет на нажатие Ctrl-Break лишь
    при выполнении операций стандартного ввода/вывода, стандартной пе-
    чати и стандартного AUX.

    Версии: DOS 2.00 и выше.

    DOS, функция 34h
    Получить адрес флага активности DOS

    (Официально не документирована)

    ES:BX — адрес флага активности DOS

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

    Если ES:[BX] не нулевой, фоновая программа (TSR либо popup)
    не должна использовать никаких функций DOS.

    Версии: DOS 2.00 и выше.

    DOS, функция 35h
    Получить вектор прерывания

    AH-35h
    AL — номер прерывания (OOh до FFh)

    ES:BX — адрес обработчика прерывания

    Возвращает значение вектора прерывания для INT (AL), то есть загру-
    жает в ВХ 0000:[AL*4], а в ES — 0000:[(AL*4)+2].

    Примечание.
    Эта функция изменяет сегментный регистр ES.

    Версии: DOS 2.00 и выше.

    DOS, функция 36h
    Получить свободную память диска

    АН-ЗбЬ
    DL — номер диска (0 — текущий, 1 — А и так далее)

    AX=FFFFh, если AL содержал неверный номер диска
    Если функция выполнена успешно:

    AX — число секторов на кластер
    ВХ — число доступных кластеров
    СХ — байт на сектор
    DX — всего кластеров на диске

    Возвращает данные, полезные для подсчета общей и доступной диско-
    вой памяти. Если в АХ возвращено FFFFh, значит задан неверный
    диск. Иначе свободная память (в байтах) составляет (АХ*ВХ*СХ), все-
    го памяти (AX*CX*DX) байт.

    Версии: DOS 2.00 и выше.

    DOS, функция 37h
    Установить/опросить символ-переключатель

    (Официально не документирована)

    AL=OOh — опросить текущий переключатель
    AL=01h — установить символ-переключатель
    DL — символ-переключатель

    AL=OOh, если функция выполнена успешно

    DL — текущий символ-переключатель DOS (если при вызове AL=OOh)
    AL=FFh, если использована неподдерживаемая подфункция

    Устанавливает или опрашивает «Глобальный переключатель» DOS. Пе-
    реключатель (SWITCHAR) — это символ, используемый в командной
    строке как признак опции. По умолчанию принимается «/» (например,
    DIR /w/p), но его можно изменить на «-» (DIR -w-p), если нужно, что-
    бы система была больше похожа на UNIX. Общепринято опрашивать
    значение SWITCHAR перед разбором области неформатированных па-
    раметров в PSP для выделения опций команды.

    Эта недокументированная команда может измениться в будущих верси-
    ях DOS. He рекомендуется изменять SWITCHAR.

    Версии: DOS 2.00 и выше.

    DOS, функция 38h
    Получить/установить информацию о стране

    AH-SSh
    Получить информацию:

    AL=OOh — получить данные для текущей страны

    DS:DX — адрес локального буфера для чтения блока данных страны

    (Таблица Б-7)
    Установить информацию:

    AL=01h-FEh — установить данные для указанной страны

    AL=FFh — установить данные для кода страны > 255

    ВХ — 16-битный код страны (Таблица Б-8)

    CF=0, если функция выполнена успешно

    ВХ — код страны
    CF=1, если при выполнении функции возникли ошибки

    Если DX=FFFFh, то текущий код страны устанавливается равным AL
    (если AL=FFh, то код страны устанавливается равным ВХ). Обычно код
    страны устанавливается в файле CONFIG.SYS. Если DX

    Версии: DOS 2.00 и выше.

    DOS, функция 39h
    Создать новое оглавление

    АН-ЗЭЬ
    DS:DX — адрес строки ASCIZ с именем оглавления

    Таблица 6-7. Формат блока данных страны.

    Смещ. Размер Описание
    +00h слово Формат даты:
    OOh — USA (месяц дата год)
    Olh — Европа (дата месяц год)
    02h — Япония (год месяц дата)
    +02h 5 байт Текущая строка символов в формате ASCIZ
    +07h 2 байта Разделитель тысяч в формате ASCIZ
    +09h 2 байта Разделитель целой и дробной части в формате ASCIZ
    +OBh 2 байта Разделитель даты в формате ASCIZ
    +ODh 2 байта Разделитель времени в формате ASCIZ
    +OFh байт Текущий формат:
    Бит 2 — текущий символ заменяется десятичной точкой
    Бит 1 — количество пробелов между значением и текущим
    символом
    Бит 0=0 — текущий символ предшествует значению
    Бит 0-=1 — текущий символ следует за значением
    +10h байт Количество символов в дробной части числа
    +llh байт Формат времени:
    Бит 0

    0 — 12-часовые часы

    Бит 0=1 — 24-часовые часы
    +12h двойное слово Адрес карты (CALL FAR при AL=кoд символа больше 80h)
    +16h 2 байта Список разделителей в формате ASCIZ
    +18h 10 байт Зарезервировано

    CF=0, если функция выполнена успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

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

    Таблица Б-8. Коды некоторых стран.

    Код Страна
    OOlh Соединенные Штаты Америки
    003h Латинская Америка
    007h Россия
    OlFh Нидерланды
    020h Бельгия
    021h Франция
    022h Испания
    027h Италия
    02Ch Великобритания
    031h Германия

    с существующим деревом. Если флаг CF установлен при возврате,
    то АХ содержит код ошибки, и оглавление не создается.

    Версии: DOS 2.00 и выше.

    DOS, функция 3Ah
    Удалить оглавление

    АН-ЗАЬ
    DS:DX — адрес строки ASCIZ с именем оглавления

    CF=0, если функция выполнена успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    Если диск и/или корневой путь не указаны, принимаются значения по
    умолчанию. Поддиректория удаляется из структуры оглавлений. Если
    флаг CF установлен при возврате, то АХ содержит код ошибки, и оглав-
    ление не удаляется.

    Оглавление не должно содержать файлов и поддиректорий, оно не должно
    попадать под влияние возможных ограничений DOS (например, не долж-
    но быть задействовано в активных командах JOIN или SUBST).

    Версии: DOS 2.00 и выше.

    DOS, функция 3Bh
    Установить текущую директорию

    АН-ЗВЬ
    DS:DX — адрес строки ASCIZ с именем оглавления

    CF=0, если функция выполнена успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    Если диск и/или корневой путь не указаны, принимаются значения по
    умолчанию. Указанная поддиректория становится текущим оглавлени-
    ем DOS для этого (или текущего) диска. Если флаг CF установлен при
    возврате, то АХ содержит код ошибки, и текущее оглавление для выб-
    ранного диска не изменяется.

    Версии: DOS 2.00 и выше.

    DOS, функция 3Ch
    Создать файл через описатель

    DS:DX — адрес строки ASCIZ с именем файла

    СХ — атрибут файла (атрибуты приведены в описании функции

    CF=0, если функция выполнена успешно

    АХ — описатель файла
    CF=1, если при выполнении функции возникли ошибки

    Описание.
    Если диск и/или путь не указаны, принимаются значения по умолчанию.

    Версии: DOS 2.00 и выше.

    DOS, функция 3Dh
    Открыть описатель файла

    DS:DX — адрес строки ASCIZ с именем файла

    AL — режим открытия:

    AL=OOh, чтобы открыть для чтения
    AL=01h, чтобы открыть для записи
    AL=02h, чтобы открыть для чтения и записи

    CF=0, если функция выполнена успешно

    AX — описатель файла
    CF=1, если при выполнении функции возникли ошибки

    Файл открывается в выбранном режиме доступа (режиме открытия).
    Если диск и/или путь не указаны, принимаются указанные по умолча-
    нию. Файл должен существовать. Указатель чтения/записи устанавли-
    вается в ноль.

    Версии: DOS 2.00 и выше.

    DOS, функция 3Eh
    Закрыть описатель файла

    АН-ЗЕЬ
    ВХ — описатель файла

    CF=0, если функция выполнилась успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    ВХ содержит описатель файла (handle), возвращенный при открытии.
    Файл, представленный этим описателем, закрывается, его буферы сбра-
    сываются и оглавление обновляется корректными размером, временем
    и датой. Из-за недостатка описателей файлов (максимум 20, по умолча-
    нию установлено 8), возможно, придется закрыть часть текущих описа-
    телей, как, например, описатель 3 (стандартный AUX).

    Версии: DOS 2.00 и выше.

    DOS, функция 3Fh
    Читать файл через описатель

    ВХ — описатель файла

    DS:DX — адрес буфера для чтения данных

    СХ — число считываемых байт

    CF=0, если функция выполнена успешно

    AX — число действительно прочитанных байт
    CF=1, если при выполнении функции возникли ошибки

    СХ байт данных считываются из файла или устройства с описателем,
    указанным в ВХ. Данные читаются с текущей позиции указателя чте-
    ния/записи файла и помещаются в буфер вызывающей программы, ад-
    ресуемый через DS:DX. Если необходимо установить позицию чтения/
    записи, можно использовать функцию 42h. Эта функция обновляет ука-
    затель чтения/записи файла, чтобы подготовиться к последующим опе-
    рациям чтения или записи.

    Версии: DOS 2.00 и выше.

    DOS, функция 40h
    Писать в файл через описатель

    ВХ — описатель файла

    DS:DX — адрес буфера, содержащего записываемые данные

    СХ — число записываемых байт

    CF=0, если функция выполнена успешно

    AX — число действительно записанных байт
    CF°1, если при выполнении функции возникли ошибки

    СХ байт данных записываются в файл или на устройство с описателем,
    заданным в ВХ. Данные берутся из буфера, адресуемого через DS:DX,
    и записываются, начиная с текущей позиции указателя чтения/записи
    файла. Чтобы установить указатель файла, если необходимо, можно ис-
    пользовать функцию 42h. Обновляет указатель чтения/записи файла,
    чтобы подготовиться к последующим операциям чтения или записи.

    Версии: DOS 2.00 и выше.

    DOS, функция 41h
    Удалить файл

    AH^lh
    DS:DX — адрес строки ASCIZ с именем файла


    CF=0, если функция выполнена успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    Файл удаляется из оглавления заданного диска. Если диск и/или путь
    не указаны, принимаются значения по умолчанию. Имя файла не может
    содержать обобщенные символы («?» и «*»). Если файл имеет атрибут
    «только чтение», то перед удалением необходимо изменить этот атрибут
    через функцию 43h.

    Версии: DOS 2.00 и выше.

    DOS, функция 42h
    Переместить указатель файла

    ВХ — описатель файла ^
    CX:DX на сколько передвинуть указатель: (CX*65536)+DX
    AL=OOh переместить относительно начала файла +CX:DX
    AL=01h переместить относительно текущей позиции +CX:DX
    AL=02h переместить относительно конца файла +CX:DX

    CF=0, если функция выполнена успешно

    DX:AX новая позиция указателя файла (если нет ошибки)
    CF=1, если при выполнении функции возникли ошибки

    Перемещает логический указатель чтения/записи к нужной позиции.

    Очередная операция чтения или записи начнется с этого адреса.

    Вызов с AL=2, CX=0, DX=0 возвращает длину файла в DX:AX.

    Действительная длина файла равна (DX*65536)+AX.

    Версии: DOS 2.00 и выше.

    DOS, функция 43h
    Установить/опросить атрибуты файла

    DS:DX — адрес строки ASCIZ с именем файла

    AL=OOh — извлечь текущий атрибут файла

    AL=01h — установить атрибут файла

    СХ — новый атрибут файла (для подфункции 01Ь)(Таблица Б-9)

    CF=0, если функция выполнена успешно

    СХ — текущий атрибут файла (для подфункции ООЬ)(Таблица Б-9)

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    Таблица Б-9. Атрибуты файла.

    Бит Атрибут
    Только чтение
    1 Скрытый
    2 Системный
    3 Метка тома (может находиться только в корневом каталоге)
    4 Директория
    5 Архивный

    Атрибут файла читается или устанавливается, согласно коду в AL.

    Если диск и/или путь не указаны, принимаются значения по умолчанию.

    Чтобы скрыть оглавление, нужно использовать CX=02h (а не 12h, как

    можно было ожидать).

    Версии: DOS 2.00 и выше.

    DOS, функция 44h
    Управление устройством ввода/вывода

    AH=44h
    AL — код подфункции:

    AL=OOh — получить информацию об устройстве
    AL=01h — установить информацию об устройстве
    AL=02h — читать с символьного устройства
    AL=03h — писать на символьное устройство
    AL=04h — читать с блочного устройства
    AL=05h — писать на блочное устройство
    AL=06h — дать статус ввода
    AL=07h — дать статус вывода
    AL=08h — запрос съемного носителя
    AL=09h — запрос удаленного устройства
    AL=OAh — запрос удаленного описателя
    AL=OBh — счет повторов разделения
    AL=OCh — кодовые страницы 3.3

    AL-ODh — общий IOCTL

    AL=OEh — получить логическое устройство

    AL=OFh — установить логическое устройство

    Версии: DOS 2.00 и выше.

    DOS, функция 45h
    Дублировать описатель файла

    AH-45h
    ВХ — существующий описатель файла

    CF=0, если функция выполнена успешно

    AX — новый описатель файла, дублирующий оригинал
    CF=1, если при выполнении функции возникли ошибки

    Создает дополнительный описатель файла, ссылающийся на тот же по-
    ток ввода/вывода, что и существующий описатель. Любое продвижение
    указателя чтения/записи одного описателя (включая любые операции
    чтения, записи или перемещения указателя посредством функции 42h)
    действует на его дубликат.

    Версии: DOS 2.00 и выше.

    DOS, функция 46h
    Переназначить описатель

    ВХ — целевой описатель файла (должен уже существовать)

    СХ — исходный описатель файла (должен уже существовать)

    CF=0, если функция выполнена успешно
    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

    Заставляет описатель файла (handle) ссылаться на другой файл или ус-
    тройство. Если описатель в СХ (источник) открыт, он закрывается,

    а затем становится дубликатом описателя в ВХ (назначения). Иными
    словами, описатели в СХ и ВХ будут ссылаться на один и тот же физи-
    ческий файл или устройство.

    Версии: DOS 2.00 и выше.

    DOS, функция 47h
    Получить текущее оглавление DOS

    DS:SI — адрес локального буфера для результирующего пути — 64 байта

    DL — номер диска (0 — текущий, 1 — А и так далее)

    CF=0, если функция выполнена успешно

    АХ не сохранен
    CF=1, если при выполнении функции возникли ошибки

    В буфер по адресу DS:SI помещается в форме ASCIZ путь текущего ог-
    лавления для диска, указанного в DL. Путь возвращается в формате:

    «путь\оглавление»,0. Впереди не подставляется буква диска, а сзади не
    подставляется символ «\». Например, если текущим является корневое
    оглавление, эта функция вернет пустую строку (DS:[SI]=0).

    Версии: DOS 2.00 и выше.

    DOS, функция 48h
    Выделить память

    AH^Sh
    ВХ — запрошенное количество памяти в 16-байтных параграфах

    CF=0, если функция выполнена успешно

    АХ — сегментный адрес распределенного блока
    CF»!, если при выполнении функции возникли ошибки

    ВХ — размер максимального доступного блока памяти (в параграфах)

    Распределяет блок памяти длиной ВХ параграфов, возвращая сегмент-
    ный адрес этого блока в АХ (блок начинается с АХЮООО). Если распре-
    деление неудачно, устанавливается флаг CF, в АХ возвращается код
    ошибки, а ВХ содержит максимальный размер доступной для распреде-
    ления памяти (в параграфах). Чтобы определить наибольший доступ-
    ный блок, общепринято устанавливать BX=FFFFh перед вызовом.
    Распределение завершится с ошибкой, возвратив размер максимально-
    го блока памяти в ВХ.

    Версии: DOS 2.00 и выше.

    DOS, функция 49h
    Освободить блок памяти

    AH=49h
    ES — сегментный адрес освобождаемого блока памяти

    CF=0, если функция выполнена успешно
    CF=1, если при выполнении функции возникли ошибки
    АХ — код ошибки

    Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок
    становится доступным для других запросов системы. Вообще говоря,
    нужно освобождать лишь те блоки памяти, которые получены через
    функцию 48h (распределить память). Родитель отвечает за освобожде-
    ние памяти порожденных процессов. Тем не менее, ничто не препят-
    ствует освобождать память чужих процессов.

    Версии: DOS 2.00 и выше.

    DOS, функция 4Ah
    Изменить размер блока памяти

    ES — сегмент распределенного блока памяти

    ВХ — нужный размер блока в 16-байтных параграфах

    CF=0, если функция выполнена успешно

    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки
    ВХ — размер максимального доступного блока памяти (в параграфах)

    Изменяет размер существующего блока памяти. Когда программа полу-
    чает управление, функция 4Bh уже распределила блок памяти, начиная
    с PSP, который содержит всю доступную память. Чтобы освободить па-
    мять для запуска порождаемых процессов, блок памяти, начинающийся
    с PSP, необходимо сначала сжать.

    Примечание.
    Функция 31h и INT 27h (TSR) сжимают блок по адресу PSP.

    Версии: DOS 2.00 и выше.

    DOS, функция 4Bh
    Выполнить или загрузить программу

    DS:DX — адрес строки ASCIZ с именем файла, содержащего программу

    ES:BX — адрес ЕРВ (блока параметров ЕХЕС)

    AL=°OOh — загрузить и выполнить

    AL=01h — загрузить, но не выполнять

    AL=03h — загрузить программный оверлей

    CF=0, если функция выполнена успешно

    ВХ, DX не сохранены
    СЕ=1, если при выполнении функции возникли ошибки

    Данная функция загружает в память и запускает программу, имя кото-
    рой указано в регистрах DS:DX. Запущенная программа после заверше-
    ния работы возвратит управление запускаемой. Если диск или путь
    не указаны, принимаются значения по умолчанию. ES:BX указывает
    на блок памяти, подготовленный как ЕРВ, формат которого зависит
    от запрошенной подфункции в AL.

    Версии: DOS 2.00 и выше.

    DOS, функция 4Ch
    Завершить программу

    AH=4Ch
    AL — код выхода

    Возвращает управление от порожденного процесса его родителю, уста-
    навливая код выхода (его можно опросить функцией 4Dh). Управление
    передается по адресу завершения в PSP завершающейся программы.
    Векторы Ctrl-Break и Critical Error восстанавливаются к старым адре-
    сам, сохраненным в родительском PSP.

    Значение ERRORLEVEL (используемое в пакетных файлах DOS)
    можно использовать для проверки кода выхода самой последней про-
    граммы.

    Версии: DOS 2.00 и выше.

    DOS, функция 4Dh
    Получить код выхода программы

    АН — код выхода последнего завершившегося процесса

    AH=OOh — нормальное завершение

    AH=01h — завершение через Ctrl-Break INT 23h

    AH=02h — завершение по критической ошибке устройства INT 24h

    AH=03h — завершение через функцию 31h

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

    Версии: DOS 2.00 и выше.

    DOS, функция 4Eh
    Найти первый совпадающий файл

    DS:DX — адрес строки ASCIZ с именем файла (допускается использо-
    вать символы «?» и «*»)
    СХ — атрибут файла для сравнения

    CF^^O, если функция выполнена успешно

    DTA заполнена данными (Таблица Б-10)
    CF=1, если при выполнении функции возникли ошибки

    Если диск и/или путь не указаны, принимаются значения по умолча-
    нию. Обобщенные символы «*» и «?» допускается использовать в име-
    ни файла и расширении.

    Версии: DOS 2.00 и выше.

    DOS, функция 4Fh
    Найти следующий совпадающий файл

    DS:DX — адрес данных, возвращенных предыдущей 4Eh (Найти пер-
    вый файл)

    CF=0, если функция выполнена успешно

    DTA заполнена данными
    CF°1, если при выполнении функции возникли ошибки

    Эту функцию можно использовать после вызова 4Eh. Следующее имя фай-
    ла, совпадающее по обобщенному имени и атрибуту файла, копируется
    в буфер по адресу DS:DX вместе с другой информацией (Таблица Б-10).

    Примечание.
    Параметр DS:DX добавлен в DOS 3.0.

    Версии: DOS 2.00 и выше.

    DOS, функция 52h
    Получить адрес векторной таблицы связи

    (Официально не документирована)

    ES:BX — адрес векторной таблицы связи (Таблица Б-11)

    Описание.
    Данная функция возвращает адрес векторной таблицы связи.

    Версии: DOS 2.00 и выше.

    Таблица Б-]]. Формат векторной таблицы связи.

    Смещ. Размер Описание
    -18h слово Содержимое СХ при вызове INT 21h при AX=5E01h
    -16h слово Счетчик для кэшируемых FCB
    -14h слово Счетчик для открытых FCB
    -12h двойное слово Адрес обработчика OEM-функций (FFFFh:FFFFh,
    если обработчик не установлен)
    -OEh слово Смещение в кодовом сегменте DOS кода
    возврата из прерывания INT 21h
    -ОСЬ слово Счетчик повторов
    -OAh слово Задержка повтора
    -08h двойное слово Указатель на буфер текущего диска
    -04h слово Сегмент данных DOS
    -02h слово Сегмент первого МСВ
    +00h двойное слово Указатель на первый блок параметров диска
    +04h двойное слово Указатель на первую системную файловую таблицу
    +08h двойное слово Указатель на заголовок активного драйвера часов
    +OCh двойное слово Указатель на заголовок активного драйвера консоли

    DOS, функция 54h
    Получить переключатель верификации DOS

    AL=OOh, если верификация выключена (OFF)
    AL=01h, если верификация включена (ON)

    Возвращает текущий статус верификации записи DOS. Если в AL воз-
    вращается 1, то DOS считывает обратно каждый сектор, записываемый
    на диск, чтобы проверить правильность записи. Функция DOS 2Eh по-
    зволяет установить/изменить режим верификации.

    Версии: DOS 2.00 и выше.

    DOS, функция 56h
    Переименовать/переместить файл

    DS:DX — адрес старого ASCIZ имени (путь/имя существующего файла)

    ES.-DI — адрес нового ASCIZ имени (новые путь/имя)

    CF^O, если функция выполнена успешно
    CF^l, если при выполнении функции возникли ошибки
    AX — код ошибки

    Старое имя DS:DX должно существовать и не может содержать обоб-
    щенных символов. Диск и путь необязательны (если они не указаны,
    принимаются значения по умолчанию). Новое имя ES:DI должно опи-
    сывать несуществующий файл. Если указан диск, он должен быть тем
    же, что и в старом имени. Если диск или путь не указаны, принимают-
    ся текущие. Если старое и новое имя содержат разные пути (явные или
    принятые по умолчанию), то элемент оглавления для файла перемеща-
    ется в оглавление, указанное в новом имени.

    Версии: DOS 2.00 и выше.

    DOS, функция 57h
    Установить/опросить дату/время файла

    AL=OOh — получить дату/время файла

    AL=01h — установить дату/время файла

    ВХ — описатель файла (handle)

    СХ (если AL=1) — новая отметка времени в формате время файла

    DX (если AL=1) — новая отметка даты в формате дата файла

    CF=0, если функция выполнена успешно

    СХ — (если при вызове AL=0) отметка времени файла в формате
    время/дата файла (Таблица Б-12)

    DX — (если при вызове AL=0) отметка даты файла в формате вре-
    мя/дата файла (Таблица Б-13)

    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

    ВХ должен содержать описатель открытого файла (см. 3Ch или 3Dh).
    DX и СХ задаются в формате памяти (например, младшие 8 бит даты
    находятся в DH).

    Версии: DOS 2.00 и выше.

    DOS, функция 59h
    Получить расширенную информацию об ошибке

    AH°59h
    BX-OOOOh (номер версии: ООООЬ для DOS 3.0, 3.1 и 3.2)

    Таблица Б-12. Формат времени файла. Таблица Б-13. Формат даты файла.

    Биты Описание
    15-11 Часы
    10-5 Минуты
    4-0 Секунды/2
    Биты Описание
    15-9 Год-1980
    8-5 Месяц
    4-0 Дата

    AX — расширенный код ошибки (0, если ошибки не было)

    ВН — класс ошибки

    BL — предлагаемое действие

    СН — сфера (где произошла ошибка)

    Эту функцию можно использовать, чтобы уточнить, что предпринять
    после сбоя функции DOS по ошибке (только DOS 3.0+). Ее можно вы-
    зывать: в обработчике критических ошибок INT 24h, после любой фун-
    кции INT 21h, возвратившей флаг переноса после вызова FCB-функ-
    ции, возвратившей AL=FFh.

    Версии: DOS 3.00 и выше.

    DOS, функция 5Ah
    Создать уникальный временный файл

    DS:DX — адрес строки ASCIZ с диском и путем (заканчивается симво-
    лом «\») \
    СХ — атрибут файла

    CF=0, если функция выполнена успешно

    AX — описатель файла

    DS:DX — (не изменяется) полное ASCIZ-имя нового файла
    CF=1, если при выполнении функции возникли ошибки

    Открывает (создает) файл с уникальным именем в каталоге, заданном
    строкой ASCIZ, на которую указывает DS:DX. COMMAND.COM вызы-
    вает эту функцию, когда создает временные «канальные» файлы, ис-
    пользуемые при переназначении ввода-вывода. Описание пути должно
    быть готово к добавлению в его конец имени файла. Необходимо обес-
    печить минимум 12 байт в конце строки. Сама строка должна быть за-
    полнена в одной из форм: «d:\nyrb\»,0 (указан диск и путь), «d>,0 (те-
    кущее оглавление диска) или «d:\»,0 (корневое оглавление диска).

    Версии: DOS 3.00 и выше.

    DOS, функция 5Bh
    Создать новый файл

    DS:DX — адрес строки ASCIZ с именем файла

    СХ — атрибут файла

    CF=0, если функция выполнена успешно

    AX — описатель файла
    CF=1, если при выполнении функции возникли ошибки

    Файл открывается для чтения/записи в совместимом режиме доступа.
    Если диск и/или путь не указаны, принимаются значения по умолча-
    нию. Этот вызов идентичен функции DOS 3Ch с тем исключением, что
    он вернет ошибку, если файл с заданным именем уже существует.

    Версии: DOS 3.00 и выше.

    DOS, функция 5Ch
    Блокировать/разблокировать доступ к файлу

    AL=OOh — заблокировать область файла

    AL=01h — разблокировать ранее заблокированную область

    ВХ — описатель файла

    CX-.DX — смещение ((CX*65536)+DX) от начала файла

    SLDI — длина блокируемой области ((SI*65536)+DI) байт

    CF=0, если функция выполнена успешно
    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

    Блокирует или освобождает доступ к участку файла, указанного в ВХ.

    Область файла с логическим смещением CX:DX и длиной SLDI

    блокируется (захватывается) или разблокируется (освобождается). Сме-
    щение и длина обязательно должны быть указаны. Разделение файлов
    должно быть активизировано (командой SHARE), иначе функция вернет
    код ошибки «Неверный номер функции».

    Версии: DOS 3.00 и выше (при обязательной загрузке SHARE).

    DOS, функция 62h
    Получить адрес PSP

    ВХ — сегментный адрес PSP выполняющейся программы

    Эта функция возвращает в ВХ адрес PSP текущей программы. Исполь-
    зуется, для получения адреса параметров командной строки, адреса ок-
    ружения DOS и другой полезной информации, содержащейся в PSP.

    Версии: DOS 3.00 и выше.

    DOS, функция 65h
    Получить расширенную информацию страны

    AH=65h DOS 3.3
    AL — подфункция:

    AL=01h — дать расширенную информацию страны DOS 3.3
    AL=02h — дать таблицу преобразования строчных букв в прописные
    AL=04h — то же для символов, допустимых в именах файлов
    AL=06h — дать сопоставляющую последовательность
    DX — код страны

    ВХ — кодовая страница (FFFFh — консоль)
    СХ — размер буфера возврата (должен быть минимум 5 байт)
    ES:DI — адрес буфера возврата

    CF=0, если функция выполнена успешно

    ES:DI — адрес возвращенной информации
    CF=1, если при выполнении функции возникли ошибки:

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

    Версии: DOS 3.30 и выше.

    DOS, функция 66h
    Получить/установить глобальную кодовую страницу

    AL=01h — запросить текущую глобальную кодовую страницу

    AL=02h — установить активную кодовую страницу

    ВХ — (при AL=02h) кодовая страница (Таблица Б-14)

    DX — (при AL=02h) системная кодовая страница (устанавливаемая при

    CF=0, если функция выполнена успешно

    ВХ — (если при вызове AL=01h) текущая активная кодовая страница
    DX — (если при вызове AL=01h) системная кодовая страница (уста-
    навливаемая при загрузке)

    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

    Эта функция выбирает новую кодовую страницу или получает значение
    текущей активной кодовой страницы (страниц). Программа DOS
    NLSFUNC должна быть загружена до этого вызова. Функция использу-
    ется в сочетании с 65h или 38h.

    Устанавливая новую активную кодовую страницу, DOS читает данные

    из файла COUNTRY.SYS.

    Версии: DOS 3.30 и выше.

    Таблица Б-14. Значения кодовых страниц.

    Кодовая
    страница
    Страна (язык)
    437 Соединенные Штаты Америки
    850 Многоязыковая
    857 Турция
    860 Португалия
    861 Исландия
    863 Канада (французский)
    865 Норвегия
    866 Россия

    DOS, функция 67h
    Установить число описателей файлов

    AH=67h
    ВХ — максимальное число описателей (до FFFFh)

    CF=0, если функция выполнена успешно
    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

    Эта функция устанавливает максимальное число описателей файлов,
    которые могут быть открыты одновременно. Если значение ВХ меньше
    20, то принимается 20. Если значение ВХ меньше текущего максимума
    (нужно сократить число описателей), и в данный момент открыто более
    чем ВХ файлов, то изменение будет иметь место, когда число открытых
    файлов не будет превышать устанавливаемый максимум. Если ВХ боль-
    ше текущего максимума (нужно увеличить число описателей), то DOS
    должна иметь доступную память, чтобы распределить ее под новые опи-
    сатели. Функция 4Ah позволяет освободить память, чтобы она стала
    доступной DOS.

    Версии: DOS 3.30 и выше.

    DOS, функция 68h
    Завершить файл

    AH=68h
    ВХ — описатель завершаемого файла

    CF=0, если функция выполнена успешно
    CF=1, если при выполнении функции возникли ошибки
    AX — код ошибки

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

    Версии: DOS 3.3 и выше. В версиях DOS от 2.0 до 3.2 можно использо-
    вать функцию DOS 45h, чтобы создать и затем закрыть дубликат.

    Есть ли комбинация клавиш, которая равносильна команде «извлечь диск»?

    Сведения о вопросе

    Создание ярлыка для извлечения CD/DVD.

    Для этого щелкните правой кнопкой мышки по рабочему столу и выберите из меню Создать (New) -> Ярлык (Shortcut).

    В поле расположения объекта укажите полный путь к исполняемому файлуnircmd.exe с добавлениям следующей команды через пробел “cdrom open”, плюс через пробел букву устройства DVD-ROM в системе. В целом эта строка должна иметь следующий вид (диск D: указан в качестве примера):

    “C:\полный_путь_к_этому_файлу\nircmd.exe” cdrom open D:

    Примечание: Путь к файлу взят в кавычки. Это необходимо в том случае, если в названиях папок, которые формируют путь к файлу nircmd.exe есть пробелы. В противном случае создать ссылку на этот файл не получиться и Windosw будет возвращать ошибку, что такой файл не найден.

    Присвойте ярлыку соответствующее имя, типа “Eject CD”, или что то подобное (далее в статье читайте как присвоить этому ярлыку соответствующую иконку).

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

    Создание ярлыка для закрытия CD/DVD привода.

    Для создания такого ярлыка выполните все те действия, которые описаны выше. За исключения команды: вместо “cdrom open” вставте “cdrom close”. Так что ваша строка будет, к примеру, иметь следующий вид:

    “C:\полный_путь_к_этому_файлу\nircmd.exe” cdrom close D:

    Назначение горячих клавиш ярлыкам.

    Теперь когда у нас есть ярлыки, ми сможем назначить им горячие клавиши, для запуска нужных нам действий с клавиатуры, что упростит использование этих функций. Для этого выполните правый клик на иконке ярлыка и из меню выберите пункт Свойства (Properties). На вкладке Ярлык (Shortcut) вы увидите ячейку для присвоения горячей клавиши под названием Быстрый вызов (Shortcut key):

    Щелкните по этой ячейке и, набрав комбинацию клавиш на клавиатуре, вы увидите их отображение в поле Быстрый вызов. Нажмите клавишу применить и, если необходимо, перезапустите систему.

    Илон Маск рекомендует:  Событие onmouseout в HTML
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL