Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переименование файла 
:(
    Опции темы
Oxy
Дата 21.10.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



TASM
Windows Vista
Не получается переименовать файл, подскажите пожалуйста в чем может быть проблема
Код

.MODEL SMALL
.STACK 100h
.DATA 
oldn  db  "C:\1\myfile.dat",0
newn  db  "C:\2\newfile.dat ",0

.CODE
start:         mov  ax, @data              
               mov  ds, ax                
               mov  dx, offset oldn

               mov  ax, seg newn
               mov  es, ax
               mov  di, offset newn
           
               mov  ah, 56h
               int  21h

               mov  ax, 4C00h              
               int  21h                    
               END  start


Это сообщение отредактировал(а) Oxy - 21.10.2009, 23:55
PM MAIL WWW   Вверх
111u3
Дата 22.10.2009, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 31.8.2009
Где: Омск

Репутация: нет
Всего: нет



А ту же директорию деста указывать не пробовал
PM MAIL ICQ   Вверх
Mikl_
Дата 22.10.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: нет
Всего: 14



[delete]

Это сообщение отредактировал(а) Mikl_ - 22.10.2009, 11:13
PM MAIL   Вверх
Mikl_
Дата 22.10.2009, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: нет
Всего: 14



Oxy, не внимательно читаешь описание функции 56h smile 
В регистре AH должен находиться номер функции (56h). Регистры DS:DX должны содержать адрес строки с именем существующего файла, строка должна заканчиваться нулем и может содержать путь к файлу. Регистры ES:BX должны содержать адрес строки с новым именем файла, строка должна заканчиваться нулем. В CL атрибуты файла
При выходе, если ошибки не произошло, то флаг CF = 0. Если произошла ошибка, то флаг CF = 1 и в регистре AX находится код ошибки.
02 файл не найден
03 путь не найден
05 доступ запрещен
11h  не то же устройство
Если не анализировать код ошибки то
Код
start:         mov  ax, @data              
               mov  ds, ax  
               mov  es, ax <-- можно за один раз так как сегмент данных один и тот же
               mov  dx, offset oldn               
               mov  bx, offset newn <-- вот здесь ошибка           
               mov  ah, 56h
               int  21h
 smile 


Это сообщение отредактировал(а) Mikl_ - 22.10.2009, 10:55
PM MAIL   Вверх
Oxy
Дата 22.10.2009, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



Цитата(Mikl_ @  22.10.2009,  10:54 Найти цитируемый пост)
Oxy, не внимательно читаешь описание функции 56h

http://www.eduhmao.ru/info/1/3661/22917/
я здесь читал

сейчас нет возможности проверить Ваш вариант, но все равно спасибо
PM MAIL WWW   Вверх
Goodwin98
Дата 22.10.2009, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 1.7.2009
Где: Deeptown

Репутация: нет
Всего: 5



Mikl_, имя должно передоваться в di все таки. 


Oxy, папка C:\2\ должна существовать, чтобы в нее можно было переместить файл. Да и пробел в конце там врядли к месту.
PM MAIL ICQ   Вверх
Mikl_
Дата 23.10.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: нет
Всего: 14



Goodwin98, Oxy
Никому нельзя верить -- я взял свой вариант с ES:BX в книге Р.Брауна, Дж.Кайла "Справочник по прерываниям для IBM PC" Москва, издательство "Мир" 1994, том 1,  глава 8, стр 8 - 64, до сих пор меня Браун и Кайл не обманывали, а здесь наверное либо опечатка, либо сами не проверяли. Проверил должно быть DI иначе файл переименовывается во что-то непотребное  smile  Отсюда мораль "Классики тоже ошибаются" 

Это сообщение отредактировал(а) Mikl_ - 26.10.2009, 04:12
PM MAIL   Вверх
piritus
Дата 23.10.2009, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 226
Регистрация: 3.1.2007
Где: Сибирь

Репутация: нет
Всего: 3



Рекомендую по прерываниям (и не только) использовать TECH help
--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.1114 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.