Конфигурация:Использование 3Dh причины прерывания только возвращения "Acces Denied"
MS-DOS 16 BIT (запись в файл .asm, затем их компиляции с TASM и TLINK)
ОС Windows 7 x64
Я создал простую программу в сборке, которая должна только ОТКРЫТЬ файл и написать ему текст.
Вот код для него:
assume cs:code, ds:data
data segment
fileName db "input.txt", 0 ; We assure it is an ASCIIZ(ero) file.
toWrite db "Hello World!", "$"
data ends
code segment
writeToFile:
; pentru functia 3Dh
mov AH, 3Dh
mov AL, 0h
mov dx, offset fileName
int 21h
ret
start_program:
mov ax, data
mov ds, ax
CALL writeToFile
mov ax, 4c00h
int 21h
code ends
end start_program
Я использовал TurboDebugger, чтобы посмотреть, что происходит. Как ни странно, он всегда ставит в AX
значении 0005
смысла Access Denied
Все, что я мог бы найти в интернете для поиска ASSEMBLY access denied open file
было около DLL
«s и это не помогло.
Я пробовал все, от перезапуска моей программы до открытия dosbox «Как администратора». К сожалению, ничего не получилось, и у меня нет идей.
Странно, что мой друг сказал, что после активации его окон 10 все работает нормально.
В чем причина получения только «доступа отказано»? Я упоминаю, что мне удалось создать, удалить и закрыть файлы, но я не могу их открыть.
'AX'' '' 'не означает, что доступ запрещен сам по себе, только если' CF' установлен для указания ошибки. В противном случае это всего лишь ваш дескриптор файла. Итак, вы проверили значение 'CF'? – Jester
Нет, потому что до сих пор я работал с функциями, которые не требовали 'CF' и забывали об этом. Да, ты прав! «CF» - 0. Спасибо. Я удалю этот пост. – SnuKies
Это был хорошо заданный вопрос, хотя (не многие мы видим), слишком плохо, что у него есть тривиальный ответ :) – Jester