Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2011, 06:29   #1
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию Не хочет переименовывать папку.

Приветствую вас, гринго. Есть один маленький вопрос по коду, который(вопрос в смысле) описан выше в названии темы:
Код:
 Str_Move_Enter db 'Vvedite katalog$',0
 Str_Move_New db 'Vvedite novyj katalog$',0
 Str_Move_Error db 'Oshibka$',0
 buf2 db 254,0,254 dup ('?')
 buf3 db 254,0,254 dup ('?')
...................

;----------------------------Процедура вывода сообщения
OutMsg proc
   mov ah,9
   int 21h 
   ret
OutMsg endp

;----------------------------Ожидание ввода
Vvod proc
   mov ah,0Ah
   int 21h
   ret
Vvod endp

;----------------------------Процедура перехода на новую строку
NextStr proc
   push dx
   mov dx,offset str_ent
   call OutMsg
   pop dx
   ret
NextStr endp

;----------------------------Процедура переименования
P_Move proc

mov dx, offset Str_Move_Enter
call outmsg
call nextstr
   mov dl,24h
   mov ah,2
   int 21h
mov dx, offset buf2
call Vvod

call nextstr
mov dx, offset Str_Move_New
call outmsg
call nextstr
   mov dl,24h
   mov ah,2
   int 21h
mov dx, offset buf3
call Vvod
call nextstr
lea bx, buf2
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+1], 0 

lea bx, buf3
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+1], 0 
lea dx, buf2+2
lea di, buf3+2

mov ah,56h
int 21h
jnc move_ok

mov dx, offset Str_Move_Error
call outmsg
call nextstr

move_ok:
   ret
P_Move endp
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 21.11.2011, 09:06   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ого. редко так бывает.
два разных человека задают вопрос с одной и той же проблемой!
(это я про тему Ассемблер(TASM) переименовать файл )

принципиальных ошибок я не вижу,
только, на вашем месте, я бы убедился, что
1) перед вызовом 56H функции, у Вас регистр ES показывает именно на область, где расположена buf3 (ES:DI должно показывать на buf3, где должно находится корректное ASCIIZ имя.

2) я бы проверил, что там в buf2 и buf3 перед вызовом функции..
Один малюсейникй пробельчик в имени или перед ним, или перед обязательным заверщающим нулём и всё. баста. Функция не отработает!

3) Вы не забываете, что функция 56H (как и все функции MS DOS) работают исключительно с КОРОТКИМИ именами файлов/папок?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.11.2011, 17:15   #3
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

На счёт коротких имён в DOS не забываю=). Спасибо за подсказку проверки
содержимого buf`ов, сам что-то тупанул . На место последнего символа записывался нуль.
вместо:
Код:
lea bx, buf2
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+1], 0 

lea bx, buf3
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+1], 0
надо это:
Код:
lea bx, buf2
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+2], 0

lea bx, buf3
movzx   si, byte ptr [bx+1] 
mov     byte ptr [bx+si+2], 0
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 21.11.2011 в 17:25.
Rin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
копировать и переименовывать картинки ruslansh Мультимедиа в Delphi 1 03.05.2010 21:11
Как переименовывать,перемещать, удалять, копировать файлы в delphi 2009? motaro Общие вопросы Delphi 9 18.08.2009 20:38
Как копировать и одновременно переименовывать файлы? eriser Помощь студентам 4 17.01.2008 17:51