Dos fn 4fh найти следующий совпадающий файл

DOS Fn 4cH: завершить программу — EXIT

Выход

Вход

DOS Fn 4bH: выполнить или загрузить программу — EXEC

Выход

Вход

DOS Fn 4aH: Сжать или расширить блок памяти

Выход

Вход

  • AH = 49H
  • ES = сегментный адрес (параграф) освобождаемого блока памяти
  • AX = код ошибки если CF установлен

Описание:

Освобождает блок памяти, начинающийся с адреса ES:0000. этот блок становится доступным для других запросов системы. Вообще говоря, вы должны освобождать лишь те блоки памяти, которые вы получили через функцию 48H распределить память. Родитель отвечает за освобождение памяти порожденных процессов. Тем не менее, ничто не препятствует вам освобождать память чужих проыессов.

  • AH = 4aH
  • ES = сегмент распределенного блока памяти
  • BX = желаемый размер блока в 16-байтовых параграфах
  • AX = код ошибки если CF установлен
  • BX = наибольший доступный блок (если расширение неудачно)

Описание:

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

Замечание:

функция 31H (KEEP) и INT 27H (TSR) сжимают блок по адресу PSP.

  • AH = 4bH
  • DS:DX = адрес строки ASCIIZ с именем файла, содержащего программу
  • ES:BX = адрес EPB (EXEC Parameter Block — блока параметров EXEC)
  • AL = 0 = загрузить и выполнить
  • AL = 3 = загрузить программный оверлей
  • AX = код ошибки если CF установлен

Описание:

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

DS:DX указывает на строку ASCIIZ в форме: «d:путьимяфайла»,0. если диск или путь опущены, они подразумеваются по умолчанию.

ES:BX указывает на блок памяти, подготовленный как EPB, формат которого зависит от запрошенной подфункции в AL.

AL=0 EXEC: так как родительская программа первоначально получает всю доступную память в свое распоряжение, вы должны освободить часть памяти через функцию 4aH до вызова EXEC (AL=0). обычная последовательность:

1. Вызовите функцию 4aH с ES=сегменту PSP и BX=минимальному объему памяти, требуемой вашей программе (в параграфах).

2. Подготовьте строку ASCIIZ с именем вызываемого программного файла и установите DS:DX на первый символ этой строки.

3. Подготовьте блок параметров EXEC со всеми необходимыми полями.

4. Сохраните текущие значения SS, SP, DS, ES и DTA в переменных, адресуемых через регистр CS (CS — это единственная точка для ссылок после того, как EXEC вернет управление от ребенка).

5. Выдайте вызов EXEC с AL=0.

6. Восстановите локальные значения SS и SP.

7. Проверьте флаг CF, чтобы узнать, не было ли ошибки при EXEC.

8. Восстановите DS, ES и локальную DTA, если необходимо.

9. Проверьте код выхода через функцию 4dH WAIT (если надо).

Все открытые файлы дублируются, так что ребенок может обрабатывать данные как через описатели файлов, так и через стандартный в/в. режимы доступа описателей дублируются, но любые активные блокировки файлов не будут относиться к ребенку. См. функцию 5cH. после возврата из ребенка, векторы INT 22H Terminate, INT 23H Ctrl-Break и INT 24H Critical Error восстанавливаются в их предыдущие значения.

AL=3 LOAD: Эта подфункция используется для загрузки «оверлея».

DS:DX указывает на ASCIIZ имя файла, а ES:BX указывает на «LOAD»-версию блока параметров EXEC. Главное значение этой подфункции в том, что она считывает заголовок EXE и выполняет необходимые перемещения сегментов, как это требуется для программ .EXE.

Основы языка Assembler: Методические указания к лабораторным работам

Для того, чтобы оценить ресурс, необходимо авторизоваться.

В методических указаниях приведено описание основных команд языка Assembler для ввода и вывод данных, работы с массивами, арифметическим сопроцессором и файлами. Методические указания предназначены для студентов направления подготовки бакалавров по направлению 230100.62 «Информатика и вычислительная техника», изучающих курс «Машинно-ориентированные языки».

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

AL=0Fh – установить логическое устройство

Версии: DOS 2.00 и выше. DOS, функция 45h Дублировать описатель файла

BX – существующий описатель файла

CF=0, если функция выполнена успешно

AX – новый описатель файла, дублирующий оригинал

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

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

Версии: DOS 2.00 и выше. DOS, функция 46h Переназначить описатель

BX – целевой описатель файла (должен уже существовать)

CX – исходный описатель файла (должен уже существовать)

CF=0, если функция выполнена успешно

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

Описание. Заставляет описатель файла (handle) ссылаться на другой файл или устройство. Если описатель в CX (источник) открыт, он закрывается, а затем становится дубликатом описателя в BX (назначения). Иными словами, описатели в CX и BX будут ссылаться на один и тот же физический файл или устройство.

Версии: DOS 2.00 и выше. DOS, функция 47h Получить текущее оглавление DOS

DS:SI – адрес локального буфера для результирующего пути – 64 байта

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

CF=0, если функция выполнена успешно

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

Описание. В буфер по адресу DS:SI помещается в форме ASCIZ путь текущего оглавления для диска, указанного в DL. Путь возвращается в формате: «путь\оглавление»,0. Впереди не подставляется буква диска, а сзади не подставляется символ «\». Например, если текущим является корневое оглавление, эта функция вернет пустую строку (DS: [SI]=0).

Версии: DOS 2.00 и выше. DOS, функция 48h Выделить память

BX – запрошенное количество памяти в 16-байтных параграфах

CF=0, если функция выполнена успешно

AX – сегментный адрес распределенного блока

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

BX – размер максимального доступного блока памяти (в параграфах)

