Dos fn 15h писать последовательный файл через fcb


Содержание

Использование FCB при работе с файлами

21.01.2020, 06:36

Что такое FCB?
Что такое FCB? А то читаю: int 21-23 — Размер файла (FCB).

Многопоточность при работе с файлами
Доброй ночи! Написал код для сравнения двух файлов: string text, text2; .

Ошибка при работе с файлами
Sub â_ïðîåêòèðîâàíèå() If Dir(ActiveWorkbook.Path & «\Google Äèñê\Projects\» &.

Ошибка при работе с файлами
Вечер добрый! Есть код: string test; StreamReader rr =.

Ошибка при работе с файлами
Дан код. Необходимо при работе с фалом вывести на экран тех, кто достиг пенсионного возраста. При.

21.01.2020, 17:53 2

Решение

HYDRA8, вам обязательно выполнить работу с файлами, применяя именно FCB?
Существует ведь другой способ — через описатели (когда блоки FCB создаются и хранятся в недрах ОС, а программе пользователя возвращается порядковый номер этого блока — описатель).

По умолчанию FCB находится в области PSP по смещению 5Ch. Если вы используете тип файла exe, то область PSP вам так легко не доступна.
Ну и заполнять нужно этот FCB до вызова на открытие.

Вот пример набросал по чтению и выводу на экран текстового файла:

Как понимаю, если размер файла не кратен 80h — размеру записи, то нужно самостоятельно обрабатывать поле fFileSize на предмет кратности размеру записи и выводить только остаток. В моём примере этого нет и согласно функции 1Ah прерывания 21h в последней считанной записи все избыточные байты заполняются 0.

Можно слегка доработать ситуацию 3 при чтении — размер реально считанной записи равен fFileSize and 7Fh и именно столько символов и нужно выводить.

21.01.2020, 17:53

Ошибка при работе с файлами
Столкнулся с такой проблемой, что если выбран FileMode.OpenOrCreate, то значения в массив выводятся.

ArgumentException при работе с файлами
Почему так выходит?Как связать программу с файлом?

Алгоритм при работе с файлами
Возникла проблема в программе: 1. На входе имеем дирректорию, нам нужно обойти в ней все.

Справочник программиста на персональном компьютере фирмы IBM. Дисковые накопители
Страница 33. Запись в последовательные файлы. Часть 2

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

MS DOS может писать последовательные файлы как методом управ-
ляющего блока файла, так и методом дескриптора файлов. Метод FCB
предоставляет функцию специально сконструированную для записи
последовательных файлов. Метод дескриптора файлов, с другой сто-
роны, имеет только функцию записи в файл общего назначения, но ее
легко использовать и для этой цели. В любом случае, способ, ко-
торым был открыт файл, важен при последовательных операциях. Если
данные должны добавляться к последовательному файлу, то должна
быть использована обычная функция открытия файла. Однако, если
файл должен быть перезаписан заново, то требуется функция «созда-
ния» файла. Эта функция обрезает файл до нулевой длины, поэтому
его длина будет равна длине записанных в него данных.

Метод FCB:
Функция 15H прерывания 21H предназначена для записи в последо-
вательный файл. Надо подготовить управляющий блок файла и область
обмена с диском, как показано в [5.3.5]. Если файл должен быть
перезаписан, то его надо открыть с помощью функции 16H, которая
«создает» файл, обрезая его до нулевой длины. Если Вы откроете
файл с помощью функции 0FH, то остаток старого файла останется в
конце файла, если длина нового файла будет меньше, чем старого. С
другой стороны, если Вы хотите добавить данные к файлу, то ис-
пользуйте функцию открытия файла.
После того как файл открыт, Вы должны установить DS:DX на
начало FCB и вызвать функцию 15H для того чтобы заприсать одну
запись данных. Количество данных в записи зависит от величины,
которая помещена в поле длины записи, расположенное со смещением
14 в обычном FCB, по умолчанию это значение равно 128 байтам.
Если размер записи меньше, чем размер сектора диска 512 байт, то
данные будут буферизоваться, до тех пор пока не накопится доста-
точно данных, чтобы произвести реальную запись на диск; поэтому
записи в последовательный файл могут успешно записываться даже
если накопитель не включен. При закрытии файла все данные остав-
шиеся в буфере сбрасываются на диск. При возврате из функции 15H,
AL равен 0, если операция успешна, 1 — если диск полон и 2 — если
сегмент области обмена данных слишком мал.
В следующем примере на диск записываются 5 записей длиной 256
байтов. Записи могут быть набором текстовых данных. Эти данные
расположены в области памяти, помеченной меткой WORKAREA. Указа-
тель на DTA первоначально устанавливается на начало этой области,
а после записи каждой записи установка DTA меняется таким обра-
зом, чтобы он указывал на 256 байтов выше. Отметим, что обычно
для такой рабочей области отводится специальная область памяти
[1.3.1], но в данном примере для простоты используется буфер
расположенный в сегменте данных.

;—в сегменте данных
WORKAREA DB 2000 DUP (?) ;буфер данных
FCB DB 1,’FILENAMEEXT’,25 DUP (0)

;—DTA должен указывать на рабочую область
LEA DX,WORKAREA ;DS:DX указывают на DTA
MOV DI,DX ;сохраняем копию
MOV AH,1AH ;функция установки DTA
INT 21H ;устанавливаем DTA
;—открываем файл
MOV AH,16H ;номер функции
LEA DX,FCB ;DS:DX указывают на FCB
INT 21H ;открываем файл
;—устанавливаем размер записи
LEA BX,FCB ;BX указывает на FCB
MOV AX,256 ;размер записи 256 байтов
MOV [BX]+14,AX ;записываем в поле размера записи
;—посылаем данные в файл
MOV CX,5 ;число записей
NEXT_REC: MOV AH,15H ;функция записи
LEA DX,FCB ;указываем на FCB
INT 21H ;записываем данные
CMP AL,2 ;проверка на ошибки
JE CONTINUE ;и их обработка
CMP AL,1 ;
JE DISK_FULL ;
;—перенос выполнен, переустанавливаем DTA
ADD DI,256 ;сдвигаемся на 1 запись
MOV DX,DI ;DS:DX указывают на новый DTA
MOV AH,1AH ;функция установки DTA
INT 21H ;установка новой позиции
LOOP NEXT_REC: ;идем на следующую запись

;—позднее, закрываем файл
LEA DX,FCB ;DS:DX указывают на FCB
MOV AH,10H ;функция закрытия файла
INT 21H ;закрываем файл

Метод управляющего блока файла не слишком удобен для добавле-
ния записей в конец существующего последовательного файла. В
отличии от метода дескриптора файла, который позволяет указать на
конец файла, здесь Вы должны манипулировать полями текущей записи
и текущего блока. Нужно считать последнюю, несущую информацию,
запись в DTA, а затем заполнить пустое пространство в нем первой
записью данных, которые Вы хотите добавить. Затем перезапишите
запись на ее старое место в файле, после чего Вы можете добавлять
сколько хотите новых записей. Файл должен быть открыт функцией
0FH.

Создаем вирус и антивирус (34 стр.)

При 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, если ошибка переполнения диска (данные не записаны)

Илон Маск рекомендует:  font-style в CSS

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

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

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

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

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

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

Dos fn 15h: писать последовательный файл через fcb

Ассемблер? Это просто! Учимся программировать (FAQ)
______________________________________

Вопросы, которые поступили от подписчиков рассылки
«Ассемблер? Это просто! Учимся программировать»

Дата выхода: 2001-08-16

Здравствуйте!
Значит, история такая: мой приятель купил винт Quantum AS на 10 гигов. И принёс мне — временно, пока он не купит все остальные части компа. А у меня его не видно.
BIOS-то этот винт детектит, а вот Виндоуз — ни в какую. Я джамперы и так и сяк ставил — безуспешно.
Быть может, дело в моей матплате Acorp для Pentium MMX ?
Она у меня старая, 1997 года. Если так, то мне перед тем, как тоже винт покупать, и матплату сменить? (А заодно и процессор, и корпус с AT на ATX. )
Кстати, какую лучше брать матплату для Дюрона?
Спасибо за внимание.
Константин.

Привет!
А ты его отформатировал? Если нет, то вначале иди запускай fdisk, создавай логические диски, а потом форматируй их с помощью
format disk:
Если хочешь, чтобы весь диск можно было одним куском отформатировать в программе fdisk надо согласиться на поддержку больших дисков( >2ГБ).

Отправил эксперт: Александр
Эксперт отправил ответов (всего): 65

Экспертная группа: Модели, виды и типы компьютеров (hard)

Пишу программу работающую в реальном режиме времени
Использую прерывание по таймеру
Основная программа пишется на Паскале (Borland Pascal 7.0)
Иницилизация таймера и обработка прерывания на ассемблере.
В обработке прерывания работа с lpt-портом. И. проблема :
добавление команд out dx,al (время выполнения по некоторым
данным на 486 машине — 10 тактов, а у меня Celeron 433) приводит к изменению промежутка времени между прерываниями. Я в шоке! Помогите — горит проект и меня ждет жестокая расправа.
Ниже привожу исходник.

Не знаю, что у меня хорошего получилось, но лучше, думаю, сделать так (см. приложение, там все написано).

Отправил эксперт: Василий
Эксперт отправил ответов (всего): 20

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Здравствуйте, Broken Sword, уважаемые эксперты,

_программа_ должна трассировать Int 21h и сама принимять решение о местонахождении заданной функции.
Весь процесс проходит _автоматически_ без человеческого вмешательства.

Ко всему, возможно, добавляются защиты от трассировки, вроде уничтожения векторов 1 и 3, проверка и подмена флагов трассировки, запись «мусора» в регистры TR1, TR2 . и т.д.

С нетерпением жду ответа,
Андрей.

Не понял, ты хочешь, чтобы я тебе такую программу написал или у тебя есть идеи, но требуются консультации?

Отправил эксперт: Василий
Эксперт отправил ответов (всего): 21

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

У меня проблема с завершением работы Windows98, мне приходится два раза повотрять операцию «Выключить компьютер». Каким образом мне изабивться от этого глюка?

Здравствуйте, Владимир!
Могу сходу предложить три варианта действий:
1.Проверить машину стандартным regclean-ом (можно взять на download.com.
2.Проверить машину с помощью приблуды типа Нортон Виндоктор.
Если ошибка была связана со сбоем в реестре — должно помочь.
3.Вариант, связанный с запуском приложения типа AVX ICQ checker.
(Мне также приходится по два раза выключаться, после первого раза он выкидывает aqmon, после второго — собственно выключается.Но если пользуешься ICQ и не хочешь заловить вируса луче перестраховаться, не так ли =|;о) ).

Отправил эксперт: RANDOM
Эксперт отправил ответов (всего): 10

Экспертная группа: Пользовательская работа с Windows

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

Описание: CX байт данных записывается в файл или на устройство с описателем,
заданным в BX. Данные берутся из буфера, адресуемого через DS:DX.
Данные записываются, начиная с текущей позиции указателя
чтения/записи файла.

Используйте функцию 42H LSEEK, чтобы установить указатель файла,
если необходимо (OPEN сбрасывает указатель в 0).

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

Вы должны всегда сравнивать возвращаемое значение AX (число запи-
санных байт) с CX (запрошенное число байт для записи).
если AX = CX, запись была успешной
если AX Эксперт отправил ответов (всего): 22

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Здравствуйте!
Значит, история такая: мой приятель купил винт Quantum AS на 10 гигов. И принёс мне — временно, пока он не купит все остальные части компа. А у меня его не видно.
BIOS-то этот винт детектит, а вот Виндоуз — ни в какую. Я джамперы и так и сяк ставил — безуспешно.
Быть может, дело в моей матплате Acorp для Pentium MMX ?
Она у меня старая, 1997 года. Если так, то мне перед тем, как тоже винт покупать, и матплату сменить? (А заодно и процессор, и корпус с AT на ATX. )
Кстати, какую лучше брать матплату для Дюрона?
Спасибо за внимание.
Константин.

Здравствуйте, Константин!
Просто напросто у тебя жёсткий диск новый, поэтому на нем нет никакой файловой системы(для Win — обычно Fat 32, для Пингвина — Ext2+Swap).
Тебе надо найти FDisk(стандартная для Win) или Partition Magic, затем создать основной раздел дос на нём(или ещё дополнительный), тогда всё будет в порядке.
А, вообще, обычно к жёсткому диску при покупке должна прилагаться дискета с утилитой установки жесткого диска!

Отправил эксперт: Orlando
Эксперт отправил ответов (всего): 10

Экспертная группа: Модели, виды и типы компьютеров (hard)

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

Здравствуйте, fagot!
По первому вопросу читай выпуск 056 этой рассылки, там есть как найти серийный номер винта(и дискеты соответственно)
По второму вопросу
Для открытия функция 3dh
al=Access mode(0-read, 1-write, 2-both)
DS:DX=ASCIIZ строка полного пути файла
Выход
если бит С=1 AX=Error code, иначе AX=Handle
Тогда для записи используем ф-цию 40h
AX=40h
BX=Handle
CX=кол-во байт для записи
DS:DX-адрес буфера
Выход
если бит С=1 AX=кол-во реально записанных байт

Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 76

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Здравствуйте!
Значит, история такая: мой приятель купил винт Quantum AS на 10 гигов. И принёс мне — временно, пока он не купит все остальные части компа. А у меня его не видно.
BIOS-то этот винт детектит, а вот Виндоуз — ни в какую. Я джамперы и так и сяк ставил — безуспешно.
Быть может, дело в моей матплате Acorp для Pentium MMX ?
Она у меня старая, 1997 года. Если так, то мне перед тем, как тоже винт покупать, и матплату сменить? (А заодно и процессор, и корпус с AT на ATX. )
Кстати, какую лучше брать матплату для Дюрона?
Спасибо за внимание.
Константин.

Здравствуйте, Константин!
Кажись ты прав- твоя мать видит винты до 8 гиг
Хотя! Попробуй его на отдельный шлейф, причем строго Primary Master
А загружайся с другого, то есть типа с D
Для Дюрона лучше всего Soltek, хотя Canyon лучше, но дороже
И не пожалей лишних 3$ на корпус, возьми CodeGen- он пошире, охлаждение получше, и Дюрон с хорошим вентилятором точно влезет.

Отправил эксперт: Sensey
Эксперт отправил ответов (всего): 77

Экспертная группа: Модели, виды и типы компьютеров (hard)

с ЛЕМЪ РЮЙЮЪ ОПНАКЕЛЮ. лЮРЕПХМЯЙЮЪ ОКЮРЮ Asus CUEP2-M. мЮЯРПНИЙХ ОН СЛНКВЮМХЧ ГЮБНДЯЙХЕ. оНД DOCНЛ (МЕ ГЮЦПСФЮЪ Windows) Ъ МЕ БХФС ЛШЬЭ Х ХМНЦДЮ ОПНОЮДЮЕР ЙКЮБХЮРСПЮ. щРН ВРН МЕХЯОПЮБМНЯРЭ ЛЮРЕПХ ХКХ ЦДЕ-РН Ъ МЕСЯКЕДХК, МН МЮЯРПНИЙХ РН ГЮБНДЯЙХЕ. (Х ОНРНЛ МЮЯЙНКЭЙН Ъ ГМЮЧ ЛШЬЭ Х ЙКЮБХЮРСПЮ МХЙЮЙ МЕМЮЯРПЮХБЮЧРЯЪ Б BIOS). нОЕПЮЖХНММСЧ ЯХЯРЕЛС ОЕПЕЯРЮБХК, ПЮГЗЕЛШ ЛШЬХ Х ЙКЮБХЮРСПШ PS/2

гДПЮБЯРБСИРЕ, юКЕЙЯЕИ!
хГБХМХРЕ ГЮ БЯРПЕВМШИ БНОПНЯ, Ю бШ ДПЮИБЕП ДКЪ ЛШЬХ СЯРЮМЮБКХБЮКХ?
ю ЙКЮБХЮРСПЮ ХМНЦДЮ РЮЙ ЯЕАЪ БЕДёР.

Отправил эксперт: яРЮЯ
Эксперт отправил ответов (всего): 6

Экспертная группа: лНДЕКХ, БХДШ Х РХОШ ЙНЛОЭЧРЕПНБ (hard)

КАК
МОЖНО
ПОЛУЧИТЬ
ВСЮ
рассылку с начала.
Чтобы не повторять вопросы
не отнимать время
и неказаться совсем глупым

С уважением к Твоей просветительной деятельности
Олег

Олег Никуленков!
http://www.kalashnikoff.ru/, ссылка Ассемблер, там архив — ВСЕ номера рассылки «Ассемблер, это просто», и 33 (помоему) FAQ из 60 полных, все FAQ можно получить токо осенью

Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 51

Экспертная группа: Общие вопросы по программированию на Ассемблере под Win32

гДПЮБЯРБСИРЕ, СБЮФЮЕЛШЕ ЩЙЯОЕПРШ.
мЕДЮБМН С МЮЯ КНЙЮКЭМСЧ ЯЕРЭ ОПНРЪМСКХ. яПЮГС ФЕ БНГМХЙКЮ ОПНАКЕЛЮ, Р.Й. Ъ ПЮАНРЮЧ ХГ ОНД ДБСУ НЯЕИ — WinXP RC2 Х Win98. рЮЙ БНР, ЯСРЭ ОПНАКЕЛШ Б РНЛ, ВРН ХГ ОНД БХМ98 БЯё МНПЛЮКЭМН ПЮЯЬЮПХБЮЕРЯЪ, БЯё ОНКЭГНБЮРЕКХ ОЮОЙХ БХДЪР, Б МЕЙНРНПШЕ ЛНЦСР ОХЯЮРЭ ЦДЕ ПЮГПЕЬЕМН, Ю ОНД WinXP ОНВЕЛС РПЕАСЕРЯЪ ОЮПНКЭ ОПХВЕЛ Й ОЮОЙЕ IPC$. лНФЕР ЩРН МЕДНДЕКЙХ ЙЮЙХЕ, БЕДЭ НТХЖХЮКЭМНЦН ПЕКХГЮ ЕЫЕ МЕ БШЬКН. ю ЛНФЕР БЯё-РЮЙХ ЛНФМН ЙЮЙ-МХАСДЭ МЮЯРПНХРЭ ?
P.s. вРН-РН ОНУНФЕЕ МЮАКЧДЮЕРЯЪ Х Я Win2000 Professional SP1.
я СБЮФЕМХЕЛ, дЛХРПХИ.

гДПЮБЯРБСИРЕ, дЛХРПХИ!
б НОЕПЮЖХНМЙЮУ НЯМНБЮММШУ МЮ NT (NT 4.0, w2k, winXP) ОПХЛЕМЪЕРЯЪ ДПСЦЮЪ ЯХЯРЕЛЮ ОПНБЕПЙХ ОНКЭГНБЮРЕКЪ. р.Е. ВРНАШ ОНКСВХРЭ ДНЯРСО Й ПЮЯЬЮПЕМНЛС ПЕЯСПЯС МЕНАУНДХЛН ББНДХРЭ МЕ РНКЭЙН ОЮПНКЭ МН Х КНЦХМ. ЩРН ЛНФМН ОПХ ОНЛНЫХ ЯОЕЖХЮКЭМНИ ОПНЦПЮЛЙХ (e.g. Essential NetTools ЙНЛОЮМХХ «TamosSoft» www.tamos.com), КХАН МЮДН КНЦХМХРЭЯЪ Б win’9x Я ХЛЕМЕЛ Х ОЮПНКЕЛ ОНКЭГНБЮРЕКЪ ЙНРНПНЛС МЮ WinXP ПЮГПЕЬёМ ДНЯРСО Й ПЮЯЬЮПЕМНЛС ПЕЯСПЯС.
ю КСВЬЕ ОНЯРЮБЭРЕ ЯЕПБЕП, ОСРЮМХЖШ АСДЕР ЛЕМЭЬЕ.

Отправил эксперт: яРЮЯ
Эксперт отправил ответов (всего): 8

Экспертная группа: оНКЭГНБЮРЕКЭЯЙЮЪ ПЮАНРЮ Я Windows

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

Уважаемый fagot! Вот пример проги, замени ‘Текст’
text_mes db ‘Текст’ на любой свой, и придумай имя файла
filename db ‘c:\text.txt’,0

Отправил эксперт: Broken Sword
Эксперт отправил ответов (всего): 52

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Здравствуйте!
У меня усть вопросики :)
1) Где можно найти tasm32.exe, tlink32.exe & import32.lib
2) Сейчас я пользуюсь Масмом, но у меня есть проблемка с созданием экзешника вот, то что я делаю.
файл Digger.asm:

