Создаю я с помощью функции файл с атрибутами в CX=0 потом опрашиваю атрибуты созданного файла - мне возвращают CX=20h то бишь архив бит установлен, а я такого не заказывал при создании. Что за кухня??? исходничек: create_c\ SEGMENT $start: mov AX,SEG(file_name) mov DS,AX lea DX,file_name mov CX,0 mov AH,3Ch int 21h jc $error mov BX,AX mov AH,3Eh int 21h mov AH,43h xor AL,AL int 21h jmp $exit $error: mov DL,'E' mov AH,2h int 21h $exit: mov AH,4Ch int 21h create_c\ ENDS create_d\ SEGMENT file_name\ BYTE 'a:\test.txt',0 create_d\ ENDS create_s\ SEGMENT STACK BYTE 256\ DUP (?) create_s\ ENDS END $start
Попробуй поставить архивный бит в единицу, только зачем это? Вообще принято, чтобы архивный бит у всех файлов стоял. Его используют программы backup'а и некоторые вирусы
Я не против всякого рода соглашений - но тут от соглашения ни шагу в сторону сделать нельзя рекомендовали бы создавать файлы с 20h в cx я был бы в восторге а тут ставишь 0 получаешь 20h
Правильно получаеш Я не знаю для чего это сделано, но при создании указываются только следующие атрибуты: Код (Text): CX Attribute specified 00h Normal 01h Read-only 02h Hidden 04h System Остальные берутся по умолчанию. Если надо изменить остальные атрибуты используй функцию 43h. Код (Text): .386p code segment para public 'code' use16 assume cs:code, ds:code org 100h start: mov ah,3Ch xor cx,cx mov dx,offset fname int 21h mov ax,4301h int 21h ret fname db 'test.txt',0 code ends end start Получаем желаемый ноль