|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
03.06.2018, 14:46 | #1 |
Регистрация: 03.06.2018
Сообщений: 7
|
Переименовать файл NEWFILE.txt в файл OLDFILE.txt и установить у него атрибут ReadOnly
Помогите пожалуйста понять в чем дело, при запуске ошибок нет, но программа не выполняет свое назначение
------------------------------------------------------------------- TITLE SETVOLUMELABEL (EXE) A.T var-3 text segment 'code' ; слово "Code" указывает, что это программный класс сегмента assume cs:text, dsata ; команда assume сопоставляет сегментные регистры и адресуемые ими сегменты ;CS - регистр программного сегмента, DS - регистр сегмента данных ; Определения stdout=1 ; Дескриптор стандартного вывода cr=13 ; Код возврата каретки lf=10 ;Код перевода строки ;------------------------------------------------------------------ myproc proc mov AX, data ; Инициализируем mov DS, AX ;сегментный регистр DS ; Тело программы------------------------------------------ ; Выведем авотра иназвание программы mov AH,40h ;функция переключения режима mov BX,stdout mov CX,sooblen mov DX,offset soob int 21h ;Завершить и остаться ; Запись метки-------------------------------------------------- mov AH, 56H lea DX, oldname lea DI, newname int 21h ; Вызов DOS MOV AH,43H ;Запрос на установку MOV AL,01 ; атрибута MOV CX,01 ; только чтение-01; ;02-скрытый,00-нормальный LEA DX,oldname ;ASCIIZ-строка INT 21H ; Завершение программы-------------------------------- mov AX, 4C00h ; Функция завершения программы - выход в MS-DOS int 21h ; Вызов DOS myproc endp text ends ; Поля данных--------------------------------------------- data segment oldname db 'C:\Documents and Settings\ия\NEWFILE.txt',0 newname db 'C:\Documents and Settings\ия\OLDFILE.txt',0 soob db 'Rabota po SPO: variant 3 - file pereimenovan',cr,lf sooblen equ $-soob data ends ;-------------------------------------------------------------- end myproc ; конец программы |
03.06.2018, 17:09 | #2 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
1.
Нужно установить es на сегмент данных mov ax, @data mov ds, ax mov es, ax 2. у вас (скорее всего) перепутаны oldname и newname. oldname db 'C:\Documents and Settings\ия\NEWFILE.txt',0 newname db 'C:\Documents and Settings\ия\OLDFILE.txt',0 И честно говоря под досом я бы не использовал такие пути: C:\Documents and Settings\ия
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
03.06.2018, 18:09 | #3 |
Регистрация: 03.06.2018
Сообщений: 7
|
а почему?что не так с путями?
|
03.06.2018, 18:22 | #4 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Да ничего особенно страшного.
Просто длинные абсолютные пути с пробелами и русскими буквами в наименованиях как то глаз режут. У вас переименование заработало ? У меня - да. А вот атрибуты чето не ставятся, может проблема DOS-box-a.. Добавлено: Ну да, под комманд-лине XP программа работает нормально. Под чистым досом тоже скорей всего будет норм.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru Последний раз редактировалось Ulex; 03.06.2018 в 18:40. |
03.06.2018, 18:44 | #5 |
Регистрация: 03.06.2018
Сообщений: 7
|
Переименование не заработало, а вот установка атрибута на какое-то время заработала,но потом опять перестала работать
|
03.06.2018, 18:55 | #6 |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
В общем два момента, установить es на ds и разобраться с именами файлов. А то сейчас как то странно получается, сначала файл переименовали, а потом у oldname (файла с таким именем уже нет) атрибуты устанавливаете.
Код:
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
03.06.2018, 18:55 | #7 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
программа для MS DOS, судя по использованию 21 прерывания, так?
Тогда такие пути не допустимы. насколько я помню, то MS DOS не понимал длинные пути, кириллицу и пробелы. нужно использовать только имена формата 8.3, исключительно латиницу и без пробелов. |
03.06.2018, 19:08 | #8 |
Регистрация: 03.06.2018
Сообщений: 7
|
Так-то мне нужно было в BIOS, но там же существенной разницы нет? разве что в прерываниях
|
03.06.2018, 19:21 | #9 | |
Непрофессионал
Участник клуба
Регистрация: 01.01.2008
Сообщений: 1,405
|
Ууууу..... батенька.
Цитата:
Поэтому в ДОС-е есть функции 21-го прерывания для работы именно с файлами на файловой системе FAT-16 и иже с ними. А в биосе есть прерывания для работы с дисковой подсистемой. Т.е чисто теоретически вы сможете прерываниями BIOSA читать сектора с диска. А дальше всю логику разбора этих данных (т.е. в принципе фактически поддержку файловой системы) придётся написать самому...
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------ Страничка с моими программками http://ulex-masm.ru |
|
03.06.2018, 19:49 | #10 |
Регистрация: 03.06.2018
Сообщений: 7
|
понятно) атрибут устанавливается :D
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переделавание кода на считывание из файла в файл output.txt input.txt !!! | airesjke | Помощь студентам | 0 | 29.05.2013 14:07 |
Как прочесть txt файл www.site.ru/info.txt | BR17UY | Работа с сетью в Delphi | 1 | 16.04.2007 13:01 |