includelib c:\masm\lib\kernel32.lib
extrn _imp_ExitProcess@4:dword
ExitProcess equ _imp_ExitProcess@4

.386
.model flat,stdcall
option casemap:none
.data
;Инициализированные данные
.data?
;Неинициализированные данные
.code
start: ;Точка входа


push 0
call ExitProcess ;Выход из программы
end start
—————-
А потом я запускаю.
masm /Ic:\masm digger.asm
link digger.obj,digger.exe
—————-
Выводиться сообщение об шибке.
Microsoft (R) Segmented Executable Linker Version 5.31.009 Jul 13 1992
Copyright (C) Microsoft Corp 1984-1992. All rights reserved.

List File [nul.map]:
Libraries [.lib]:
Definitions File [nul.def]:
LINK : warning L4021: no stack segment

digger.obj(digger.asm) : error L2029: ‘_IMP_EXITPROCESS@4’ : unresolved external

There was 1 error detected
———————-
Может я неправильно создал kernal32.lib.
НО kernal32.lib от Visual C++ не подошёл.
ии я сделал
implib.exe kernal32.lib kernal32.dll
(предварительно скопировав dll в ту директорию где запускал implib :)

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

Или (что вернее) в данном случае у тебя просто отсутствует глобальная переменная _imp_ExitProcess@4