Описание. Распределяет блок памяти длиной BX параграфов, возвращая сегментный адрес этого блока в AX (блок начинается с AX:0000). Если распределение неудачно, устанавливается флаг CF, в AX возвращается код ошибки, а BX содержит максимальный размер доступной для распределения памяти (в параграфах). Чтобы определить наибольший доступный блок, общепринято устанавливать BX=FFFFh перед вызовом. Распределение завершится с ошибкой, возвратив размер максимального блока памяти в BX.

Версии: DOS 2.00 и выше. DOS, функция 49h Освободить блок памяти

ES – сегментный адрес освобождаемого блока памяти

CF=0, если функция выполнена успешно

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

Описание. Освобождает блок памяти, начинающийся с адреса ES:0000. Этот блок становится доступным для других запросов системы. Вообще говоря, нужно освобождать лишь те блоки памяти, которые получены через функцию 48h (распределить память). Родитель отвечает за освобождение памяти порожденных процессов. Тем не менее, ничто не препятствует освобождать память чужих процессов.

Версии: DOS 2.00 и выше. DOS, функция 4Ah Изменить размер блока памяти

ES – сегмент распределенного блока памяти

BX – нужный размер блока в 16-байтных параграфах

CF=0, если функция выполнена успешно

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

BX – размер максимального доступного блока памяти (в параграфах)

Описание. Изменяет размер существующего блока памяти. Когда программа получает управление, функция 4Bh уже распределила блок памяти, начиная с PSP, который содержит всю доступную память. Чтобы освободить память для запуска порождаемых процессов, блок памяти, начинающийся с PSP, необходимо сначала сжать.

Функция 31h и INT 27h (TSR) сжимают блок по адресу PSP.

Версии: DOS 2.00 и выше.

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

DS:DX – адрес строки ASCIZ с именем файла, содержащего программу

ES:BX – адрес EPB (блока параметров EXEC)

AL=00h – загрузить и выполнить

AL=01h – загрузить, но не выполнять

AL=03h – загрузить программный оверлей

CF=0, если функция выполнена успешно

BX, DX не сохранены

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

Описание. Данная функция загружает в память и запускает программу, имя которой указано в регистрах DS:DX. Запущенная программа после завершения работы возвратит управление запускаемой. Если диск или путь не указаны, принимаются значения по умолчанию. ES:BX указывает на блок памяти, подготовленный как EPB, формат которого зависит от запрошенной подфункции в AL.

Версии: DOS 2.00 и выше. DOS, функция 4Ch Завершить программу

Описание. Возвращает управление от порожденного процесса его родителю, устанавливая код выхода (его можно опросить функцией 4Dh). Управление передается по адресу завершения в PSP завершающейся программы. Векторы Ctrl-Break и Critical Error восстанавливаются к старым адресам, сохраненным в родительском PSP.

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

Версии: DOS 2.00 и выше. DOS, функция 4Dh Получить код выхода программы

AH – код выхода последнего завершившегося процесса

AH=00h – нормальное завершение

AH=01h – завершение через Ctrl-Break INT 23h

AH=02h – завершение по критической ошибке устройства INT 24h

AH=03h – завершение через функцию 31h

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

Версии: DOS 2.00 и выше. DOS, функция 4Eh Найти первый совпадающий файл

DS:DX – адрес строки ASCIZ с именем файла (допускается использовать символы «?» и «*»)

CX – атрибут файла для сравнения

CF=0, если функция выполнена успешно

DTA заполнена данными (Таблица Б-10)

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

Описание. Если диск и/или путь не указаны, принимаются значения по умолчанию. Обобщенные символы «*» и «?» допускается использовать в имени файла и расширении.

Версии: DOS 2.00 и выше. DOS, функция 4Fh Найти следующий совпадающий файл

DS:DX – адрес данных, возвращенных предыдущей 4Eh (Найти первый файл)

Таблица Б-10. Формат данных в DTA

CF=0, если функция выполнена успешно

DTA заполнена данными

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

Описание. Эту функцию можно использовать после вызова 4Eh. Следующее имя файла, совпадающее по обобщенному имени и атрибуту файла, копируется в буфер по адресу DS:DX вместе с другой информацией (Таблица Б-10).

Примечание. Параметр DS:DX добавлен в DOS 3.0.

Версии: DOS 2.00 и выше. DOS, функция 52h Получить адрес векторной таблицы связи (Официально не документирована)

Выход: ES:BX – адрес векторной таблицы связи (Таблица Б-11)

Описание. Данная функция возвращает адрес векторной таблицы связи.

Версии: DOS 2.00 и выше. DOS, функция 54h Получить переключатель верификации DOS

AL=00h, если верификация выключена (OFF)

AL=01h, если верификация включена (ON)

Описание. Возвращает текущий статус верификации записи DOS. Если в AL возвращается 1, то DOS считывает обратно каждый сектор, записываемый на диск, чтобы проверить правильность записи. Функция DOS 2Eh позволяет установить/изменить режим верификации.

Версии: DOS 2.00 и выше. Таблица Б-11. Формат векторной таблицы связи

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

Dos fn 4fh: найти следующий совпадающий файл

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

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

Дата выхода: 2001-10-31

Попробовал использовать DOS Fn 4eH: Найти 1-й совпадающий файл. И след файл.

Такое описание (со входом разобрался):
Выход AX код ошибки если CF установлен
DTA заполнена данными (если не было ошибки)

Так вот, где лежит DTA? Вычитал: При запуске программы ее DTA устанавливается по смещению 80H относительно PSP. А вот с ней и не разобрался:( Про PSP чего-то написано, таблица и смещения. Выводил всё до кучи на экран и не нашёл нигде имени файла.
Вложил программку, которая всё выводит с моими комментариями. Занимаюсь асмом 3 дня, поэтому не судите строго:)

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

И ещё, где-то экспертам ответившим на мой вопрос надо чего-то ставить. Киньте в ответ ссылку где и чего. А то вы мне поможете, а я вам. тоже хочу:)

Ну ты что-то тут намудрил! Зачем какие-то манипуляции с сегментом.
Как DTA начиналось по адресу cs:80h, так и работай с этим адресом!
И вообще, прежде чем вызывать функцию 4fh, неплохо бы сначала вызвать 4eh.

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

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

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

Здравствуйте! 13 октября 2001 года, в магазине «Мир обуви» я купила осенние ботинки. 29 октября на них сломался каблук. В починку не берут. Могу ли я их вернуть в магазин. Чек сохранен. На нем написано: «гарантия на обувь 30 дней». Спасибо!

Здравствуйте, Алина!
А вы их переформатируйте.

Отправил эксперт: Painbringer (http://limanski.narod.ru — нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 207

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

Попробовал использовать DOS Fn 4eH: Найти 1-й совпадающий файл. И след файл.

Такое описание (со входом разобрался):
Выход AX код ошибки если CF установлен
DTA заполнена данными (если не было ошибки)

Так вот, где лежит DTA? Вычитал: При запуске программы ее DTA устанавливается по смещению 80H относительно PSP. А вот с ней и не разобрался:( Про PSP чего-то написано, таблица и смещения. Выводил всё до кучи на экран и не нашёл нигде имени файла.
Вложил программку, которая всё выводит с моими комментариями. Занимаюсь асмом 3 дня, поэтому не судите строго:)

И ещё, где-то экспертам ответившим на мой вопрос надо чего-то ставить. Киньте в ответ ссылку где и чего. А то вы мне поможете, а я вам. тоже хочу:)

Здравствуйте, DmitryK1!
Вот так оно и пишется.
Как я понял, techhelp у тя есть, и там посмотришь формат, в котором уся эта бадяга хранится (размер, атрибуты и т.п.).
З.Ы. только не надо говорить:»а она у меня точку рисует» — типа так надо. В смысле что какалог твой (если ты конечно не в корне ее запустишь) выглядит как то так
.
..
catalog1
catalog2
file1
и т.д.

