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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 10:52   #1
Maxim5579
 
Регистрация: 17.02.2010
Сообщений: 3
По умолчанию Программа не открывает файл функцией 3dh.

Проблема в открытие файла функцией 3dh, 21h прерывания. Под отладчиком все ок. При запуске из командной строки выдает ошибку (файл не найден).
Компилятор TASM.

Код:
mov ah,3dh
xor al,al	
lea dx,filename
int 21h
mov o_handle,ax
jc error2

Последний раз редактировалось Maxim5579; 17.03.2011 в 10:57.
Maxim5579 вне форума Ответить с цитированием
Старый 17.03.2011, 13:02   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Maxim5579
Регистры DS:DX должны содержать адрес строки с именем файла, строка должна заканчиваться нулем и может содержать путь к файлу.
Mikl___ вне форума Ответить с цитированием
Старый 17.03.2011, 15:00   #3
Maxim5579
 
Регистрация: 17.02.2010
Сообщений: 3
По умолчанию

массив filename изначально имел вид как массив нулей
Код:
filename db 30 dup(0)
затем в начало массива заносится имя файла и он имеет вид
Код:
filename db 'test.txt',22 dup(0)
Файл test.txt (который нужно открыть) находится в папке с программой.
И самое интересное что под отладчиком никакой ошибки нет и все работает.
Maxim5579 вне форума Ответить с цитированием
Старый 18.03.2011, 00:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

может ds под отладчиком иницилизируется, а в в самой программе Вы забыли это сделать?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2011, 08:43   #5
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Если имя файла берется из командной строки, то в работе отладчика есть небольшое отличие при передаче командной строки. К примеру, командная строка:
prog.exe file.dat
под отладчиком командная строка будет содержать "file.dat",13
А при реальном запуске: " file.dat",13
то есть будет иметь лишний пробел, вот мне кажется он то и мешает открытию файла.
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 18.03.2011, 09:16   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от alexcoder
то есть будет иметь лишний пробел, вот мне кажется он то и мешает открытию файла.
Да, кстати, как вариант!

Maxim5579, короче - рекомендую Вам:
1) убедится, что Вы не забыли проиницилизировать DS
2) вывести на экран имя открываемого файла (для отладки).
3) убедится, что вы в массиве пишете ноль после имени файла
(можно вывести содержимое массива побайтно в HEX)
4) при использовании функции DOS возвращается ошибка (если CF=1 )
выведите содержимое регистра AX в случае ошибки - и посмотрите, что за ошибка возникает...

надо уметь отлаживать программу без отладчика - с помощью вывод контрольных сообщений.


пока шарился, нашёл книжку
Рудольф Марек "АССЕМБЛЕР на примерах"
вот здесь
на 153 странице пример:
Цитата:
Код:
org 0x100 

mov ax, 0x3D00   ;функция DOS для открытия файла, режим чтение-запись 
mov dx,file_name ;передаем указатель на имя файла, DS уже установлен 
int 0x21         ;вызов DOS 
jc error         ; ошибка? если да, перейти к метке error
5) попробуйте взять другой отладчик, например, TurboDebuger

p.s. выложите полный код программы, в конце концов. Иначе игры в телепатию могут долго продолжаться...

Последний раз редактировалось Serge_Bliznykov; 18.03.2011 в 09:19.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программа на файл emin313 Паскаль, Turbo Pascal, PascalABC.NET 1 14.06.2010 01:46
Программа подобие Paint, не открывает рисунки BaRSyk174 Общие вопросы Delphi 4 01.12.2009 17:01
Excel открывает файл при запуске Д'якон Microsoft Office Excel 5 05.05.2009 21:36
Программа на текстовый файл ZloyGenii2008 Паскаль, Turbo Pascal, PascalABC.NET 8 27.12.2008 14:20
Не открывает диск Д... Filonenko Свободное общение 7 25.11.2007 14:44