Или же masm все имена приводит к нижнему регистру.

Или же все вместе. :) не знаю точно.

Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html — Операционная система с нуля!)
Эксперт отправил ответов (всего): 53

Экспертная группа: Работа с MASM/TASM

А существуют ли разные всякие ассемблерные библиотеки? Где их можно поискать? (может есть сайты специальные?) Мне например нужен оконный интерфейс для ассемблерной проги. Не как Turbo Vision конечно, поскромнее, но желательно готовый.
PS прилиновать TV не предлогайте :)

Ну и обленился же ты!
Самому состряпать слабо?! Можно даже, используя объекты, благо TASM их поддерживает. Могу если что с этим помочь.

Отправил эксперт: Василий
Эксперт отправил ответов (всего): 23

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Здравствуйте,уважаемые эксперты. ) :)
Ответьте, пожалуйста вот на такой вопрос:)как создать файл, что-нить записать в него, удалить файл с диска, памяти, переместить файл, скопировать?

Здравствуйте, Веселый Эдик!

Как много ты сразу хочешь знать.

Обрати свое внимание на следующие функции DOS:

int 21h
fn 3ch Create file via handle
fn 3dh Open file via handle
fn 3eh Close file via handle
fn 3fh Read from file via handle
fn 40h Write to file via handle
fn 41h Delete file

