Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065

глюк при открытии файла

23.01.2013, 18:09. Показов 1184. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть код
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
.model small
.stack 100h
.data
    in_file db 'input.txt', 0
    out_file db 'output.txt', 0
    m1 db '¬Ё*гб $'
    m01 db '¤ў*¤ж*вм $   ваЁ¤ж*вм $   б®а®Є $      Їпв줥бпв $  иҐбв줥бпв $ ᥬ줥бпв $  ў®бҐ¬м¤Ґбпв $¤Ґўп*®бв® $'
    m02 db '¤Ґбпвм $      ®¤Ё**¤ж*вм $  ¤ўЁ**¤ж*вм $  ваЁ**¤ж*вм $  зҐвла**¤ж*вм $Їпв**¤ж*вм $  иҐбв**¤ж*вм $ ᥬ**¤ж*вм $  ў®бҐ¬**¤ж*вм $¤Ґўпв**¤ж*вм $'
    m03 db 'бв® $      ¤ўҐбвЁ $   ваЁбв* $   зҐвлаҐбв* $Їпвмб®в $ иҐбвмб®в $ ᥬмб®в $  ў®бҐ¬мб®в $¤Ґўпвмб®в $'
    m04 db '*г«м$  ®¤Ё*$  ¤ў*$   ваЁ$   зҐвлаҐ$ Їпвм$  иҐбвм$ᥬм$  ў®бҐ¬м$¤Ґўпвм$'
    m05 db '®¤** $  ¤ўҐ $   ваЁ $   зҐвлॠ$Їпвм $  иҐбвм $ ᥬм $  ў®бҐ¬м $¤Ґўпвм $'
    m06 db 'влбпз $'
    buffer db 50 dup (0)
    handle dw ?
.code
start:
    mov ax, @data
    mov ds, ax
    mov es, ax
    
    mov ah, 3dh
    mov dx, offset in_file
    xor cx, cx
    int 21h
    jnc @@no_error1
    jmp exit
@@no_error1:
    mov handle, ax
    mov bx, ax
    mov ah, 3fh
    mov dx, offset buffer
    mov cx, 50
    int 21h
    mov cx, ax
    call StrToInt
под отладчиком файл открывается, а без отладчика ошибка... в чем может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.01.2013, 18:09
Ответы с готовыми решениями:

Глюк при открытии с файла в Stringgrid cells
Архив проекта То неправильно первую строку считает,то вообще считывает только столбцы а заносит в строки.

Странный глюк при открытии новых окон с Java
Перед открытием во всех браузерах появляется сообщение: Wrong pref entry: google.com.qtyle После нажатия ОК окно открывается. ...

При использовании кода в модуле ошибка при открытии файла
есть такой простенький код, которій отлично работает в скрипте *.pl use Cwd; my $cwd = getcwd(); $cwd = $cwd ....

4
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
23.01.2013, 18:50
Цитата Сообщение от Fatal Error Посмотреть сообщение
mov ah, 3dh
Кривой метод. Лучше используй AX=6C00h;

