Dos fn 17h переименовать файл через fcb


Содержание

RENAME (REN) – переименовать файл или каталог в командной строке Windows.

Команда RENAME имеет синоним REN и предназначена для переименования файлов и каталогов.

Формат командной строки:

RENAME [диск:][путь]имя_файла1 имя_файла2

REN [диск:][путь]имя_файла1 имя_файла2

Параметры командной строки:

диск: — диск на котором находится исходный файл или каталог;

путь — путь к исходному файлу или каталогу;

имя_файла1 — исходное имя файла или каталога;

имя_файла2 — новое имя файла или каталога;

Примеры использования команды REN ( RENAME )

rename file1.txt file2.txt — переименовать файл file1.txt , находящийся в текущем каталоге, присвоив ему имя file2.txt

ren «My Programms» «Мои программы» — переименовать папку текущего каталога My Programms в Мои программы . Имена и пути, содержащие пробелы, должны заключаться в двойные кавычки. Символы русского языка должны быть представлены в DOS-кодировке.

ren «C:\My files\*.*» *.saved — переименовать все файлы, находящиеся в папке C:\My Files изменив только их расширение на .saved .

rename «C:\My files\My Folder» «My New Folder» — переименовать папку C:\My files\My Folder» в My New Folder .

rename «C:\My files\My Folder\data1.db» data2.db — переименовать файл data1.db , находящийся в папке C:\My files\My Folder , присвоив ему имя data2.db

Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители
Страница 22. Переименование файла; изменение позиции файла в каталоге

5.3.4 Переименование файла; изменение позиции файла в каталоге.

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

Высокий уровень.

В Бейсике файл переименовывается командой NAME. С помощью этой
команды он может быть также перенесен в другой каталог. Напишите
сначала существующее имя, а затем новое имя файла, оба заключен-
ные в кавычки, например NAME «OLDFILE.EXT» AS «NEWFILE.EXT». В
этом случае будет переименован файл в корневом каталоге. Для
изменения имен файлов, расположенных в подкаталогах, могут быть
использованы пути к файлу. Например, NAME «B:LEVEL1\OLDFILE.EXT»
AS «B:LEVEL1\NEWFILE.EXT» изменяет имя файла в подкаталоге LE-
VEL1.
Отметим, что для нового имени файла должен быть указан полный
путь. Если Вы запишете NAME «B:LEVEL1\OLDFILE.EXT» AS «NEWFI-
LE.EXT», то файл будет не только переименован, но и перенесен в
корневой каталог. Для переноса файла из одного подкаталога в
другой без изменения его имени напишите команду NAME «A:SUBDIR1-
\OLDFILE.EXT» AS «A:SUBDIR2\OLDFILE.EXT». Таким методом нельзя
перенести файл с диска на диск. Поскольку файлы, расположенные в
разных каталогах могут иметь одно и то же имя, то возможна ошибка
при попытке переноса файлов с одинаковыми именами. В этом случае
будет возвращен код ошибки 58 [5.4.8].

Средний уровень.

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

Метод FCB:
Используйте функцию 17H прерывания 21H. DS:DX должны указывать
на открытый управляющий блок файла. Поместите новое имя файла в
FCB, начиная со смещения 11H (это «резервная» область блока).
Новое имя может использовать символ «?», в этом случае символы,
находящиеся в этих позициях, не будут изменяться. При возврате,
если новое имя уже существовало в каталоге, то AL будет равно FF,
иначе AL = 0. В примере имя файла ACCOUNTS.DAT меняется на
DEBTS.DAT.

;—в сегменте данных
FCB DB ‘FILENAMEEXT’,25 DUP(0)
NEWNAME DB ‘NEWNAME EXT’, ;11 символов нового имени

;—помещаем новое имя файла в переменную NEWNAME
MOV SI,OFFSET NEWNAME ;DS:SI указывают на новое имя
MOV AX,SEG FCB ;ES:DI указывают на FCB
MOV ES,AX ;
MOV DI,OFFSET FCB ;
ADD DI,11H ;начинаем со смещения 11H
MOV CX,11 ;имя файла содержит 11 символов

REP MOVSB ;переносим 11 байтов
LEA DX,FCB ;DS:DX указывают на FCB
MOV AH,17H ;функция изменения имени
INT 21H ;изменяем имя
CMP AL,0FFH ;проверка на ошибку
JE RENAME_ERROR ;уход на обработку ошибки

Метод дескриптора файла:

Функция 56H прерывания 21H переименовывает и перемещает файлы.
DS:DX должны указывать на строку, дающую путь и имя переименуемо-
го файла (до 63-х символов) и завершающуюся символом ASCII 0.
ES:DI должны указывать на вторую строку, которая дает новые имя и
путь файла. Имена накопителей, если они присутствуют, должны
совпадать. Если пути различны, то файл переноносится в другой
подкаталог. Чтобы перенести файл без переименования надо во вто-
рой строке указать то же самое имя, но другой путь. При возврате,
если произошла ошибка, то устанавливается флаг переноса, а AX
будет содержать 3 — если один из путей не найден, 5 — при ошибке
на диске и 17 — при попытке переноса между разными накопителями.
В примере файл ACCOUNTS.DAT переносится из подкаталога GAINS в
подкаталог LOSSES.