Функции копирования файлов в досе не существует. реализуется через чтение/запись.

Помимо функций, работающих черех handle есть еще функции работающие через FCB, ноони гораздо неудобнее!.

Отправил эксперт: Dron (http://spawnhole.narod.ru/asmos/asmos.html — Операционная система с нуля!)
Эксперт отправил ответов (всего): 54

Экспертная группа: Общие вопросы по программированию на Ассемблере под DOS

Подписаться на рассылки

Форма подачи вопроса

ВНИМАНИЕ. Пожалуйста, НЕ высылайте один вопрос сразу нескольким подгруппам! Дополнения к вопросам, на которые эксперт уже ответил НЕ следует направлять ведущему рассылки (я не успеваю!). Просто скомбинируйте первый вопрос и дополнение к нему, а затем заново отправьте его, используя приведенную ниже форму!

Нажимайте кнопку «Отправить» только ОДИН раз и дождитесь полной загрузки страницы, иначе вопрос будет продублирован!

Ведущий рассылки,

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

Вопрос 78. Файловая система MS DOS, функции с использованием FCB и дескриптора

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

o Ряд концентрических колец, называемых дорожками;

o Дорожки делятся радиально на сектора;

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

Дисковый том в MS DOS

Все типы дисков используют размер сектора 512 байт в MS DOS.

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

Дисковые сектора определяются магнитной информацией, которую записывает утилита форматизации диска. Информация включает идентификационный номер каждого сектора. BIOS нумерует сектора 1-8, 1-9 или 1-15, в зависимости от емкости диска. Дорожки не маркируются, вместо этого они определяются механически по смещению головки чтения/записи от внешнего края диска. Дорожки нумеруются от 0 до 39 для дискет диаметром 5 1/4 дюйма, а для дисков большей емкости их может быть больше. Дисковые функции BIOS обращаются к определенному сектору, указывая номера дорожки и сектора. Однако функции DOS рассматривают все сектора диска, как одну цепь, которая нумеруется подряд, начиная от 0, поэтому каждый сектор имеет свой логический номер сектора.

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

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

Hаконец, далее идут две небольшие программы DOS IBMBIO.COM и IBMDOS.COM, которые считываются при старте и обеспечивают компьютер возможностями необходимыми для нахождения и загрузки файла COMMAND.COM.

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

Файловая система

Диск использует таблицу размещения файлов (FAT) для отведения дискового пространства файлам и хранения информации о свободных секторах. Из соображений безопасности на всех дисках хранятся две копии FAT. Они хранятся последовательно, в секторах с самыми младшими доступными логическими номерами, начиная со стороны 0, дорожки 0, сектора 2 (сектор 1 также занят записью начальной загрузки). Число секторов, занимаемых FAT определяется размером и типом диска

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

Kаждая позиция в таблице размещения файлов соответствует определенной позиции кластера на диске. Обычно файл занимает несколько кластеров и запись в каталоге файлов содержит номер стартового кластера, в котором записано начало файла. Просмотрев позицию FAT, соответствующую первому кластеру, DOS находит номер кластера, в котором хранится следующая порция этого файла. Этому кластеру соответствует своя запись в FAT, которая в свою очередь содержит номер следующего кластера в цепочке. Для последнего кластера, занятого файлом FAT содержит значения от FF816 до FFF16.

Hеиспользуемым (или освобожденным) кластерам записывается значение 000, а плохим секторам — FF716. Hаконец, значения от FF016 до FF716 приписываются резервным кластерам.

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

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

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

MS DOS 3.0 может создавать FAT с записями размером 16 бит. Такие записи необходимы для фиксированных дисков размером более 10M, которые имеют больше, чем 4086 кластеров.

Для нахождения следующего кластера файла:

1. Умножить номер кластера на 1.5.

2. Прочитать 2 байта с полученным смещением (округляя вниз).

3. Если номер кластера четный, то взять младшие 12 бит, иначе взять старшие 12 бит.

Для преобразования номера кластера в логический номер сектора:

1. Вычесть 2 из номера кластера.

2. Умножить результат на число секторов в кластере.

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

Фиксированный диск может содержать до четырех корневых каталогов, если он разбит на разделы, хотя MS DOS «видит» только один корневой каталог. Kаталоги могут иметь различные размеры, в зависимости от размера диска и его разбиения на разделы. В следующей таблице приведены размеры и позиции корневых каталогов для разных типов дисков:

Тип диска Размер каталога Число элементов Hачальный сектор
дискета 160K 4 сектора
дискета 180K 4 сектора
дискета 320K 7 секторов
дискета 1.2M 14 секторов
жесткий 10M переменные
жесткий 20M переменные

В зависимости от разбиения на разделы фиксированный диск может иметь различные размеры каталога и номер начального сектора. Если весь диск отведен для MS DOS, то на XT и AT под корневой каталог отводится 32 сектора, что позволяет иметь в нем 512 элементов.

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

Таким образом в каждом секторе может храниться информация о 16-ти элементах каталога. Kаждое 32-байтное поле разбито следующим образом:

Биты 0-7 8-10 12-21 22-23 24-25 26-27 28-31
Значение Имя файла Расширение файла Атрибут файла Зарезервировано Время последнего доступа к файлу Дата последнего доступа к файлу Hачальный кластер Размер файла

Точка между именем файла и его 3-байтным расширением не хранится. Все поля выровнены на левую границу, а пустые байты заполняются пробелами (код ASCII 32). Атрибут файла определяет является ли файл скрытым, защищенным от записи и т.д. Он определяет также специальные элементы каталога, такие как подкаталоги или метка тома. Информация о времени и дате упакована, поэтому для чтения этих значений требуются битовые операции.

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

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

Дескриптор файла – 16 битовое беззнаковое целое, используемое DOS и программами для обращения к файлам.

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

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

Метод FCB:

Функция: 1116 прерывания 2116 — ищет первое появление файла.

Порядок вызовов: в DS:DX имя файла или путь на неоткрытый FCB.

При возврате AL будет содержать 0, если файл найден, и FF — если нет. DTA заполняется информацией из каталога. Для обычных FCB первый байт DTA содержит номер накопителя (1 = A и т.д.), а следующие 32 байта содержат элемент каталога. Для расширенного FCB первые 7 байтов файла копируются в первые 7 байтов расширенного FCB, восьмой байт указывает на накопитель, а следующие 32 байта – элемент каталога.

;—в сегменте данных

FCB DB 1,’NEWDATABAK’,25DUP(0)

MOV AH,11H ;функция поиска в каталоге

LEA DX,FCB ;указываем на FCB

CMP AL,0 ;успешно?

JNE NO_FILE ;если нет, то процедура обработки ошибки

LEA BX,DTA ;теперь DS:BX указывает на элемент каталога

После использования функции 1116 можно использовать функцию 1216 для поиска следующих подходящих элементов, когда имя файла содержит джокеры. В данном случае в имени файла допустим только символ «?», но не «*». Эта функция работает в точности так же, как и первая, и если найден второй файл, то информация о первом файле в DTA будет уничтожена повторной записью.

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

Функция: 4E16 прерывания 2116 ищет файл с данным именем.

Порядок вызова: DS:DX должны указывать на строку, дающую путь файла. Hапример, B:\EUROPE\FRANCE\PARIS указывает на файл PARIS. Строка может содержать до 63 символов и завершаться символом ASCII 0. Имя файла может содержать джокеры, включая как «?», так и «*». Поместите атрибут файла в CX; если он обычный то 0, следует произвести анализ ошибки.

При возврате устанавливается флаг переноса, если файл не найден. Если файл найден, то функция заполняет DTA информацией о файле. Отметим частный случай использования DTA методом дескриптора файлов — обычно, DTA используется функциями MS DOS для работы через FCB. Первые 21 байт DTA зарезервированы DOS для поиска следующих совпадающих файлов. Двадцать второй байт дает атрибут файла, за ним следуют два байта, содержащие время и еще два байта содержащие дату. Следующие 4 байта содержат размер файла (младшее слово сначала). И, наконец, дается имя файла в виде строки переменной длины, заканчивающейся байтом ASCII 0. Точка (ASCII 46) разделяет имя и расширение и не один из этих элементов не заполнен пробелами.

;—в сегменте данных

PATH DB ‘B:FRANCE\PARIS\4EME’,0

MOV AH,4EH ;номер функции

LEA DX,PATH ;DS:DX указывают на путь

MOV CX,0 ;обычный атрибут файла

INT 21H ;ищем файл

JC NO_FILE ;уход, если не найден

LEA BX,DTA ;DS:BX указывают на DTA

MOV AL,[BX]+21 ;теперь атрибут файла в AL

Следующее появление имени файла (когда используются джокеры) ищется с помощью функции 4FH прерывания 2116. Она готовится в точности так же, как и функция 4EH, при этом указатель DTA не должен меняться. Kогда других совпадений не найдено, то устанавливается флаг переноса, а в AX появляется 18.

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ — конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой.

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

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰).