Добавлено через 1 минуту
Вот подсказка по использованию:
Функция 6Ch появилась в последних версиях MS DOS (DOS 4.0+). С ее появлением устраняется необходимость отслеживать существование создаваемого файла. Для корректной работы достаточно задать нужные значения в соответствующих регистрах. Анализ возможных значений показывает, что данная функция фактически заменяет существовавшие до этого функции создания и открытия файлов.
Вход: АХ = 6C00h; BL = флаги — режим открытия (значения битов: 7 — наследование; 4-6 — режим разделения; 3=0 — резерв; 0-2 — режим доступа); ВН = флаги (значения битов: 6=0 — использовать стандартную для MS DOS буферизацию; 6=1 — отменить стандартную для MS DOS буферизацию; 5=0 — использовать обычный обработчик ошибок (int 24h); 5=1 — не использовать обычный обработчик ошибок (int 24h), для выяснения причины ошибки использовать функцию 59h int 21h); CX = атрибуты создаваемого (и только) файла; DL = действия, если файл существует или не существует (значения бит: 0-3 — действие, если файл существует (0000 — вернуть ошибку; 0001 — открыть файл; 0002 — открыть файл без сохранения существующего); 4-7 — действие, если файл не существует (0000 — вернуть ошибку; 0001 — открыть файл; 0002 — создать и открыть файл); DH = 00h — резерв; DS:SI — адрес строки с ASCIZ-именем файла.
Выход: CF = 0 — успешное выполнение функции: АХ = дескриптор файла, СХ = состояние (0 — файл открыт; 1 — файл создан и открыт; 2 — файл открыт без сохранения содержимого существующего файла); CF = 1 — АХ = код ошибки.
Следующий фрагмент программы показывает вариант применения функции 6Ch.

:prg07_04.asm - программа демонстрации открытия или создания файла :с расширенными возможностями в текущем каталоге функцией 6Сп.
.data
handle dw 0 :дескриптор файла
filename db 'my_file.txt'.0
point_fname dd filename
.code
хогсх.сх атрибуты файла - обычный файл
movbx.2 :режим доступа обычный - доступ для чтения-записи
movdx.l :если файл существует, то открыть его. в обратной случае вернуть ошибку
(для эксперимента)
Ids si .point_fname-.формируем указатель на имя файла movah.6ch :номер функции DOS int 21h открываем файл jnc ml ;если файл существовал, то переход movdx.lOh -.открыть файл movah.6ch :номер функции DOS int 21h :открываем файл jc exit -.переход в случае ошибки ml: :действия при успешном открытии файла: mov handle.ах :сохраним дескриптор файла
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
23.01.2013, 19:47  [ТС]
присмотреться к ней можно, но я пока обойдусь стандартным прерыванием

Добавлено через 37 минут
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
.data
    in_file db 'in.txt', 0
    out_file db 'out.txt', 0
    m1 db '¬Ё*гб $'
    m01 db '¤ў*¤ж*вм $   ваЁ¤ж*вм $   б®а®Є $      Їпв줥бпв $  иҐбв줥бпв $ ᥬ줥бпв $  ў®бҐ¬м¤Ґбпв $¤Ґўп*®бв® $'
    m02 db '¤Ґбпвм $      ®¤Ё**¤ж*вм $  ¤ўЁ**¤ж*вм $  ваЁ**¤ж*вм $  зҐвла**¤ж*вм $Їпв**¤ж*вм $  иҐбв**¤ж*вм $ ᥬ**¤ж*вм $  ў®бҐ¬**¤ж*вм $¤Ґўпв**¤ж*вм $'
    m03 db 'бв® $      ¤ўҐбвЁ $   ваЁбв* $   зҐвлаҐбв* $Їпвмб®в $ иҐбвмб®в $ ᥬмб®в $  ў®бҐ¬мб®в $¤Ґўпвмб®в $'
    m04 db '*г«м$  ®¤Ё*$  ¤ў*$   ваЁ$   зҐвлаҐ$ Їпвм$  иҐбвм$ᥬм$  ў®бҐ¬м$¤Ґўпвм$'
    m05 db '®¤** $  ¤ўҐ $   ваЁ $   зҐвлॠ$Їпвм $  иҐбвм $ ᥬм $  ў®бҐ¬м $¤Ґўпвм $'
    m06 db 'влбпз $'
    done db '‚лЇ®«*Ґ*® гбЇҐи*®!$'
    error db 'ЋиЁЎЄ* ЇаЁ ®вЄалвЁЁ Ё«Ё б®§¤**ЁЁ д*©«*.$' 
    write_buff db 100 dup (?)
    buffer db 50 dup (0)
    handle dw ?
.code
start:
    mov ax, @data
    mov ds, ax
    mov es, ax
    
    mov ah, 3dh
    mov dx, offset in_file              ;вот тут файл не открывается без отладчика. под отладчиком файл находит нормальмно
    xor cx, cx
    int 21h
    jnc @@no_error1
    jmp FE
@@no_error1:
    mov handle, ax
    mov bx, ax
    mov ax, 3f00h                   ;тут из файла читается 5 байт, независимо от того, сколько на самом деле
    mov dx, offset buffer           ;весит файл.... хоть 20, хоть 1 байт - считано 5
    mov cx, 50
    int 21h
    mov cx, ax
    mov ah, 3eh
    mov bx, handle              ;дальше вроде бы все норм...
    int 21h
    call StrToInt
    mov di, offset write_buff
    cld
    cmp ax, 0 
    jge _1
    push ax
    mov ax, ' -'
    stosw
    pop ax
    neg ax
_1:     
    push di
    xor di, di
    cmp ax, 10000
    jb @@nxt1
    jmp @@1
@@nxt1: cmp ax, 1000
    jb @@nxt2
    jmp @@2
@@nxt2: pop di
    cmp ax, 100
    jb @@nxt3
    jmp @@3
@@nxt3: cmp ax, 10
    jb @@nxt4
    jmp @@4
@@nxt4: jmp @@5
 
 
@@1:    mov di, 1  
    xor dx, dx
    cmp ax, 20000
    jae __2
    mov cx, 1000
    div cx
    push dx
    sub ax, 10
    mov cl, 14
    mul cl
    mov di, offset write_buff
    mov si, offset m02
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
    jmp short __3
 
__2:    mov cx, 10000
    div cx
    push dx
    sub al, 2
    mov cl, 13
    mul cl
    mov si, offset m01
    add si, ax
    mov di, offset write_buff
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
__3:    
    pop ax
    or ax, ax
    jne @@2
write:
    push ax
    mov si, offset m06
    mov di, offset write_buff
    mov cx, 6
    rep movsb
    pop ax
    or  ax, ax
    jne @@3
    jmp exit
@@2:
    cmp ax, 1000
    jae @@n
    or di, di
    pushf
    pop di
    popf
    jne write
    jmp short @@3
@@n:
    xor dx, dx
    mov cx, 1000
    div cx
    push dx
    dec ax
    mov cl, 8
    mul cl
    mov si, offset m05
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
    mov si, offset m06
    mov cx, 6
    rep movsb
    pop ax
    or ax, ax
    jne @@3
    jmp exit
      
@@3:   
    cmp ax, 100
    jb @@4
    xor dx, dx
    mov cx, 100
    div cx
    push dx
    dec ax
    mov cl, 11
    mul cl
    mov si, offset m03
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
    pop ax
    or ax, ax
    je exit
    
@@4:    mov cl, 10
    cmp ax, 10
    jb @@5
    cmp ax, 20
    jae _2
    div cl
    mov al, ah
    mov cl, 14
    mul cl
    mov si, offset m02
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6 
    jmp short exit
 
_2:     div cl
    push ax
    sub al, 2
    mov cl, 13
    mul cl
    mov si, offset m01
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
    pop ax
    or ah, ah
    je exit
    mov al, ah
 
@@5:    mov cl, 7
    mul cl
    mov si, offset m04
    add si, ax
    lodsb
    cmp al, '$'
    je $+5
    stosb
    jmp $-6
 
    mov ah, 3ch
    mov dx, offset out_file
    xor cx, cx
    int 21h
    mov bx, ax
    mov dx, offset write_buff
    mov cx, 100
    mov ah, 40h
    int 21h
    mov ah, 3eh
    int 21h
    jmp short good
 
FE:
    mov dx, offset error
    mov ah, 9
    int 21h 
    jmp short exit
good:
    mov dx, offset done
    mov ah, 9
    int 21h 
exit:   xor ax, ax
    int 16h
    mov ax, 4c00h
    int 21h
 
    
StrToInt proc 
    push dx
    push bx
    push cx
    push si
    push di
    push bp
    xor di, di
    xor ax, ax
    xor dx, dx
    mov bx, 10
    mov si, offset buffer
    cmp byte ptr [si], '-'
    jne __loop
    inc si
    mov bp, 1
__loop:
    xor dx, dx
    cmp di, 4
    jz end_convert
    mov dl, byte ptr [si]
    cmp dl, 30h
    jb @@nxt
    cmp dl, 39h
    ja @@nxt
    push dx
    mul bx
    pop dx
    sub dl, 30h
    add ax, dx
    inc di
@@nxt:
    inc si
    loop __loop
 
end_convert:
    cmp bp, 1
    jne $+4
    neg ax
    pop bp
    pop di
    pop si
    pop cx
    pop bx
    pop dx
    ret
StrToInt endp
 
OutInt proc
    push ax
    push dx
    push bx
    push cx
    push ds
    push di
    push cs
    pop ds
    xor cx, cx
    mov bx, 10
oi2:
    xor dx, dx
    div bx
    add dx, '0'
    push dx
    inc cx
    or ax, ax
    jne oi2
    mov ah, 2
oi3:
    pop dx
    int 21h
    loop oi3
    pop di
    pop ds
    pop cx
    pop bx
    pop dx
    pop ax
    ret
OutInt endp
 
 
end start
вот код. ошибки указаны в коментах. (почти в самом начале, далее все работает как надо)

Добавлено через 3 минуты
Цитата Сообщение от Fatal Error Посмотреть сообщение
Assembler
1
mov dx, offset in_file* * * * * * * ;вот тут файл не открывается без отладчика. под отладчиком файл находит нормальмно
даже не так... еще хуже... когда собираю прогу и сразу в батнике пускаю отладчик, то все находит, но если я этот отладчик закрою (т.е. батник из которого пускался отладчик при трансляции), и открою просто отладчик и в нем открою файл - не находит... не пойму что за хрень...

Добавлено через 3 минуты
взял AFDPRO (до этого делал под трупоотладчиком), файл также открывается только при трансляции, а вот читает файл он нормально...
0
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
23.01.2013, 19:52
Цитата Сообщение от Fatal Error Посмотреть сообщение
даже не так... еще хуже... когда собираю прогу и сразу в батнике пускаю отладчик, то все находит, но если я этот отладчик закрою (т.е. батник из которого пускался отладчик при трансляции), и открою просто отладчик и в нем открою файл - не находит... не пойму что за хрень...
Теперь все понятно. Дело в том, что файл ищется в текущем каталоге, а при запуске средствами винды (без коммандной строки) эта переменная среды не очень эмулируется
Просто укажи путь к файлу и все. По другому не обойтись.

Добавлено через 4 минуты
Цитата Сообщение от Fatal Error Посмотреть сообщение
но я пока обойдусь стандартным прерыванием
А разве 6c не стандартное?
Функция 6Ch появилась в последних версиях MS DOS (DOS 4.0+).
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
24.01.2013, 00:23  [ТС]
Цитата Сообщение от Anonimys Посмотреть сообщение
Теперь все понятно. Дело в том, что файл ищется в текущем каталоге, а при запуске средствами винды (без коммандной строки) эта переменная среды не очень эмулируется
тут прям глюк на глюке... ни одного изменения не внес, запустил без отладчика.. и увидел - "Выполнено успешно"... а в отладчике тот же глюк... но теперь там другая проблема... в файл информация пишется лево... буду пробовать прописать полный путь...

Добавлено через 4 часа 23 минуты

Не по теме:

спустя пол дня работы над прогой я ее закончил!!! :yahoo::dance:

с файлами были непонятные ошибки... то файл не открывается, то открывается, но читается не так... либо еще что-то... ошибки непонятной природы как самопроизвольно появлялись так и самопроизвольно уходили
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.01.2013, 00:23
Помогаю со студенческими работами здесь

Исключения при открытии файла
Доброго времени суток. Прошу Вашего ответа на волнующий меня вопрос. В своей программе я работаю с файлом из которого, в последствии...

Ошибка при открытии файла
Выписал их книги прогу, которая почему то не работает в Visio 2012(ругается на fopen). Объясните пожалуйста что будет делать программа, и...

Задержка при открытии файла
Ребят подскажите! при открытии файла двойным кликом идет задержка! иногда приходится открывать файлы через enter. только вот отключаешь...

Ошибка при открытии файла
Запускаю программу на выполнение for i:=0 to k-1 do if MatchesMask(Spisok, '*ir.zak') then begin ind:=i; end; ...

ошибка при открытии файла
я написал функцию дя открытия файла...но при попытке запуска выскакивает ошибка...что делать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru