Вопрос № 80791: Подскажите, пожалуйста. Моя программа должна заносить введенные символы в массив (строку), а затем при нажатии ENTER выводить полученную строку на экран. Но с выводом проблемы: выводит только последний введенный символ аж 25 раз. Где ошибка не могу п...Вопрос № 80792: Приветствую,Стас !
Постараюсь немного уточнить вопрос:
Возможно ли найти на диске (жёстком, или не очень) необходимый мне
файл, допустим Nuzda.com, не используя прерываний Dos и Bios,
а используя только инструкции ассемблера, написав ...Вопрос № 80810: Не могу ни где найти системные функции ДОС! Интересует функция создания каталога и функции смены текущего дискового устройства. Помогите пожалуйста, если можно с примером. Заранее спасибо....Вопрос № 80918: Здравствуйте. У меня появился такой вопрос. В моей программе происходит работа с файлом. Мне нужно ввести имя файла в командной строке и затем работать
с этим файлом. Как можно в самой программе использовать это имя файла введенное в командной строке...
Вопрос № 80.791
Подскажите, пожалуйста. Моя программа должна заносить введенные символы в массив (строку), а затем при нажатии ENTER выводить полученную строку на экран. Но с выводом проблемы: выводит только последний введенный символ аж 25 раз. Где ошибка не могу понять.
Приложение:
Отправлен: 02.04.2007, 23:10
Вопрос задал: Zemelia (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Zemelia!
С выводом у Вас все нормально
замените строки
inc BYTE PTR [si] ;увеличиваем байт по адресу в индексном регистре,
а значение si остается неизменным
на
inc si ;увеличиваем индексный регистр
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Приветствую,Стас !
Постараюсь немного уточнить вопрос:
Возможно ли найти на диске (жёстком, или не очень) необходимый мне
файл, допустим Nuzda.com, не используя прерываний Dos и Bios,
а используя только инструкции ассемблера, написав к примеру собственное
прерывание и какие команды в этом случае необходимо использовать.
Возможно ли такое под Windows ? Или придётся играть по правилам этих
операционных систем используя стандартные функции работы с файлами..?
Спасибо.
Отправлен: 02.04.2007, 23:30
Вопрос задал: CrancV (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Стас
Здравствуйте, CrancV!
Cделать так чтобы чтобы всегда и везде не получится (вернее очень сложно).
Потому что прийдется изучить и написать поддержку ВСЕХ возможных операционных систем.
>не используя прерываний Dos и Bios
остаются только порты ввода/вывода.
В принципе, на самом деле все оборудование(и мат.плата ипринтер и видюха) управляются с помощью портов ввода/ввывода и иногда специальных областей памяти (например видеопамять(часть) отображена в память компа). И теоритически написать управление (чтение/запись/печать и т.п.) любым устройствой можно. Но, во первых оборудование много, часто производители вносят изменения в стандарты, не факт, что написанный тобой драйвер CD прекрасно работающий с одним CD, на другом будет работать также.
А еще прийдется писать драйвера к дискетам, к винчестерам, может быть к лентам каким нибудь, или магнитооптике, флеш.
Именно поэтому производители пишут свои дрова к устройствам, а прерывания и DOS используют их.
Так что можно попробовать написать прогу которая будет искать искать файл, но в какой-то конкретной файловой системе, на конкретных приводах.
К примеру в FAT12/16/32 на дискетке. Можно попробовать.
А вот на флешке - уже не возьмусь - USB через порты никогда не программил.
Ответ отправил: Стас (статус: Специалист)
Ответ отправлен: 04.04.2007, 12:54 Оценка за ответ: 5 Комментарий оценки: Отлично !
Вопрос № 80.810
Не могу ни где найти системные функции ДОС! Интересует функция создания каталога и функции смены текущего дискового устройства. Помогите пожалуйста, если можно с примером. Заранее спасибо.
Отправлен: 03.04.2007, 02:04
Вопрос задал: Antoxa84 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Sergijj
Здравствуйте, Antoxa84!
Функция получения текущего логического диска: AH=19h, Int 21h; Возвращает: AL=Текущий диск DOS по-умолчанию (0=A, 1=B, 2=C, и т.д.)
Функция установки текущего логического диска DOS по-умолчанию: AH=0Eh, DL=Номер диска (0=A, 1=B, 2=C, и т.д.), Int 21h; Возвращает: AL=Общее количество системных дисков (и устройств, которые проецируются на логические диски).
Функция смены директории: AH=3Bh, DS:DX=Адрес ASCIIZ-строки - имени каталога, Int 21h; Возвращает: Если CarryFlag становится в 1, то в AX=Код ошибки.
Функция создания каталога: AH=39h, DS:DX=ASCIIZ-строка (максимальная длина 64 байта) - имя каталога (с путём до него и без слэша на конце), Int 21h; Возвращает: Если CarryFlag становится в 1, то в AX=Код ошибки.
Функция получения текущего каталога: AH=47h, DL=Номер логического диска (0=A, 1=B, 2=C, и т.д.), DS:SI=Указатель на буфер для ASCIIZ-строки - имени директории; Возвращает: Если CarryFlag становится в 1, то в AX=Код ошибки.
--------- Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 9-ый класс)
Ответ отправлен: 03.04.2007, 09:29
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Antoxa84!
Как говорит Sergijj, TechHelp весьма неплохое подспорье в данном вопросе
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 03.04.2007, 10:39
Вопрос № 80.918
Здравствуйте. У меня появился такой вопрос. В моей программе происходит работа с файлом. Мне нужно ввести имя файла в командной строке и затем работать с этим файлом. Как можно в самой программе использовать это имя файла введенное в командной строке?
Отправлен: 03.04.2007, 20:02
Вопрос задал: LOST (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, LOST!
Если при запуске то параметр (после имени программы) размещается в префиксе PSP по адресу
80h-длина
81h-сам параметр ввиде строки
нужно только проверить 0 в конце имени файла
;для СОМ программ
org 80h
cmd_size db ?
cmd_name db 80 dup(?)
org 100h
start:
;для ЕХЕ программ
сегмент PSP можно получить функцией ДОС 62h(98)
если из работающей программы то см. приложение
Удачи!
Приложение:
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: 8-ой класс)
Ответ отправлен: 04.04.2007, 09:49 Оценка за ответ: 5