запись последовательного файла через FCB

English translation: sequential file write using FCB

03:00 Apr 1, 2005
Russian term or phrase: запись последовательного файла через FCB
меня тут вот что смущает
сами же программеры перевели так:
‘Sequence write of file through FCB’

так последовательная запись или последовательный файл? контекста нет.
айдиаз.

спасибо!

zmejka

Local time: 15:02
English translation: sequential file write using FCB
Explanation:
Последовательная ЗАПИСЬ. Файлы на диске (к которым относится FCB, file control block) всегда одни и те же, а доступ к ним может быть организован произвольно (random access) или последовательно (sequential access).

Но самый простой перевод это

sequential file write using FCB

Вам не придется разбираться, что к чему относится =)

MS-DOS Команда для создания *.txt файла с вложенным в него текстом

copy con имяфайла. txt

Вводишь всю необходимую информацию, когда заканчиваешь — жмешь F6 или Ctrl+Z. Такой способ поможет запиндюлить в файл не одну строку, а несколько.

Главное помнить: текст на русском языке вписанный подобным образом блокнотом отобразится в виде иероглифов, т. к. у DOS и Windows разные кодировки. Для вывода на экран такого файла в DOS необходимо набрать:
type имяфайла. txt

Также, конкретную описанную задачу можно выполнить строкой:

Если нужно к файлу добавить что-то, то вместо > надо использовать >>:

Dos fn 15h: писать последовательный файл через fcb

Assembler для начинающих

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

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

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

MS-DOSMS-DOSMS-DOS Microsoft Disk Operating System (дисковая ОС от Microsoft) коммерческая операционная система для персональных компьютеров фирмы Microsoft. — презентация

Презентация была опубликована 6 лет назад пользователемimg0.liveinternet.ru

Похожие презентации

Презентация на тему: » MS-DOSMS-DOSMS-DOS Microsoft Disk Operating System (дисковая ОС от Microsoft) коммерческая операционная система для персональных компьютеров фирмы Microsoft.» — Транскрипт:

2 MS-DOS Microsoft Disk Operating System (дисковая ОС от Microsoft) коммерческая операционная система для персональных компьютеров фирмы Microsoft. MS-DOS самая известная ОС из семейства DOS, установленная на большинстве PC-совместимых компьютеров. Со временем она была заменена различными вариантами операционной системы Windows.

3 История* 1975, январь. Журнал «Popular Electronic» объявляет о выпуске набора для сборки микрокомпьютера Altair компании MITS на чипе i , февраль. Пол Аллен приезжает в MITS и представляет разработанный Биллом Гейтсом BASIC-интерпретатор для Altair. 1975, март. Стив Джобс и Стив Возняк организуют компьютерный клуб в г.Менло-Парк, штат Калифорния. 1975, август. Билл Гейтс и Пол Аллен организуют товарищество Micro- Soft. 1979, декабрь. Годовой объём продаж Microsoft: $. Количество служащих: 25. Продукция: трансляторы языков BASIC, FORTRAN и Cobol. 1980, апрель. Тим Паттерсон (Seattle Computer Products) начинает разрабатывать операционную систему для чипа i8086. __________ * Источник: Дениэл Ичбиа, Сьюзен Кнепер, «Билл Гейтс и сотворение Microsoft», Р-н-Д: Феникс, 1997

4 История 1980, август. Представители IBM приезжают в Microsoft. Гейтс подписывает контракт на разработку BASIC-интерпретатора и даёт рекомендации в отношении спецификаций микрокомпьютера. 1980, сентябрь. IBM предлагает написать трансляторы языков BASIC, FORTRAN, Cobol и Pascal для планируемого компьютера IBM. Тим Паттерсон демонстрирует в Microsoft свою 86-DOS, написанную для чипа i8086. Microsoft принимает решение о разработке на её базе ОС для микрокомпьютера IBM. 1980, октябрь. Microsoft покупает права на 86-DOS. Microsoft представляет IBM предложение о разработке трансляторов и операционной системы. 1980, ноябрь. Micorsoft подписывает контракт с IBM и получает первый опытный образец IBM PC. 1980, декабрь. Годовой объём продаж Microsoft: $. Количество служащих: 40.

5 История 1981, февраль. Первый запуск MS-DOS на опытном образце IBM PC. 1981, апрель. Тим Паттерсон поступает на работу в Microsoft. 1981, август. Объявление о создании IBM PC. Microsoft выпускает MS- DOS версии 1.0. Главой отдела по IBM PC назначается Дон Эстридж. 1981, декабрь. Годовой объём продаж Microsoft: $. Количество служащих: , март. IBM объявляет о создании PC XT с жёстким диском 10 Мбайт. Microsoft публикует MS-DOS 2.0 для PC XT. 1983, ноябрь. Microsoft представляет Windows. Этот графический интерфейс поддержан 23 производителями микрокомпьютеров, но – не IBM. 1984, август. IBM внедряет в производство PC AT с жёстким диском 20 Мбайт. Microsoft выпускает поддерживающую его MS-DOS , ноябрь. Выпуск MS-DOS 3.1 с поддержкой сети. 1991, июнь. Выпуск MS-DOS , апрель. В модернизированной версии Windows 3.1 усовершенствовано управление файлами и улучшен внешний вид.

6 Поздние версии 4.01 – первая полностью и официально русифицированная версия (май 1988г) – последняя (до повсеместного перехода на Windows 95) широко применявшаяся версия DOS (1994г).

7 Подсистемы MS-DOS Файловая система Система управления памятью Система управления программами Система связи с драйверами устройств Система обработки ошибок Служба времени Система ввода/вывода консоли оператора …

8 Состав MS-DOS BIOS (Basic Input-Output System) Блок начальной загрузки Файл io.sys (ibm.com, drbios.sys)– модуль взаимодействия с BIOS Файл msdos.sys (ibmdos.com, drdos.sys) – модуль обработки прерываний Файл command.com – командный процессор Утилиты (внешние команды) Драйверы устройств Файл config.sys – файл конфигурации системы Файл autoexec.bat – файл автозапуска программ при загрузке ОС

9 Файловая система Логические диски: A,B,C,D…Z Файловая структура на дисках: –Boot-сектор (сектор 0) –FAT (секторы 1-18, основная и дублирующая таблицы) –Root Directory (секторы 19, 20) –Io.sys, msdos.sys (секторы 33,…) –Область данных

10 Загрузка MS-DOS BIOS: –POST, Power On Self Testing –Поиск и загрузка Блока начальной загрузки (БНЗ) БНЗ загружает io.sys Io.sys: –Загружает и настраивает msdos.sys –Определяет состояние подключённых устройств –Инициализирует подключённые устройства –Загружает необходимые драйверы устройств –Передаёт управление msdos.sys Msdos.sys: –Настраивает рабочие таблицы –Загружает драйверы, указанные в config.sys –Загружает командный процессор command.com Command.com: –Выполняет команды, содержащиеся в autoexec.bat –Выдаёт на экран системную подсказку (system prompt) –Ожидает команд пользователя