;—в сегменте данных
OLDPATH DB ‘A:GAINS\ACCOUNTS.DAT’,0
NEWPATH DB ‘A:LOSSES\ACCOUNTS.DAT’,0

;—изменение пути файла
LEA DX,OLDPATH ;DS:DX указывают на старый путь
MOV AX,SEG NEWPATH ;ES:DI указывают на новый путь
MOV ES,AX ;
MOV DI,OFFSET NEWPATH ;
MOV AH,56H ;номер функции
INT 21H ;переносим файл
JC ERROR_ROUTINE ;уход на обработку ошибки

Команды работы с каталогами и файлами в операционной системе 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

Whatis.Ru


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

Страниц: 1 2

#26 18-01-2011 19:35:39

Re: . Введение в Ассемблер

Программа DEBUG

Программируем под DOS на ассемблере, используя виндовый DEBUG.

Программа DEBUG — мощный отладчик, входящий в состав Windows. Для запуска — жмём [Win+R] и вводим DEBUG. Перед нами мигающий курсор. Введём знак вопроса ? и получим список команд:

— A (assemble) — Создание двоичного кода процессоров 8086 непосредственно в памяти.
— С (compare) — Сравнение двух блоков памяти.
— D (dump) — Просмотр содержимого заданного диапазона адресов памяти.
— E (enter) — Ввод данных в память по заданному адресу.
— F (fill) — Заполнение адресов в области памяти заданными значениями.
— G (go) — Выполнение загруженной программы.
— H (hexadecimal) — Выполнение шестнадцатеричных арифметических операций.
— I (input) — Считывание и вывод на экран одного байта из указанного порта ввода.
— L (load) — Загрузка файла или содержимого сектора диска в память.
— M (move) — Копирование содержимого одного блока памяти в другой.
— N (name) — Задание имени исполняемого файла, L (load) или W (write).
— O (output) — Вывод байта в порт вывода.
— P (proceed) — Выполнение цикла, инструкции, прерывания или процедур.
— Q (quit) — Выход из Debug, без сохранения тестируемого файла.
— R (register) — Редактирование содержимого регистров ЦПУ.
— S (search) — Поиск в области памяти по шаблону.
— T (trace) — Выполнение одной инструкции с выводом содержимого регистров.
— U (unassemble) — Дезассемблирование и просмотр исходного кода программы.
— W (write) — Запись файла на диск.

Подробное описание команд с примерами можно найти в справке винды ([Win+F1]debug).

Теперь, запустим DEBUG и просмотрим, что у нас в регистрах. Вводим команду «R». Как видим, значение всех регистров процессора равняется нулю:

AX, BX, CX, DX = 0000

Мы можем вносить требуемые значения в регистры.

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#27 18-01-2011 19:39:28

Re: . Введение в Ассемблер

Пишем прогу на ассемблере.

Как уже говорилось, ассемблер — это самый низкий уровень программирования, который понимает проц. Теперь проведём эксперемент, чтоб убедиться в этом:

1) Создадим *.сом в программе DEBUG
2) Дизассемблируем его, при помощи того-же DEBUG
3) Полученные 16-тиричные значения и есть инструкции, которые выполняет процессор

Итак, начнём с создания *.сом, который выведет символ на экран. Запустим DEBUG и введём команду «А». Дальше, «топчем клаву» как на рисунке:

Чтоб вывести символ на экран, в регистр AH помещается 02H, а в DL — код выводимого символа, плюс 30H. Далее вызываем прерывание-DOS INT 21H (вывод на экран), и закрываем программу дёрнув прерывание INT 20H (exit). Всё, что находится после INT 20H игнорируется процессором.

В листинге дизассемблирования указывается сегмент памяти, в который была загружена наша программа (13F2) и смещение внутри сегмента 100H, обязательное для СОМ-файлов. Необходимо помнить, что прикладные программы загружаются в первую-свободную область памяти, поэтому у Вас значение 13F2 может быть другим, в зависимости от свободной памяти.

Следующим столбцом в дизассемблерном листинге идут 16-тиричные значения (выделены серым), которые представляют собой непосредственные инструкции процессору. Ниже — уже ничего нет, ..только ядро. Вообще-то есть ещё интерператор 16-тиричных чисел в двоичные, но он невсчёт. В конечном виде наша программа TEST_PROGA.COM обрабатывается процессором в таком вот виде:

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

C++ Builder 4 — 22kb
Delphi 5 — 291kb
Delphi 5 + библиотека KOL — 26kb
Ассемблер MASM — около 3kb

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

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#28 19-01-2011 01:37:15

Re: . Введение в Ассемблер

..а вон чё WinHex показывает:

Да такой код можно хоть-куда пихнуть, ..к примеру в заголовок EXE-файла. Там столько свободного пространства, что можно слона разместить. 200-300h байт всегда найдётся. ..а нам больше и не надо, вешеприведённая TEST_PROGA.COM весит всего 17 байт (17 символов в исходнике). 300h — это уже 768 символов, ..целый материк, свобода мысли.

Достаточно перехватить управление в коде, перевести его на себя и замутить чё-нить. Объясню «в двух словах»: как это делается! ..Пишется прога на асме (желаемого характера), которая привычным движением руки вставляется в WinHex — в начало, середину, или «конец» EXE-файла жертвы. Желательно, конечно, в начало. после «PE»-заговка. Самый оптимальный вариант — после перечисления DLL-лок (инклудов). Там как-раз достаточно места, и быстрее примем управление. Фрагмент внедрения в CHKDSK.EXE нашей «Бацилы»:

Если Вы запустите такой инфицированный CHKDSK.EXE, то сначала отработает наш код, а только потом запустится сам chkdsk. . но не всё так просто. Там есть своя «Техника внедрения». Дизассемблируется chkdsk.exe, и в листинге ищется команда JMP (переход на метку). Перехватываем этот JMP и после исполнения основного кода «бацилы» передаём управление обратно на эту метку, командой RET ассемблера в коде нашей программы.

В качестве бонуса, вешаю в скрепке пару примеров программ на ассемблере.

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#29 19-01-2011 12:49:58

Re: . Введение в Ассемблер

Что нужно знать о прерываниях

Как уже отмечалось, прерывания бывают двух типов — DOS и BIOS. Но что они из себя представляют. Попробуем ответить на этот вопрос.

Прерывания — это вовсе не прерывания, а готовые программы (процедуры), которые компьютер вызывает для выполнения определенной задачи. Внутри этих «программ-прерываний» имеются вложенные подпрограммы, каждая из которых выполняет определённую задачу. Эти подпрограммы вызываются векторами прерываний!

Программа-прерывание вызывается по номеру (к примеру INT 13H, дисковый ввод/вывод BIOS), где в качестве «параметра» заносится её вектор, т.е. подпрограмма. Например, для вывода информации на экран, нам нужно воспользоваться сервисом-DOS и запросить прерывание с номером INT 21H. Подпрограмму 02H необходимо указать в регистре AH:

При включении компьютера, BIOS выстраивает таблицу векторов прерывания в первых 1024 байтах памяти. Этот килобайт памяти начинается с адреса 0000:0000 и заканчивается 0000:0400 (1024d = 0400h). Откроем в WinHex память, и взглянем на эту таблицу:

Каждый вектор имеет длину 4 байта. Вектор для прерывания 0 начинается с ячейки 0000:0000, прерывания 1 — с 0000:0004, 2 — с 0000:0008, 3 — с 0000:000C и т.д.

Если посмотреть на четыре байта, начиная с адреса 0000:0020, в которых содержится вектор прерывания 8H (прерывание времени суток), то Вы обнаружите там A5FE00F0. Имея ввиду, что младший байт слова расположен сначала, это 4-байтное значение переводится в F000:FEA5. Это стартовый адрес программы ПЗУ, выполняющей прерывание 8H.

Если размер таблицы 1024 байт, а один вектор имеет длинну 4 байта, то выходит чтобы найти общее кол-во векторов нужно 1024/4. . получаем 256. Таким образом, в общем пространстве имеется место для 256 векторов (подпрограмм), которые «разбиваются» по всем номерам прерываний BIOS и DOS. В каждом прерывании может находиться до 20 подпрограмм.

Прерывания с номерами до INT 20H обслуживает BIOS. Номера прерываний DOS лежат в пределах от 20 до 32H:

Прерывания BIOS (без подфункций) Прерывания DOS (без подфункций)

00h: Деление на ноль. 20h: Завершить программу
01h: Пошаговое. 21h: Сервис DOS
02h: Немаскируемое. 25/26h: Абсолютные чтение/запись диска
03h: Точка прерыв. 27h: Завершиться, но остаться резидентным
04h: Переполнение. 28h: Квант времени DOS (НЕТ В ДОКУМЕНТАЦИИ)
05h: Печать экрана. 2eh: Выполнить команду DOS (НЕТ В ДОКУМЕНТАЦИИ)
06h: (резерв) 2fh: Мультиплексное прерывание (спулинг печати)
07h: (резерв) 22h: Адрес завершения
08h: Таймер. 23h: Адрес Control-Break
09h: Клавиатура. 24h: Адрес обработчика критических ошибок
0Ah-0dh: (hdwr ints)
0Eh: Дискета.
0Fh: (hdwr int)
10h: Видео сервис.
11h: Список оборудования.
12h: Размер исп.памяти.
13h: Дисковый в/в.
14h: В/в последовательный порт
15h: Расшир.сервис AT.
16h: В/в клавиатуры.
17h: В/в принтера.
18h: ROM-BASIC.
19h: Загрузка.
1Ah: В/в таймера.
1Bh: Прерывание клавиатуры.
1Ch: Прерывание по таймеру
1Dh: Видео параметры
1Eh: Параметры дискет
1Fh: Символы графики