Отправил эксперт: Painbringer (http://limanski.narod.ru — нечто наподобие домашней страницы)
Эксперт отправил ответов (всего): 208

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

Сейчас ответил на вопрос Михаила по поводу программы из урока 6 (разбор в уроке 7). Только я задумался — и перестал вообще что-то понимать. Насколько я помню, процессоры x86 при выполнении программ ы используют конвейер команд. Который имеет объем от 6-ти байт в 8088 до 10-ти (кажется). И везде написано, что когда команда помещена в конвейер, то никакие изменения в коде уже ничего изменить не могут. На чем, собственно, и основаны методы защиты от отладчиков. Причем конвейер сбрасывается только при выполнении команд передачи управления (jmp, call, int, ret и т.п.).
Тогда что происходит в нашем примере? По всему вышесказанному команда int 20h уже должна быть в конвейере ДО выполнения команды push ax! И должно происходить завершение программы. А она все равно выводит сообщение.
Может кто-нибудь это объяснить?

Здравствуйте, Ayl!
Во первых, я бы Вам довольно сильно рекомендовал пользоваться 4Ch-функцией
21h-прерывания для завершения программы или хотя-бы ret-ом что-ли. 20h-прерывание
оставлено лишь для совместимости и никто не поручится, что в следующей версии
DOS она все еще будет.
А насчет сообщения. Мне кажется, что Ваша программа все-таки завершается
после первого int 20h. Но Вы пихаете в стек 9090h. Я не знаю,конечно, зачем.
У меня есть подозрение, что после завершения верхней части передается управление и
на вторую. То есть обе команды int 20h выполняются. И конвейер тут не виноват!
З.Ы. Где Вы нашли этот кусок кода??

Отправил эксперт: baldr (http://www.dospage.fromru.com — Сайт об ОС DOS. Всем, кто любит эту ОС!)
Эксперт отправил ответов (всего): 4

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

Добрый день, уважаемые эксперты!
У меня к Вам следующий вопрос: поставлена задача перехвата клавиши Pause в C++, чтобы при нажатии она игнорировалась.
При решении мне кажется, что только при написании резидентной асм-вставки мы сможем перехватить клавишу, но также возникает другой вопрос: нет ли у клавиши Pause какого-нибудь отдельного флага, как, скажем, у Caps Lock, чтобы постоянно флаг просто возвра щать в 0?
Также я был бы очень благодарен, если кто-нибудь посоветовал, действително, грамотную книжку или доки по тому, что возвращают клавиши, желательно с таблицей.
Большое спасибо. Всего Вам самого наилучшего.

Здравствуйте, Questman!
Нет, Вы не правы. Вставка не обязательно должна быть на асме.
В Си есть ключевое слово interrupt , которое автоматически выполняет
все действия, которые делаются вручную на ассемблере при вызове и завершении
прерывания. То есть, если мы напишем примерно так:

void interrupt (*oldvect)(. ); //Объявляем переменную-функцию :)

А здесь у нас обработчик!

> //iret вставляется автоматически

void main(int argc, char *argv[])
<
oldvect=getvect(0x9);
setvect(0x9, int9); //А теперь у нас клавиатурка-то перехвачена!
Программа
setvect(0x9, oldvect); //Домой.
>

. то int9() будет вызываться при каждом нажатии почти любой
клавиши. Кроме: PrScr (прерывание 05h), Ctrl-Break или Ctrl-C (прерывание 1Bh),
и еще каких-то. Клавиша Pause, кажется, тоже не таким способом ловится. Но
это уже мелочи. А насчет флага — то это, извините, абсурд. Кто же Вам все
это дело возвратит, когда Ваша, да и все, практически, программы по нажатию
этой клавиши немножко. того . замерзают? А вообще-то, если перепрограммировать
контроллер прерываний, то можно перехватить нажатие практически любой клавиши.
Правда, вот, я этого делать пока не умею. А хотелось бы. может кто научит, а?
Кстати, по клавишам рекомендую поискать на http://www.Kalashnikoff.ru .
Кажется там есть ссылка на программу techHelp, в которой вообще много всего
полезного. Если там нет — извините.

Отправил эксперт: baldr (http://www.dospage.fromru.com — Сайт об ОС DOS. Всем, кто любит эту ОС!)
Эксперт отправил ответов (всего): 5

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

Здравствуйте уважаемые эксперты!
Недавно один человек спрашивал о редакторе для Asm и ему посоветовали Tasmed. Я ради интереса его тоже скачал(версия 1.98с), вот только одна проблема, загружаясь в Command Promt Only(Win98se). Он при попытке запустить из под него tasm,tlink,td или afdpro каждый раз вешает систему. Выходя из программы, он тоже каждый раз вешает систему.:(
Если данный редактор запустить из Win в режиме эмуляции MS-DOS, то все запускается, но при выходе постоянно возникают ошибки, либо окошко зависнет, либо получу сообщение об ошибке, типа:

«В процессе работы программы возникла нестандартная ситуация»
Если использую 16-bit DPMI: «Место ошибки 19F8:178C»
Если использую 32-bit DPMI: «Место ошибки 07B5:0A31»
В обои случаях пишет: «Прерывания нет».

Все советы автора программы по устранению ошибок пробовал, использование 16/32 DPMI, тоже совет по решению проблем с зависанием программы, тоже не помогает.:(
Может хоть вы можете помочь.
Заранее спасибо!

Здравствуйте, Ilya!
А можете кинуть ссылку на новый TasmED. baldr@pisem.net — это я!
А вообще, я давно уже не рискую что-либо компилить под него. Он у меня как
редактор стоит. А для компиляции и компоновки я написал крутой bat-файл, который
все, что надо спросит и сделает. Если надо — пишите, пришлю.
Кстати, если уж все сильно достало, но позарез это надо, то очень полезно
иногда связаться с автором и ласково его поругать. Совет.

Отправил эксперт: baldr (http://www.dospage.fromru.com — Сайт об ОС DOS. Всем, кто любит эту ОС!)
Эксперт отправил ответов (всего): 6

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

Здравствуйте! 13 октября 2001 года, в магазине «Мир обуви» я купила осенние ботинки. 29 октября на них сломался каблук. В починку не берут. Могу ли я их вернуть в магазин. Чек сохранен. На нем написано: «гарантия на обувь 30 дней». Спасибо!

Здравствуйте, Алина!
А Вы хоть знаете, ЧТО такое DOS? И при чем тут пользовательская работа с ним?
Давайте не будем засорять рассылку ботинками и каблуками. Пишите в соответствующие органы,
сходите к адвокату и т.п.

Отправил эксперт: baldr (http://www.dospage.fromru.com — Сайт об ОС DOS. Всем, кто любит эту ОС!)
Эксперт отправил ответов (всего): 8

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

Повторение вопроса 1308. Что-то все промолчали (кроме эксперта Dron’а, но и он не в тему ответил).

Напоминаю: программа из 6-го урока (разбор в 7-ом). Типа создает стек внутри себя и пишет туда 2 раза nop. После этого идет код вывода строки. Под отладчиком — есс-но все глючит. Вопрос не в этом. Почему строка выводится, когда прога запускается БЕЗ ОТЛАДЧИКА!? Просто из командной строки? Причем я пробовал и вариант без стека, а команду изменял обычным mov. Во всех книжкам по защите от НСД написано, что без отладчика прога должна выполнить команду, которая была раньше (в нашем случае int 20h — завершение работы). В чем здесь собака порылась? Может, там какое-нибудь прерывание отрабатывает, поэтому и конвеер сбасывается? Или винда свинью подкладывает? Или просто проц слишком умный?

Здравствуйте, Ayl!
Кстати, верно озадачил. Действительно выводит строку. Но я читал документацию ДОС 3.3 правда в оригинале и на английском так вот начиная с этой версии там просят настоятельно для завершения процесса пользоваться функцией 4ch. А для прерывания 20 там написано «CS must contain the segment address of the PSP». Но и это не важно там написано, что оно совместимо с версией младше 2.0. Так что делай вывод. А с 4сh все работает исправно.

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

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

Здравствуйте! 13 октября 2001 года, в магазине «Мир обуви» я купила осенние ботинки. 29 октября на них сломался каблук. В починку не берут. Могу ли я их вернуть в магазин. Чек сохранен. На нем написано: «гарантия на обувь 30 дней». Спасибо!

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

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

Всем привет!
После дикого вечера между прочим неплохо варит башка, поэтому хотел бы обсудить с Вами давно наболевший вопрос, тем более что рассылка что-то захирела и не показывается. Понимаю, что на ниженаписанное так в двух словах не ответить, но все же прошу пораскинуть мозгами.
Речь пойдет об этой самой пресловутой нереентерабельности DOS и нереентерабельности другой хренотени под нее написанной.
Рассмотрим типичный пример борьбы с нереентерабельностью при перехвате прерывания таймера и подмене его обработчика своим (ну, в смысле, я имею в виду пользовательскую процедуру 01Сh). Классикой в данном случае может служить способ, используемый Т.Сваном:
В начале обработчика прерывания объявляем переменную:
InProg DB 0
и потом используем ее как флаг, который будет показывать были ли предыдущие копии обработчика запущены. В общем структура такая:
XXXX: cmp [byte cs:InProg],0 ;начало обработчика, проверяем флаг
jne Exit ;если установлен, знач процедура выполняется — выходим
inc [byte cs:InProg] ;если нет, устанавливаем и выполняем
…..; выполняем всякую каку, а в конце
dec [byte cs:InProg] ;снимаем флаг
pop ds
pop ax
Exit: iret ;выход
Вот тут-то Сван и лоханулся :((( Не мог он предусмотреть, что появятся гигагерцовые телеги. Во-первых, прерывание может произойти между decом и iretом (на рорах). Во-вторых, даже если роры убрать за dec (чего Сван делать не рекомендует), прерывание МОЖЕТ произойти даже между выполнением decа и iret. (У меня, например, на четырехпроцессорной рабочей станции происходит. Я, конечно, понимаю что только идиот использует DOS на таких мощностях, но в данном случае эту тему желательно все-таки прояснить).
Теперь собственно вопрос или , точнее, просьба: Во многих досовских программах имеются методы борьбы с нереентерабельностью. (Хотя бы даже обработка кнопалки PrnScreen). Почти все они базируются в той или иной степени на вышеописанном алгоритме и почти все они дают сбои на высоких частотах. В общем-то всем начихать, так как DOS умирает. Но иногда возникают проблемы…. В связи с этим не может ли кто-то предложить какие-нибудь экзотические методы борьбы с ентой нереентерабельностью? В более ширшем (ширейшем) смысле – как с ней вообще все-таки бороться? Часы в PC-то борются! Принимается ВСЕ – вплоть до аппаратных реализаций.
С уважением Вал.Ик.
P.S. Извините, если сильно грузанул вас такой рухлядью….
P.P.S. Индивидуальное обращение: Dron. А че рассылка-то по операционке не выходит? Весьма поучительное было чтиво, и вдруг заглохло.. Жалкоо-о-о-о…….

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

Здравствуйте, Вал.Ик.!
Так я не понял проблемы или она решается расстановкой cls sti, где нужно. Я с этим однажды долго парился, но в конце-то концов все работает. (С большим непониманием)

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

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

Повторение вопроса 1308. Что-то все промолчали (кроме эксперта Dron’а, но и он не в тему ответил).

Напоминаю: программа из 6-го урока (разбор в 7-ом). Типа создает стек внутри себя и пишет туда 2 раза nop. После этого идет код вывода строки. Под отладчиком — есс-но все глючит. Вопрос не в этом. Почему строка выводится, когда прога запускается БЕЗ ОТЛАДЧИКА!? Просто из командной строки? Причем я пробовал и вариант без стека, а команду изменял обычным mov. Во всех книжкам по защите от НСД написано, что без отладчика прога должна выполнить команду, которая была раньше (в нашем случае int 20h — завершение работы). В чем здесь собака порылась? Может, там какое-нибудь прерывание отрабатывает, поэтому и конвеер сбасывается? Или винда свинью подкладывает? Или просто проц слишком умный?

Здравствуйте, Ayl!
Последнее-проц слишком умный, гад!:)
Это сработает только до 386 включительно.
Пеньки уже отслеживают попытку записи и сбрасывают конвеер.
На четверке не проверил-нет в наличии:(
Кто-нить-проверте, плз.

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

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

У меня такой вопросик:
У меня монитор 15″ NEC MultiSync и видеокарта S3 Virge DX и возникает такая проблемка: при попытке перевода там FAR или еще чего Досовского в полноэкранный режим монитор ни чего некажет( и темнота). Лампочка на нем становится желтой. Что делать не подскажете?

Заранее благодарен, Антон.

Здравствуйте, Антон!
Несколько советов
1) Проверь параметры установленные для Dos программ!
2) Перезагрузись в режими эмуляции MSDos если все будет работать переставь систему

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

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

Здравствуйте.
У меня проблемы с настройкой Apache, a
именно: не запускаются cgi скрипты. Может кто то
может мне помочь?
Настройку апача производил как написано здесь:
http://www.xakep.ru/post/13484/default.asp?flash=1
версия: apache 1.3.12
ос: windows 98 se
файл httpd.conf прилагаю.
Спасибо.

Здравствуйте, Алексей!
Я конечно не знаю,но у меня в настройках правда под линух есть после строк
ScriptAlias /cgi-bin/ «/var/www/cgi-bin»
следующее попробуй..

AllowOverride None
Options None
Order allow,deny
Allow from all

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

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

Можно ли подключить внутренний винт, не разбирая компа?

Здравствуйте, Дмитрий!
Ну если только шлейф EIDE устройства торчит через заднюю стенку:(
А так крышку по любому снять надо

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

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

Извините, может не по теме, но можно ли каким-либо образом подключить внутренний винчестер, не разбирая компа?

Здравствуйте, Дмитрий!
А почему бы и нет? Есть Mobile Rack(и)работают через USB или LPT порты, только тормозные они. Есть Rack для IDE — они самые дешевые и скоростные, но для того чтоб его подключить все равно разок придется комп разобрать.

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

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

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

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

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

Dos fn 4fh: найти следующий совпадающий файл

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

Функция DOS 4Eh — Найти первый файл

Ввод: АН = 4Eh
AL используется при обращении к функции APPEND
СХ = атрибуты, которые должен иметь файл (биты 0 (только для чтения) и 5 (архивный бит) игнорируются, если бит 3 (метка тома) установлен, все остальные биты игнорируются)
DS:DX = адрес ASCIZ-строки с именем файла, которое может включать путь и маски для поиска (символы * и ?)
Вывод: CF = 0 и область DTA заполняется данными, если файл найден
CF = 1 и АХ = 02h, если файл не найден, 03h — если путь не найден, 12h — если неправильный режим доступа

Вызов этой функции заполняет данными область памяти DTA (область передачи данных), которая начинается по умолчанию со смещения 0080h от начала блока данных PSP (при запуске СОМ- и ЕХЕ-программ сегменты DS и ES содержат сегментный адрес начала PSP), но ее можно переопределить с помощью функции 1Ah.

Функция DOS 1Ah — Установить область DTA

Ввод: АН = 1Ah
DS:DX = адрес начала DTA (128-байтный буфер)

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

+00h: байт — биты 0 – 6: ASCII-код буквы диска; бит 7: диск сетевой

+01h: 11 байт — маска поиска (без пути)

+0СН: байт — атрибуты для поиска

+0Dh: слово — порядковый номер файла в каталоге

+0Fh: слово — номер кластера начала внешнего каталога

+11h: 4 байта — зарезервировано

+15h: байт — атрибут найденного файла

+16h: слово — время создания файла в формате DOS:

биты 15 – 11: час (0 — 23)

биты 10 – 5: минута

биты 4 – 0: номер секунды, деленный на 2 (0 – 30)

+18h: слово — дата создания файла в формате DOS:

биты 15 – 9: год, начиная с 1980

биты 8 – 5: месяц

+1Ah: 4 байта — размер файла

+1Eh: 13 байт — ASCIZ-имя найденного файла с расширением

После того как DTA заполнена данными, для продолжения поиска следует вызывать функцию 4Fh, пока не будет возвращена ошибка.

Функция DOS 4Fh — Найти следующий файл

Ввод: АН = 4Fh
DTA — содержит данные от предыдущего вызова функции 4Е или 4F
Вывод: CF = 0 и DTA содержит данные о следующем найденном файле, если не произошла ошибка
CF = 1 и АХ = код ошибки, если произошла ошибка

Для случая длинных имен файлов (LFN) употребляется набор из трех подфункций функции DOS 71h, которые можно использовать, только если запущен IFSmgr (всегда запускается при обычной установке Windows 95, но не запускается, например, с загрузочной дискеты MS-DOS 7.0).

Функция LFN 4Eh — Найти первый файл с длинным именем

Ввод:АХ = 714Eh
CL = атрибуты, которые файл может иметь (биты 0 и 5 игнорируются)
СН = атрибуты, которые файл должен иметь
SI = 0: использовать Windows-формат даты/времени
SI = 1: использовать DOS-формат даты/времени
DS:DX = адрес ASCIZ-строки с маской для поиска (может включать * и ?. Для совместимости маска *.* ищет все файлы в каталоге, а не только файлы, содержащие точку в имени)
ES:DI = адрес 318-байтного буфера для информации о файле
Вывод:CF = 0
АХ = поисковый идентификатор
СХ = Unicode-флаг:

    бит 0: длинное имя содержит подчеркивания вместо непреобразуемых Unicode-символов
    бит 1: короткое имя содержит подчеркивания вместо непреобразуемых Unicode-символов

CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)

Если файл, подходящий под маску и атрибуты поиска, найден, область данных по адресу ES:DI заполняется следующим образом:

+00h: 4 байта — атрибуты файла

биты 0 – 6: атрибуты файла DOS

бит 8: временный файл

+04h: 8 байт — время создания файла

+0Ch: 8 байт — время последнего доступа к файлу

+14h: 8 байт — время последней модификации файла

+1Ch: 4 байта — старшее двойное слово длины файла

+20h: 4 байта — младшее двойное слово длины файла

+24h: 8 байт — зарезервировано

+2Ch: 260 байт — ASCIZ-имя файла длинное

+130h: 14 байт — ASCIZ-имя файла короткое

Причем даты создания/доступа/модификации записываются в одном из двух форматов, в соответствии со значением SI при вызове функции. Windows-формат — 64-битное число 100-наносекундных интервалов с 1 января 1601 года, а если используется DOS-формат — в старшее двойное слово записывается DOS-дата, а в младшее — DOS-время.

Функция LFN 4Fh — Найти следующий файл

Ввод: АХ = 714Fh
ВХ = поисковый идентификатор (от функции 4Eh)
SI = формат даты/времени
ES:DI = адрес буфера для информации о файле
Вывод: CF = 0 и СХ = Unicode-флаг, если следующий файл найден
CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)

Функция LFN A1h — Закончить поиск файла

Ввод: АХ = 71A1h
ВХ = поисковый идентификатор
Вывод: CF = 0, если операция выполнена
CF = 1 и АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)

В качестве примера программы, использующей многие из функций работы с файлами, рассмотрим программу, заменяющую русские буквы «Н» на латинские «Н» во всех файлах с расширением .ТХТ в текущем каталоге (такая замена требуется для всех текстов, которые будут пересылаться через сеть Fidonet, программное обеспечение которой воспринимает русскую букву «Н» как управляющий символ).

4.8.4. Поиск файлов

Найти нужный файл на диске намного сложнее, чем просто открыть — для

этого требуются две функции при работе с короткими именами (найти первый

файл и найти следующий файл) и три — при работе с длинными именами в DOS 7.0

(найти первый файл, найти следующий файл, прекратить поиск).

Функция DOS Найти первый файл Вход: АН = 4Eh

AL используется при обращении к функции APPEND СХ = атрибуты, которые должен иметь файл (биты О (только для чте­ния) и 5 (архивный бит) игнорируются. Если бит З (метка тома)

установлен, все остальные биты игнорируются) DS:DX адрес с именем файла, которое может включать

путь и маски для поиска (символы * и ?) Выход: CF = 0 и область DTA заполняется данными, если файл найден

CF = 1 и АХ = 02h, если файл не найден; ОЗЬІесли путь не найден; 12h,

если неправильный режим доступа

Вызов этой функции заполняет данными область памяти DTA (область переда­чи данных), которая начинается по умолчанию со смещения от блока данных PSP (при запуске СОМ- и сегменты DS и ES содержат сег-

ментный адрес начала PSP), но ее можно переопределить с помощью функции 1 Ah.

Функция DOS 1Ah: Установить область DTA Вход: АН = lAh

DS:DX = адрес начала DTA (128-байтный буфер)

Функции поиска файлов заполняют DTA следующим образом: » +00h: байт — биты 0-6: ASCII-код буквы диска

бит 7: диск сетевой

+0Ш: 11 байт — маска поиска (без пути) +0Ch: байт — атрибуты для поиска +0Dh: слово — порядковый номер файла в директории +OFh: слово — номер кластера начала внешней директории +1Ш: 4 байта — зарезервировано + 15h: байт — атрибут найденного файла

+ 16h: слово — время создания файла в формате DOS:

биты 15-11: час (0-23)

биты 1О-5: минута

биты 4-0: номер секунды, деленный на 2 (0-30)слово — дата создания файла в формате DOS:

биты 15-9: год, начиная с 1980

биты 4-0: день +lAh: 4 байта — размер файла

+lEh: 13 байт — ASCIZ-имя найденного файла с расширением

После того как DTA заполнена данными, для продолжения поиска следует

вызывать функцию 4Fh, пока не будет возвращена ошибка.

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

Функция DOS 4Fh: Найти следующий файл Вход: АН = 4Fh

DTA — содержит данные от предыдущего вызова функции Eh или Выход: CF = 0 и DTA содержит данные о следующем найденном файле, если не

произошла ошибка CF = 1 и АХ = код ошибки, если произошла ошибка

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

IFSmgr (всегда запускается при обычной установке Windows 95, но не запускает­ся, например, с загрузочной дискеты MS DOS 7.0).

Функция LFN4Eh: Найти первый файл с длинным именем Вход: АХ — 714Eh

CL = атрибуты, которые файл может иметь (биты 0 и 5 игнорируются)

СН = атрибуты, которые файл должен иметь

SI = 0: использовать Windows-формат даты/времени SI = 1: использовать DOS-формат даты/времени DS:DX = адрес ASCIZ-строки с маской для поиска (может включать * и Для совместимости маска *.* ищет все файлы в директо­рии, а не только файлы, содержащие точку в имени) ES:DI — адрес 318-байтного буфера для информации о файле Выход: CF = О

АХ — поисковый идентификатор СХ = Unicode-флаг:

бит 0: длинное имя содержит подчеркивания вместо непреобразу-

емых Unicode-символов бит короткое имя содержит подчеркивания вместо непреобразу-емых Unicode-символов CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция

Если файл, подходящий под маску и атрибуты поиска, найден, область дан­ных по адресу ES:DI заполняется следующим образом:

+00h: 4 байта — атрибуты файла

биты 0-6: атрибуты файла DOS

бит 8: временный файл

+04Ь: 8 байт — время создания файла

+0СЬ: 8 байт — время последнего доступа к файлу

+14Ь: 8 байт — время последней модификации файла

+1СЬ: 4 байта — старшее двойное слово длины файла

+20Ь: 4 байта — младшее двойное слово длины файла

+24п: 8 байт — зарезервировано

+2Сп: 260 байт — АБСК-имя файла длинное

+130Б: 14 байт — АБСК-имя файла короткое

Причем даты создания/доступа/модификации записываются в одном; из двух форматов, в соответствии со значением при вызове функции. Щпёоте-формат -64-битное число 100-наносекундных интервалов с 1 января 1601 года; если исполь­зуется БОБ-формат — в старшее двойное ‘ слово записывается БОБ-дата, а в млад­шее — БОБ-время.

Функция іт4Яі: Найти следующий файл Вход: АХ — 714Ні

ВХ — поисковый идентификатор (от функции 4ЕЬ)

= формат даты/времени Е8:Б1 = адрес буфера для информации о файле Выход: СЕ — 0 и СХ = Шісосіе-флаг, если следующий файл найден

СЕ = 1, АХ = код ошибки, если произошла ошибка (7100І1 — функция

Функция LFNA 1h: Закончить поиск файла Вход: АХ = 71Alh

ВХ = поисковый идентификатор Выход: CF °= 0, если операция выполнена

CF = 1 и АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)

В качестве примера, использующего многие функции работы с файлами, рас­смотрим программу, заменяющую русские буквы Н латинскими Н во всех фай­лах с расширением .ТХТ в текущей директории (такая замена требуется для каж­дого текста, пересылающегося через сеть Fidonet, программное обеспечение

которой воспринимает русскую букву Н как управляющий символ).

; .Заменяет русские «Н» латинскими «Н» во всех файлах с расширением .’ТХТ ; в текущей директории.

MS-DOS для программиста

3.3. Поиск в каталогах

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

Это функции 4Eh и 4Fh.

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

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

Затем для поиска остальных файлов, удовлетворяющих заданному ранее образцу, в цикле вызывается функция 4Fh. Условие завершения цикла — отсутствие в каталоге указанных файлов.

Функция 4Eh вызывается следующим образом:

На входе: AH 4Eh
CX Атрибуты файла, которые будут использованы при поиске. Будут найдены файлы, имеющие атрибут, заданный в регистре CX
DS:DX Адрес строки в формате ASCIIZ, содержащей путь каталога или файла
На выходе: AL Код ошибки, если был установлен флаг переноса CF

Функция 4Fh имеет следующие параметры вызова:

На входе: AH 4Fh
На выходе: AL Код ошибки, если был установлен флаг переноса CF

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

Для работы с областью DTA в составе MS-DOS имеются две функции. Это функция 2Fh, позволяющая получить адрес области DTA (она возвращает этот адрес в регистрах ES:BX), и функция 1Ah, предназначенная для установки своей области DTA (адрес новой области DTA должен быть указан в регистрах DS:DX).

Напомним, что по умолчанию область DTA занимает 128 байт в префиксе сегмента программы PSP со смещением 80h.

В случае успешного поиска функции 4Eh и 4Fh помещают в DTA информацию о найденных файлах в следующем формате:

Смещение Размер Содержимое
20 Зарезервировано
21 1 Атрибуты найденного файла
22 2 Поле времени последнего обновления файла
24 2 Поле даты последнего обновления файла
26 4 Длина файла
30 13 Имя файла и расширение в формате ASCIIZ

Номер начального кластера, распределенного файлу или каталогу, невозможно получить с помощью функций 4Eh и 4Fh.

Стандартная библиотека Borland C++ содержат две функции, предназначенные для сканирования каталогов. Это _dos_findfirst и _dos_findnext .

Приведем прототипы этих функций, описанные в файле dos.h:

В этих функциях параметр pattern определяет образец для поиска файлов, параметр attr (атрибуты файла) используется в качестве дополнительного критерия поиска. Параметр found представляет собой указатель на структуру, в которую будет записываться информация о найденных файлах. Эта структура определена в файле dos.h:

Программа DIRLIST

Приведем текст программы просмотра содержимого каталога DIRLIST (листинг 3.3). Программа принимает из командной строки параметр — образец для показа файлов. Если вы укажете параметр *.*, будет выведена информация обо всех файлах. Можно задавать полный путь: c:\*.*.

DOS, функция 4Fh Найти следующий совпадающий файл

DS:DX — адрес данных, возвращенных предыдущей 4Eh (Найти пер-

CF=0, если функция выполнена успешно

DTA заполнена данными

CF°1, если при выполнении функции возникли ошибки

Эту функцию можно использовать после вызова 4Eh. Следующее имя фай-

ла, совпадающее по обобщенному имени и атрибуту файла, копируется

в буфер по адресу DS:DX вместе с другой информацией (Таблица Б-10).

Поиск файлов — часть 2

+18h: слово — дата создания файла в формате DOS:

биты 15 – 9: год, начиная с 1980

биты 8 – 5: месяц

+1Ah: 4 байта — размер файла

+1Eh: 13 байт — ASCIZ-имя найденного файла с расширением

После того как DTA заполнена данными, для продолжения поиска следует вызывать функцию 4Fh, пока не будет возвращена ошибка.

Функция DOS 4Fh — Найти следующий файл

АН = 4Fh
DTA — содержит данные от предыдущего вызова функции 4Е или 4F

Вывод:

CF = 0 и DTA содержит данные о следующем найденном файле, если не произошла ошибка
CF = 1 и АХ = код ошибки, если произошла ошибка

Для случая длинных имен файлов (LFN) употребляется набор из трех подфункций функции DOS 71h, которые можно использовать, только если запущен IFSmgr (всегда запускается при обычной установке Windows 95, но не запускается, например, с загрузочной дискеты MS-DOS 7.0).

Функция LFN 4Eh — Найти первый файл с длинным именем

АХ = 714Eh
CL = атрибуты, которые файл может иметь (биты 0 и 5 игнорируются)
СН = атрибуты, которые файл должен иметь
SI = 0: использовать Windows-формат даты/времени
SI = 1: использовать DOS-формат даты/времени
DS:DX = адрес ASCIZ-строки с маской для поиска (может включать * и ?. Для совместимости маска *.* ищет все файлы в каталоге, а не только файлы, содержащие точку в имени)
ES:DI = адрес 318-байтного буфера для информации о файле

Вывод:

CF = 0
АХ = поисковый идентификатор
СХ = Unicode-флаг:

бит 0: длинное имя содержит подчеркивания вместо непреобразуемых Unicode-символов
бит 1: короткое имя содержит подчеркивания вместо непреобразуемых Unicode-символов

CF = 1, АХ = код ошибки, если произошла ошибка (7100h — функция не поддерживается)

Если файл, подходящий под маску и атрибуты поиска, найден, область данных по адресу ES:DI заполняется следующим образом:

Dos fn 4fh: найти следующий совпадающий файл

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

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

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

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

Здравствуйте, помоги пожалуйста написать программу для рекурсивного вывода на экран содержимого диска(все папки и все их содержимое) на экран. Спасибо

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

Здравствуйте, Any pasa !
У меня вот завалялся примерчик с выводом всего содержимого по указанному пути (переменная bPath)
В тексте стоит флеш-накопитель по пути K:\ (чтобы меньше выводить информации)
Кстати, совсем не обязательно задавать корень, можно любую подпапку.
В программе используются длинные имена.

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

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

незнаю как насчет попок, но посмотрите функции
http://www.codenet.ru/progr/dos/int_0026.php
Функция DOS 4eH: Найти 1-й совпадающий файл
Функция DOS 4fH: Найти следующий совпадающий файл
может что в голову придет

неизвестный

Ну на счет пОпок, ет очепятка=)))
Спасибо, посмотрю, хотелось бы примерчик)

ID: 7438

Работаем с длинными именами или с короткими?

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

неизвестный

Огромное спасибо, буду сидеть разбирать код=)))

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