11 Запуск вычислительного процесса — путём ввода спецификаций программного (.EXE,.COM,.BIN) или пакетного (.BAT) файла, расположенного в текущем каталоге текущего устройства

12 Команды работы с каталогом DIR – просмотреть содержимое MKDIR (MD) – создать каталог CHDIR (CD) – перейти в каталог RMDIR (RD) – удалить каталог

13 Команды работы с файлами TYPE – вывести содержимое на экран DELETE — удалить COPY — копировать RENAME — переименовать

14 Команды для работы с дисками FORMAT — форматировать DISKCOPY – дублировать дискету VOL – вывести метку диска LABEL – создать/заменить метку диска CHKDSK – проверить диск SYS – создать загрузочную (системную) дискету

15 Команды конфигурирования системы и управления устройствами CLS – очистить экран DATE – показать/установить дату PATH – указать пути поиска PROMPT – изменить формат приглашения TIME – показать/установить время VER – вывести версию ОС

16 Файловый менеджер Norton Commander

17 Прерывания BIOS 00h: Деление на ноль. 01h: Пошаговое. 02h: Немаскируемое. 03h: Точка прерыв. 04h: Переполнение. 05h: Печать экрана. 06h: (резерв) 07h: (резерв) 08h: Таймер. 09h: Клавиатура. 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: Символы графики

18 Прерывания DOS 20h: Завершить программу 21h: Сервис DOS 25h/26h: Абсолютные чтение/запись диска 27h: Завершиться, но остаться резидентным 28h: Квант времени DOS (НЕТ В ДОКУМЕНТАЦИИ)28h: Квант времени DOS (НЕТ В ДОКУМЕНТАЦИИ) 2eh: Выполнить команду DOS (НЕТ В ДОКУМЕНТАЦИИ)2eh: Выполнить команду DOS (НЕТ В ДОКУМЕНТАЦИИ) 2fh: Мультиплексное прерывание (спулинг печати)2fh: Мультиплексное прерывание (спулинг печати)

19 INT 21H: сервис DOS Это прерывание служит главным входом большинства функций DOS. Программа, запрашивающая сервис DOS, должна подготовить всю необходимую информацию в регистрах и управляющих блоках, указать в регистре AH номер желаемой функции DOS и затем вызвать прерывание INT 21H. Функция DOS 00H: завершить программу Функция DOS 01H: ввод с клавиатуры Функция DOS 02H: вывод на дисплей Функция DOS 03H: ввод AUX Функция DOS 04H: вывод AUX Функция DOS 05H: вывод на принтер Функция DOS 06H: Обмен с консолью Функция DOS 07H: Нефильтрующий консольный ввод без эхаФункция DOS 07H: Нефильтрующий консольный ввод без эха Функция DOS 08H: Консольный ввод без эха Функция DOS 09H: Выдать строку Функция DOS 0aH: буферизованный ввод строки Функция DOS 0bH: проверить статус ввода Функция DOS 0cH: ввод с очисткой Функция DOS 0dH: Сбросить диск Функция DOS 0eH: Выбрать умалчиваемый диск DOS Функция DOS 0fH: открыть файл через FCB Функция DOS 10H: Закрыть файл через FCB Функция DOS 11H: Найти 1-й совпадающий файл через FCBФункция DOS 11H: Найти 1-й совпадающий файл через FCB Функция DOS 12H: Найти следующий совпадающий файл через FCBФункция DOS 12H: Найти следующий совпадающий файл через FCB Функция DOS 13H: Удалить файл через FCB Функция DOS 14H: читать последовательный файл через FCBФункция DOS 14H: читать последовательный файл через FCB Функция DOS 15H: писать последовательный файл через FCBФункция DOS 15H: писать последовательный файл через FCB (недокументировано) Функция DOS 16H: создать файл через FCB Функция DOS 17H: Переименовать файл через FCB Функция DOS 19H: дать умалчиваемый диск DOS Функция DOS 1aH: установить адрес DTA Функция DOS 1bH: дать информацию FAT (текущий диск) Функция DOS 1cH: дать информацию FAT (любой диск) Функция DOS 21H: читать запись произвольного файла Функция DOS 22H: писать запись произвольного файла Функция DOS 23H: дать размер файла через FCB Функция DOS 24H: установить адрес блока произвольного файлаФункция DOS 24H: установить адрес блока произвольного файла Функция DOS 25H: установить вектор прерывания Функция DOS 26H: создать префикс программного сегментаФункция DOS 26H: создать префикс программного сегмента Функция DOS 27H: читать блок произвольного файла Функция DOS 28H: писать блок произвольного файла Функция DOS 29H: Разобрать имя файла Функция DOS 2aH: дать дату DOS Функция DOS 2bH: установить дату DOS Функция DOS 2cH: дать время DOS Функция DOS 2dH: установить время DOS Функция DOS 2eH: установить/сбросить переключатель верификацииФункция DOS 2eH: установить/сбросить переключатель верификации Функция DOS 2fH: дать текущий DTA Функция DOS 30H: дать номер версии DOS Функция DOS 31H: завершиться и остаться резидентным — — KEEPФункция DOS 31H: завершиться и остаться резидентным — — KEEP Функция DOS 32H: дать дисковую информацию DOS (недокументировано)Функция DOS 32H: дать дисковую информацию DOS (недокументировано) Функция DOS 33H: установить/опросить уровень контроля прерывания DOSФункция DOS 33H: установить/опросить уровень контроля прерывания DOS Функция DOS 34H: адрес статуса реентерабельности DOS Функция DOS 35H: дать вектор прерывания Функция DOS 36H: дать свободную память диска …

20 Расчёт сложных процентов Дано: капитал Q вкладывается в предприятие с ежегодным приростом D%. Определить: текущую величину капитала в течение первых N лет.

21 Расчёт сложных процентов: BASIC-программа 10 PRINT Расчёт сложных процентов 20 INPUT Введите Q, D, N, Q, D, N 30 D1=1+D/ J=1 50 Q=Q*D1 60 PRINT J,Q 70 J=J+1 80 IF J

22 Расчёт сложных процентов: ASM-программа TITLERASCHET.ASM; Расчёт сложных процентов STACKSGSEGMENTSTACK DW64 DUP (?) STACKSGENDS DATASGSEGMENTDATA ; объявление переменных VVQDBВведите величину начального капитала (до ) VVDDB10,13,Введите процент годового прироста DB10,13,% VVNDB10,13,Введите количество расчётных лет DB10,13,% Q0DW? D ? D1DW? N ? J 1 Q ? BUFDB5,0,0,0,0,0,0,0 VIV1DB год капитал DB10,13,%