Приведу краткое описание прерывания-BIOS INT 13H:

INT 13H: дисковый ввод-вывод
Этот сервис предоставляет прямой доступ к адаптерам дискеты и жёсткого диска. Рекомендуется там, где это возможно, использовать INT 25H и INT 26H, чтобы предоставить драйверам устройств-DOS выполнять всю низкоуровневую обработку. Разумеется, для таких операций, как форматирование диска или установка защиты от копирования, прерывание INT 13H может оказаться единственной альтернативой.

подфункции: 00H сброс контроллера 08H дать парам диска 10H проверить готовность
01H дать статус 09H иниц табл парам 11H рекалибрация
02H читать секторы 0aH длинное чтение 14H диагностика
03H писать секторы 0bH длинная запись 15H дать тип диска
04H верификация 0cH искать цилиндр 16H изменить статус
05H форматир дорожку 0dH альтерн сброс 17H уст тип диска

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#30 20-01-2011 13:39:20

Re: . Введение в Ассемблер

Использование сервисов DOS. Прерывание INT 21H.

После загрузки MS-DOS в память, операционная система предоставляет нам свои услуги, в виде прерывания INT 21H (сервисы DOS). Используя это прерывание в своих программах мы можем выполнять около 80-ти операций. Не буду перечислять все функции этого прерывания, остановлюсь только на наиболее значимых:

00H: завершить программу 27H: читать блок произвольного файла
01H: ввод с клавиатуры 28H: писать блок произвольного файла
02H: вывод на дисплей 2aH: дать дату DOS
05H: вывод на принтер 2cH: дать время DOS
09H: Выдать строку 2fH: дать текущий DTA
0dH: Сбросить диск 30H: дать номер версии DOS
0eH: Выбрать умалчиваемый диск DOS 31H: завершиться и остаться резидентным — KEEP
0fH: открыть файл через FCB 32H: дать дисковую информацию DOS
10H: Закрыть файл через FCB 35H: дать вектор прерывания
13H: Удалить файл через FCB 36H: дать свободную память диска
14H: читать файл через FCB 39H: создать новое оглавление — MKDIR
15H: писать файл через FCB 40H: Писать в файл через описатель
16H: создать файл через FCB 48H: дать размер памяти
17H: Переименовать файл через FCB 56H: Переименовать/переместить файл
25H: установить вектор прерывания 5bH: создать новый файл

Функция 09H прерывания INT 21H (вывод строки символов на экран).

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

Как уже говорилось, при вызове прерывания необходимо указать значение функции в регистре AH (в нашем случае — 09H). Далее, вводятся инструкции и вызывается само прерывание. Регистр DX должен указывать на первый символ строки (т.е. расположение текстовой строки). В конце строки обязательно должен присутствовать символ «$». Это означает, что сам символ «$» не может входить в строку. Сама строка может быть любой длины.

Чтоб перевести текст на следующую строку, в конце указываются спец-символы 0AH (перевод строки), и 0DH (возврат каретки). Без них — текст будет располагаться в одну строчку.

. пришло время скачать инструментарий, чтоб проводить эксперементы. Программы, целиком написанные на ассемблере, транслируются в машинный код при помощи ассемблера. Под DOS-ом большой популярностью пользуется пакет TASM, для винды — MASM от Microsoft. С ним конкурирует FASM, поддерживающий более естественный синтаксис. Его и качаем с сайта WASM.RU. Он отличается от предшественников тем, что это и транслятор и компилятор в одном флаконе. Вводиш в окне инструкции, жмёш F9 и на выходе получаеш готовый исполняемый файл! Очень удобно. особенно для начинающих!

. значит скачали FASM 1.67, и в поле набиваем текстовые строки нашей программы. Вот пример:

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

use16 ; DOS работает в 16-тиразрядном режиме
org 100h ; Делаем СОМ-файл с начальным смещением 100h

mov AH,09h ; Суём в регистр AH функцию 09h прерывания 21h
mov dx,text ; В регистре DX указываем от куда брать строку
int 21h ; Вызываем прерывание 21h
ret ; Возвращаемся туда, от куда были вызваны

; Текстовая строка (адрес для регистра DX)
text db ‘Hello, WHATIS. $’

. если нужно вывести несколько строк, то можно сделать так:

. на выходе — СОМ-файл размером 63 байт. Таким способом можно выводить текстовые строки из памяти, которые содержат информацию об оборудовании, объёме свободной памяти и т.д. и т.п.

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

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#31 21-01-2011 12:22:44

Re: . Введение в Ассемблер

Определение Стека

Стек — это такое место хранения данных, которые при надобности можно обратно восстановить. В нём хранятся адреса переходов, различные данные и т.д. Регистр SP указывает на адрес вершины стека. Регистр ВР содержит адрес, начиная с которого в стек вносится или забирается информация.

