Файлы и дескрипторы -->> Паскаль |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Файлы и дескрипторы -->> Паскаль |
Altair |
19.06.2004 21:06
Сообщение
#1
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Как вставить в программу на паскале код открытия, закрытия и т.д. процедур для работы с файлами.
Иначе: мне нужно что-то вроде исходников процедур Assign, reset и т.д. -------- Что такое дескриптор и можно-ли как то их использовать в пасе? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
BlackShadow |
20.06.2004 21:33
Сообщение
#2
|
Гость |
В данном случае, дескриптор - это просто 16-битное значение.
Function FileOpen(FileName:PChar):Word;Assembler; Ну, это самое простое... |
Dark |
21.06.2004 6:10
Сообщение
#3
|
Знаток Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: 3 |
В общем то BlackShadow прав, но я добавлю еще кое что
FILE OPEN: Function 3Dh IN: ah= 3Dh al= open mode bits 7-3: нас неинтересует, лучше обнулять bits 2-0: Access code 000 read only access 001 write only access 010 read and write access DS:DX= указатель на имя файла в ASCIIZ формате ('test.txt'#0) Returns: CF=1 ошибка AX= error code- don't worry about what they are, if the carry is set, you didn't open the file. CF=0 нет ошибок AX= File Handle ; СОХРАНЯТЬ!!! ---- EXAMPLE ---- [...] ;header stuff ---------------------------------------------------------------------------- FILE CLOSE: Function 3Eh IN: AH= 3Eh BX= File Handle RETURN: CF=1 ошибка ---- EXAMPLE ---- mov bx,[FileHandle] ---------------------------------------------------------------------------- FILE READ: Function 3Fh IN: AH= 3Fh BX= File Handle CX= сколько байт читать DS:DX= куда поместить(FAR адрес памяти) RETURN: AX= количество прочитанных байт, если 0 - конец файла ---- EXAMPLE ---- mov bx,[FileHandle] ---------------------------------------------------------------------------- FILE WRITE: Function 40h IN: AH= 40h BX= File Handle CX= сколько байт читать DS:DX= откуда записывать на диск(FAR адрес памяти) RETURN: AX= количество записанных байт, если не равно тому что мы помещаем в cx - у нас ошибка ---- EXAMPLE ---- mov bx,[FileHandle] ---------------------------------------------------------------------------- FILE CREATE: Function 3Ch IN: ah= 3Ch cl= file attribute bit 0: read-only bit 1: hidden bit 2: system bit 3: volume label bit 4: sub directory bit 5: Archive bit 6&7: reserved DS:DX= указатель на имя файла в ASCIIZ формате ('test.txt'#0) Returns: CF=1 ошибка AX= код ошибки CF=0 нет ошибок AX= File Handle ; СОХРАНЯТЬ!! ---- EXAMPLE ---- mov ah,3ch ---------------------------------------------------------------------------- FILE DELETE: Function 41h IN: ah= 41h DS:DX= указатель на имя файла в ASCIIZ формате ('test.txt'#0) Returns: CF=1 ОШИБКА!! AX= error code- 2= file not found, 3= path not found 5= access denied CF=0 no error ---- EXAMPLE ---- mov ah,41h ;kill the sucker ---------------------------------------------------------------------------- FILE MOVE POINTER: Function 42h IN: ah= 42h BX= File Handle CX:DX= 32 bit pointer куда переместиться? AL= 0 offset from beginning of file = 1 offset from curent position = 2 offset from the end of the file Returns: CF=1 error occured AX= error code- no move occured CF=0 no error DX:AX 32 bit pointer где мы оказались ---- EXAMPLE ---- mov ah,42h ;НАХОЖДЕНИЕ РАЗМЕРА ФАЙЛА!!! ---------------------------------------------------------------------------- FILE CHANGE MODE: Function 43h IN: ah= 43h DS:DX= указатель на имя файла в ASCIIZ формате ('test.txt'#0) al= 0 returns file attributes in CX al= 1 sets file attributes to what's in CX Returns: CF=1 error occured AX= error code- 2= file not found, 3= path not found. 5= access denied CF=0 no error ---- EXAMPLE ---- Lets erase a hidden file in your root directory... FileName db "C:\msdos.sys",0 [...] -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Dark |
21.06.2004 6:11
Сообщение
#4
|
Знаток Группа: Пользователи Сообщений: 408 Пол: Мужской Репутация: 3 |
ПРОГРАММА НЕ МОЯ =)
; VERY, VERY simple ANSI/text viewer -------------------- - Где я?
- Во тьме. - В какой тьме? - Во тьме твоего мозга. |
Altair |
21.06.2004 13:01
Сообщение
#5
|
Ищущий истину Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Отлично! Спасибо всем!
-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 28.04.2024 3:51 |