23 SRBDB14 DUP(0), $ SRDB6 DUP(0), $ SRKDB10, 13, $ FT10DW1 TENDW10 STODW100 DATASEGENDS CODESGSEGMENTCODE MAINPROCFAR ; главная процедура ASSUMECS:CODESG, DS:DATASG, SS:STACKSG ; назначение ;сегментных регистров в сегменте кодов PUSHDS ; запись адреса SUBAX, AX ; префикса программного PUSHAX ; сегмента в стек MOVAX, DATASG ; инициализация содержимого MOVDS, AX ; регистра сегмента данных. ДАЛЕЕ – ;СОБСТВЕННО ТЕКСТ ПРОГРАММЫ MOVAH, 9 ; запрос на ввод Q MOVDX, offset VVQ INT21H MOVAH, 0Ah ; ввод Q MOVDX, offset BUF INT21H CALLSTR2BIN MOVQ0, D1 MOVAH, 9 ; запрос на ввод D MOVDX, offset VVD

24 INT21H MOVAH, 0AH ; ввод D MOVDX, offset BUF INT21H CALLSTR2BIN MOVD, D1 MOVAH, 9 ; запрос на ввод N MOVDX, offset VVN INT21H MOVAH, 0AH ; ввод N MOVDX, offset BUF INT21H x3850CALLSRT2BIN MOVN, D1 MOVAX, D MOVD1, AH ADDD1, 100 ; расчёт D1 = (1 + D/100) * 100 MOVAX, Q0 MOVQ, AX MOVAH, 9 MOVDX, offset VIV1 INT21H RST:MOVAX, Q ; расчёт Q = Q * D1 MULD1 4235DIVSTO MOVQ, AX MOVAX, J

25 CALLBIN2STR MOVAH, 9 ; вывод года MOVDX, offset SR INT21H MOVAH, 9 ; вывод пробела MOVDX, offset SRB INT21H MOVAX, Q ; вывод прибыли CALLBIN2STR MOVAH, 9 MOVDX, offset SR INT21H MOVAH, 9 ; перевод строки MOVDX, offset SRK INT21H INCJ ; j =j + 1 MOVAX, J CMPAX, N ; сравнение J с N JLERST ; условный переход по I

Dos fn 15h: писать последовательный файл через fcb

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 1154
Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 457
solowey
Статус: Бакалавр
Рейтинг: 235
Перейти к консультации №:

Здравствуйте уважаемые эксперты! Помогите пожалуйста с ответами на вопросы(на некоторые я попробую
ответить, а ответы на остальные честно говоря не знаю, по возможности поправьте меня пожалуйста):

1. Какие в MS-DOS есть способы обращения к файлам. (Насколько я понимаю — это обращения к записям и
если это так, то существуют два способа: последовательный и произвольный).

2. Какие существуют методы управления файловыми функциями.
(Я знаю только метод управления с помощью описателя и где-то читал о FCB, но я не знаю, что это такое. )

3. Как организовать прямой доступ к файлу, используя Handle-ориентированные функции обслуживания файлов.
(при создании, открытии или удалении файла в DS:DX мы помещаем путь к файлу и его имя, а в остальных функциях просто помещаем в BX описатель, т.е Handle файла, который был получен после создания/открытия файла.

4. Как организовать работу с устройствами ввода-вывода, кроме дисков, используя файловые функции. (?)

5. Что такое указатель файла и какие существуют функции для работы с ним.
(не знаю как по умному написать, что такое указатель, а для работы с ним используется функция 42h,
но с ней чесно говоря ещё не работал)

6. Как определить размер файла на диске. (?)

Состояние: Консультация закрыта

Здравствуйте, Николай // Programmator .
мой ответ будет такой
1. К файлу можно обращаться с помощью имени, полного имени, спецификации. подробнее например URL >>пример
2. через описатель и через FCB. подробнее URL >>FCB
3. сами ответели
4. через чтандартные описатели 3-AUX (COM1-обычно), 4-PRN (LPT1-обычно)
5. число, номер который идентифицирует структуру внутри ОС для работы с файлом (42р + открытие и закрытие тоже)
6. вызвать функцию 42h c AL=2, CX:DX=0:0 получите длину

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Здравствуйте, Николай // Programmator .

(2)
В DOS есть 2 группы функций для работы с файлами:
— через FCB (File Control Block) — устаревшие, забудьте о них, как о страшном сне;
— Handle-ориентированные (современные)

(1)Последовательный и произвольный доступ, (5) указатель файла.
Насколько я понимаю, Вы имеете в виду указатель текущей позиции файла (read/write pointer). А указатель файла — иногда так называют описатель файла (handle).

После открытия/создания файла указатель текущей позиции устанавливается на начало файла, каждая операция ввода/вывода продвигает его на соответствующее кол-во байт вперед (к концу файла). Иначе говоря, чтение и запись файла осуществляется начиная с текущей позиции, по окончании указатель продвигается на записанное/прочитанное кол-во байт. Указатель текущей позиции можно передвигать с помощью функции LSEEK (AH=42h).

После того, как Вы открыли файл, все операции осуществляются последовательно, если только Вы не перемещаете указатель текущей позиции файла. Таким образом, в DOS только от Вас зависит, как обращаться к файлу — последовательно (не меняя текущую позицию с помощью ф-и LSEEK) или произвольно — устанавливая перед операцией текущую позицию в требуемое значение.

(3)
— Открываете (AH=3Ch) или создаете (AH=3Dh) файл, получаете описатель (handle) файла в регистре AX, запоминаете его где-нибудь. Если CF=1, то произошла ошибка.
— читаете (AH=3Fh)/пишете (AH=40h) файл.
— функция lseek (AH=42h) позволяет переместить указатель текущей позиции в произвольное место файла.
— закрываете файл (AH=3Eh)

(4) стандартные описатели (handle) устройств:
0 — стандартное устройство ввода (обычно, клавиатура)
1 — стандартное устройство вывода (обычно, экран)
2 — стандартное устройство вывода ошибок (всегда — экран)
3 — стандартное последовательное устройство (COM1)
4 — стандартный принтер (LPT1)

(6) для определения размера файла переместите указатель текущей позиции в конец:

; определяем длину файла
mov ax,4202h ; AL = 2 — смещение задается от конца файла
mov bx,[hFile]
xor cx,cx ; CX:DX — смещение от конца файла = 0
xor dx,dx
int 21h
jc _lseek_error
; на выходе DX:AX — новая текущая позиция от начала файла. В данном случае — размер файла
mov word ptr [nFileSize],ax
mov word ptr [nFileSize+2],dx

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