Представьте, что одна подпрограмма вызывает другую. Вызываемая подпрограмма завершила свое выполнение, теперь ей надо передать управление подпрограмме, которая её вызвала. Как-раз адрес следующей команды (после вызова подпрограммы) находится на верхушке стека, в регистре SP.

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

Таким образом, программа продолжит выполнение инструкций только после того, как отработают ПОДпрограммы, принявшие управление:

В стек можно заносить не только адреса, но и данные, текстовые строки и т.п. Команда ассемблера PUSH помещает данные в стек, а команда POP снимает их от туда. При использовании стека наша программа «Hello, Whatis. » примет следующий вид:

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

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

#32 24-01-2011 12:34:02

Re: . Введение в Ассемблер

Память 16-тиразрядных систем (DOS).

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

В DOS — память сегментная. Вся память делится на сегменты по 64К, и адрес задаётся форматом «сегмент:офсет». Сегмент — задаёт порядковый номер сегмента, а офсет — смещение в этом сегменте. Это объяснение для 16-тиразрядных программ (32-хразрядные обсудим позже).

На рис. общая память, разделённая на сегменты по 64kb. Здесь — максимум 65536 сегментов:

;; 16 двоичных разрядов — это 1111 1111 1111 1111, или 65535d (FFFFh).
;; 65535 * 64Кб = 4 194 240Кб (или 4096Мб, или 4Гб памяти).

С помощью 16 бит можно адресовать только 65536 байт памяти и 65536 сегментов. Например, 0000:4012 это означает: сегмент 0, смещение 4012. Чтобы узнать, что находится в том адресе, вы сначала переходите на сегмент 0, а затем в сегменте смещаетесь на 4012.

Память 32-хразрядных систем (WIN-32).


В 32-хразрядном Windows (95 и выше) Вы всё еще имеете сегменты, но вам не нужно заботиться о них, потому, что они уже не 64kb (как в 16-разрядном), а 4 Гб. Это называеся плоской моделью памяти (flat). Здесь есть только смещения и они теперь 32-разрядные (в диапазоне от 0 до 4 294 967 295). Каждая ячейка в памяти указывается смещением.

Но 4ГБ может и не быть на машине, поэтому эта память называется виртуальной. Мало того, каждый процесс выполняется в своём виртуальном адресном пространстве, . а это значит, что никакой другой процесс не сможет получить доступ к вашей памяти. Для этого существуют специальные API функции.

Память 0-0000FFFF не используется и служит для выявления нулевых указателей, значит, если вы укажете адрес 0000С567, то он будет считаться нулевым. Любая попытка обратится к этой памяти приводит к ошибке. Память выше 80000000 одна для всех процессов. В этой памяти находится код нулевого кольца, структуры ядра, код планировщика задач, код драйверов, диспетчер ввода вывода, таблица прерываний и т.д. Любая попытка обратиться к памяти ядра приводит к ошибке и к немедленному завершению приложения.

Память в диапазоне 00001000-7FFFFFFF доступна для 3 кольца (т.е. для вашего приложения). С ней Вы, что хотите то и делаете, в неё также грузятся DLL-ки.

Если Вам даётся 2ГБ памяти, то это не означает, что вы можете обратиться к любому участку памяти. Для того чтобы получить доступ к некоторому участку памяти надо сначала её зарезервировать. Минимальный размер выделяемой памяти — страница, равна 1000h байтам (1000h байт = 4096d байт, или 4КБ). Даже если вы захотите выделить 5 байт, то всё равно выделится 4КБ. Думаю, вы не столкнётесь с тем, что вам надо будет выделять память. Это нужно при работе с файлами для того, что бы в эту память читать файл.

Болтовня ничего не стоит. Покажите мне код.. (Linus Torvalds)

kursovik (Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология), страница 7

Описание файла

Документ из архива «Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология», который расположен в категории «рефераты». Всё это находится в предмете «информатика, программирование» из раздела «Студенческие работы», которые можно найти в файловом архиве Студент. Не смотря на прямую связь этого архива с Студент, его также можно найти и в других разделах. Архив можно найти в разделе «рефераты, доклады и презентации», в предмете «информатика, программирование» в общих файлах.

Онлайн просмотр документа «kursovik»

Текст 7 страницы из документа «kursovik»

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

Вирусы заражающие EXE-файла можно поделить на несколько групп:

*Я рассматриваю — вирусы написанные в основном на ассемблере, имеющие не большой размер.

Вирусы, замещающие программный код (Overwrite)

Такие вирусы уже давно устарели и в наши дни они редко распространены.

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

Эти вирусы получили свое название из-за алгоритма размножения: К каждому инфицированному файлу создается файл-спутник. Рассмотрим более подробно два типа вирусов этой группы:

Вирусы первого типа размножается следующим образом. Для каждого инфицируемого ЕХЕ-файла в том же каталоге создается файл с вирусным кодом, имеющий такое же имя, что и ЕХЕ-файл, но с расширением
СОМ. Вирус активируется, если при запуске программы в командной
строке указано только имя исполняемого файла. Если СОМ-файл с таким именем не найден, ведется поиск одноименного ЕХЕ-файла. Если
не найден и ЕХЕ-файл, DOS попробует обнаружить ВАТ (пакетный)
файл. Другими словами, когда пользователь хочет за-
пустить программу и набирает в командной строке только ее имя, первым управление получает вирус, код которого находится в СОМ-файле. Он создает СОМ-файл еще к одному или нескольким ЕХЕ-файлам (распространяется), а затем исполняет ЕХЕ-файл с указанным в командной строке именем. Пользователь же думает, что работает только запущенная ЕХЕ-программа. Вирус-спутник обезвредить довольно просто — достаточно удалить СОМ-файл.

Вирусы второго типа действуют более тонко. Имя инфицируемого
ЕХЕ-файла остается прежним, а расширение заменяется каким-либо
другим, отличным от исполняемого (СОМ, ЕХЕ и ВАТ), Например,
файл может получить расширение DAT (файл данных) или OVL (программный оверлей). Затем на место ЕХЕ-файла копируется вирусный
код. При запуске такой инфицированной программы управление полу-
чает вирусный код, находящийся в ЕХЕ-файле. Инфицировав еще один
или несколько ЕХЕ-файлов таким же образом, вирус возвращает оригинальному файлу исполняемое расширение (но не ЁХЕ, а СОМ, поскольку ЕХЕ-файл с таким именем занят вирусом), после чего исполняет его. Когда работа инфицированной программы закончена, ее
запускаемому файлу возвращается расширение неисполняемого. Лечение файлов, зараженных вирусом этого типа, может быть затруднено,
если вирус-спутник шифрует часть или все тело инфицируемого файла,
а перед исполнением его расшифровывает.

Вирусы, внедряющиеся в программу (Parasitic)

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

Способы заражения ЕХЕ-файлов

Самый распространенный способ заражения ЕХЕ-файлов такой: в конец файла дописывается тело вируса, а заголовок корректируется (с сохранением оригинального) так, чтобы при запуске инфицированного файла
управление получал вирус. Похоже на заражение СОМ-файлов, но вместо задания в коде перехода в начало вируса корректируется собственно
адрес точки запуска программы. После окончания работы вирус берет из
сохраненного заголовка оригинальный адрес запуска программы, прибавляет к его сегментной компоненте значение регистра DS или ES (полученное при старте вируса) и передает управление на полученный адрес.

Второй способ таков — внедрение вируса в начало файла со сдвигом кода программы. Механизм заражения такой: тело инфицируемой программы
считывается в память, на ее место записывается вирусный код, а после
него — код инфицируемой программы. Таким образом, код программы
как бы «сдвигается» в файле на длину кода вируса. Отсюда и название
способа — «способ сдвига». При запуске инфицированного файла вирус
заражает еще один или несколько файлов. После этого он считывает
в память код программы, записывает его в специально созданный на
диске временный файл с расширением исполняемого файла (СОМ или
ЕХЕ), и затем исполняет этот файл. Когда программа закончила работу, временный файл удаляется. Если при создании вируса не применялось дополнительных приемов защиты, то вылечить инфицированный
файл очень просто — достаточно удалить код вируса в начале файла,
и программа снова будет работоспособной. Недостаток этого метода
в том, что приходится считывать в память весь код инфицируемой про-
граммы (а ведь бывают экземпляры размером больше 1Мбайт).

Следующий способ заражения файлов — метод переноса который является самым совершенным из всех ранее перечисленных. Вирус
размножается следующим образом: при запуске инфицированной программы тело вируса из нее считывается в память. Затем ведется поиск
неинфицированной программы. В память считывается ее начало,
по длине равное телу вируса. На это место записывается тело вируса.
Начало программы из памяти дописывается в конец файла. Отсюда название метода — «метод переноса». После того, как вирус инфицировал
один или несколько файлов, он приступает к исполнению программы,
из которой запустился. Для этого он считывает начало инфицированной программы, сохраненное в конце файла, и записывает его в начало файла, восстанавливая работоспособность программы. Затем вирус удаляет код начала программы из конца файла, восстанавливая оригинальную длину файла, и исполняет программу. После завершения программы вирус вновь записывает свой код в начало файла, а оригинальное начало программы — в конец. Этим методом могут быть инфицированы даже антивирусы, которые проверяют свой код на целостность, так как запускаемая вирусом программа имеет в точности такой же код, как и до инфицирования.

Рассмотрим алгоритм распространения Вируса.

1. Открыть файл, из которого вирус получил управление.

2. Считать в буфер код вируса.

4. Искать по маске подходящий для заражения файл.

5. Если файлов больше не найдено, перейти к пункту 11.

6. Открыть найденный файл.

7. Проверить, не заражен ли найденный файл этим вирусом.

8. Если файл заражен, перейти к пункту 10.

9. Записать в начало файла код вируса.

10. Закрыть файл (по желанию можно заразить от одного до всех фай-
лов в каталоге или на диске).

11. Выдать на экран какое-либо сообщение об ошибке, например
«Abnormal program termination» или «Not enough memory», — как бы, пусть
пользователь не слишком удивляется тому, что программа не запустилась.