неизвестный

А можно вопрос, когда я компилю, выходит огромное количество ошибок..
M(1): error A2027: Operand expected
M(19): error A2105: Expected: instruction, directive, or label
M(24): warning A4001: Extra characters on line
M(25): warning A4001: Extra characters on line
M(27): error A2105: Expected: instruction, directive, or label
M(56): error A2003: Unknown type specifier
M(82): error A2010: Syntax error
M(104): error A2003: Unknown type specifier
M(129): error A2010: Syntax error
M(131): error A2010: Syntax error
M(133): error A2010: Syntax error
M(137): error A2010: Syntax error
M(144): error A2010: Syntax error
M(148): warning A4001: Extra characters on line
M(151): warning A4001: Extra characters on line
Помогите разобраться пожалуйста

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

неизвестный

Попробовал в TASM, получилось, obj файл создался, а вот когда запускаю линковщик, он мне выдает следующее
Failed to locate protected mode loader (DPMILOAD.EXE)
Немного погуглив, нашел что нужно этот самый DPMILOAD.EXE
Ну собсно взял их (exe b dll) из С++ тогоже борланда, и exe создался с предупреждением no stack
после запуска, ничего не выводит.. Объясните пожалуйста

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

ID: 7438

Надо создать COM-файл
tlink /t _dir.obj

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

неизвестный

Cпасибо, я бы если бы и догодался, то долго бы голову ломал!=)

=====
«Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться.» Марк Твен

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

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