12. Завершить программу.

В большинстве случаев для написания вируса широко используются функции DOS-а. Их достаточно много всех не будем рассматривать, приведу пример только одного из них.

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

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

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

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

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

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

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

DOS, функция 03h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DOS, функция 3Ah
Удалить оглавление

DOS, функция 41h
Удалить файл

DOS, функция 43h
Установить/опросить атрибуты файла

DOS, функция 44h
Управление устройством ввода/вывода

DOS, функция 4Bh
Выполнить или загрузить программу

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

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

DOS, функция 5Ah
Создать уникальный временный файл

DOS, функция 68h
Завершить файл.

Список наиболее часто используемых функций DOS.(ассемблер пример)

[AK] Вот список функций, которые важно помнить при разработке вирусов:

Установить адрес DTA.

Получить адрес DTA.

es:bx = текущий адрес

Create — Создать файл.

cx = атрибуты файла (таб 1)

ds:dx = путь и имя файла в формате asciz

ax = дескриптор файла

ax = код ошибки (3,4,5) (таб 2)

Open — Открыть существующий файл

al = режим доступа (таб 2)

ax = дескриптор файла

ax = код ошибки (1,2,3,4,5,0C)

Close — Закрыть файл

ax = код ошибки (6)


Read — Чтение из файла

ds:dx = буфер для чтения

ax = число прочитанных байт

Это значение может быть меньше CX.

Например потому, что превысили длину файла.

ax = код ошибки (5,6)

Write — Записать в файл

ds:dx = данные для записи

ax = число записанных байт

ax = код ошибки (5,6)

Unlink — Удалить файл

ax = код ошибки (2,3,5)

LSeek — Установить указатель в файле

al = точка отсчета указателя:

0 — от начала файла

1 — от текущего положения

cx:dx = смещение (cx=старшие 16 бит, dx=младшие)

dx:ax = новое положение указателя относительно начала

Прочитайте онлайн Создаем вирус и антивирус | Приложение Б Функции 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. Значения ID

Возвращает информацию о размере и типе текущего диска. Размер диска (в байтах) равен 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 Кбайт.

Как переименовать файл Linux

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

В этой статье мы рассмотрим как переименовать файл в Linux с помощью терминала, рассмотрим такие возможности, как массовое пакетное переименование файлов, а также регулярные выражения.


Как переименовать файл в Linux с помощью mv

В Linux существует замечательная стандартная утилита mv, которая предназначена для перемещения файлов. Но по своей сути перемещение — это то же самое, что и переименование файла linux, если выполняется в одной папке. Давайте сначала рассмотрим синтаксис этой команды:

$ mv опции файл-источник файл-приемник

Теперь рассмотрим основные опции утилиты, которые могут вам понадобиться:

  • -f — заменять файл, если он уже существует;
  • -i — спрашивать, нужно ли заменять существующие файлы;
  • -n — не заменять существующие файлы;
  • -u — заменять файл только если он был изменен;
  • -v — вывести список обработанных файлов;

Чтобы переименовать файл linux достаточно вызвать утилиту без дополнительных опций. Просто передав ей имя нужного файла и новое имя:

mv file newfile

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

mv /home/sergiy/test/newfile /home/sergiy/test/file1

Обратите внимание, что у вас должны быть права на запись в ту папку, в которой вы собираетесь переименовывать файлы. Если папка принадлежит другому пользователю, возможно, нужно будет запускать программу через sudo. Но в таком случае лучше запускать с опцией -i, чтобы случайно ничего не удалить.

Переименование файлов Linux с помощью rename

В Linux есть еще одна команда, которая позволяет переименовать файл. Это rename. Она специально разработана для этой задачи, поэтому поддерживает такие вещи, как массовое переименование файлов linux и использование регулярных выражений. Синтаксис утилиты тоже сложнее:

$ rename опции ‘s/ старое_имя / новое_имя ‘ файлы

$ rename опции старое_имя новое_имя файлы

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

Рассмотрим опции утилиты:

  • -v — вывести список обработанных файлов;
  • -n — тестовый режим, на самом деле никакие действия выполнены не будут;
  • -f — принудительно перезаписывать существующие файлы;

Например, переименуем все htm файлы из текущей папки в .html:

rename ‘s\.htm/\.html/’ *.htm

Или для изображений:

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

  • g (Global) — применять ко всем найденным вхождениям;
  • i (Case Censitive) — не учитывать регистр.

Модификаторы размещаются в конце регулярного выражения, перед закрывающей кавычкой. Перед тем, как использовать такую конструкцию, желательно ее проверить, чтобы убедиться, что вы не допустили нигде ошибок, тут на помощь приходит опция -n. Заменим все вхождения DSC на photo в именах наших фотографий:

rename -n ‘s/DSC/photo/gi’ *.jpeg

Будут обработаны DSC, DsC и даже dsc, все варианты. Поскольку использовалась опция -n, то утилита только выведет имена изображений, которые будут изменены.

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

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

Переименование файлов в pyRenamer

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

sudo apt install pyrenamer

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

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

Опытным пользователям понравится возможность pyRenamer для переименования мультимедийных файлов из их метаданных. Кроме того, вы можете переименовать один файл если это нужно. Эта утилита полностью реализует функциональность mv и remove в графическом интерфейсе.

Выводы

В этой статье мы рассмотрели как переименовать файл в консоли linux. Конечно, есть и другие способы, например, написать скрипт, или использовать файловые менеджеры. А как вы выполняете сложные операции по переименованию? Напишите в комментариях!

Команды работы с каталогами и файлами в операционной системе 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

Семантический анализ структуры EXE файла и дисассемблер (с примерами и исходниками), вирусология

Курсовой проект — Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

±разом: при запуске инфицированной программы тело вируса из нее считывается в память. Затем ведется поиск
неинфицированной программы. В память считывается ее начало,
по длине равное телу вируса. На это место записывается тело вируса.
Начало программы из памяти дописывается в конец файла. Отсюда название метода — «метод переноса». После того, как вирус инфицировал
один или несколько файлов, он приступает к исполнению программы,
из которой запустился. Для этого он считывает начало инфицированной программы, сохраненное в конце файла, и записывает его в начало файла, восстанавливая работоспособность программы. Затем вирус удаляет код начала программы из конца файла, восстанавливая оригинальную длину файла, и исполняет программу. После завершения программы вирус вновь записывает свой код в начало файла, а оригинальное начало программы — в конец. Этим методом могут быть инфицированы даже антивирусы, которые проверяют свой код на целостность, так как запускаемая вирусом программа имеет в точности такой же код, как и до инфицирования.

Рассмотрим алгоритм распространения Вируса.

1. Открыть файл, из которого вирус получил управление.

2. Считать в буфер код вируса.

4. Искать по маске подходящий для заражения файл.

5. Если файлов больше не найдено, перейти к пункту 11.

6. Открыть найденный файл.

7. Проверить, не заражен ли найденный файл этим вирусом.

8. Если файл заражен, перейти к пункту 10.

9. Записать в начало файла код вируса.

10. Закрыть файл (по желанию можно заразить от одного до всех фай-
лов в каталоге или на диске).

11. Выдать на экран какое-либо сообщение об ошибке, например
«Abnormal program termination» или «Not enough memory», — как бы, пусть
пользователь не слишком удивляется тому, что программа не запустилась.

12. Завершить программу.

В большинстве случаев для написания вируса широко используются функции DOS-а. Их достаточно много всех не будем рассматривать, приведу пример только одного из них.

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

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

AL=OOh, если чтение было успешным и DTA заполнена данными
AL01h, если достигнут конец файла (EOF) и чтения не было
AL=02h, если произошел выход за сегмент (чтения нет)
AL03h, если встречен EOF и усеченная запись дополнена нулями

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

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

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

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

DOS, функция 03h

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DOS, функция 3Ah
Удалить оглавление

DOS, функция 41h
Удалить файл

DOS, функция 43h
Установить/опросить атрибуты файла

DOS, функция 44h
Управление устройством ввода/вывода

DOS, функция 4Bh
Выполнить или загрузить программу

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

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

DOS, функция 5Ah
Создать уникальный временный файл

DOS, функция 68h
Завершить файл.

Список наиболее часто используемых функций DOS.(ассемблер пример)

[AK]Вот список функций, которые важно помнить при разработкевирусов:

Dos fn 17h: переименовать файл через fcb

Сообщения: 1014
Благодарности: 194

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

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

Сообщения: 1518
Благодарности: 849

Последний раз редактировалось Foreigner, 30-04-2011 в 15:52 .

Это сообщение посчитали полезным следующие участники:

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

Сообщения: 1014
Благодарности: 194

Foreigner, Отлично! Спасибо — работает.

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

Сообщения: 1518
Благодарности: 849

вариант привязки к исходному названию
обЪяснить как работает

Это сообщение посчитали полезным следующие участники:

Сообщения: 1014
Благодарности: 194

Foreigner, спасибо большое за второй скрипт и обЪяснение.
И если не затруднит — обЪясните ещё пожалуйста этот момент:

Сообщения: 1518
Благодарности: 849

Это сообщение посчитали полезным следующие участники:

Сообщения: 1014
Благодарности: 194

Foreigner, Спасибо Вам за помощь!

Всё понятно , кроме одного. Что такое «cnt» ?

Сообщения: 1518
Благодарности: 849

Что такое «cnt» ? »

Это сообщение посчитали полезным следующие участники:

Сообщения: 25066
Благодарности: 7288

Что такое «cnt» ? »

Это сообщение посчитали полезным следующие участники:

Сообщения: 3665
Благодарности: 1560

При использовании в операторе «set» формы «/a» (целочисленные вычисления) нет необходимости использовать «%»/«!» для раскрытия переменных окружения, сие делается автоматически, причём всегда как отложенное раскрытие. »

——-
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail — для этого есть форум

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