мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
asm:lesson6 [21/10/2010 15:14] – arabusov | asm:lesson6 [21/10/2010 21:30] (текущий) – arabusov | ||
---|---|---|---|
Строка 7: | Строка 7: | ||
байт, | байт, | ||
содержать непосредственное значение или константу, | содержать непосредственное значение или константу, | ||
- | Другим | + | Другим |
- | ственное | + | |
команде, | команде, | ||
Строка 81: | Строка 80: | ||
формате ASCII. | формате ASCII. | ||
Символьная | Символьная | ||
- | котоpой указывается более двух символов в нормальной последо | + | котоpой указывается более двух символов в нормальной последовательности |
- | вательности | + | |
представляет единственно | представляет единственно | ||
символьных данных. | символьных данных. | ||
Строка 126: | Строка 124: | ||
помнить, | помнить, | ||
как DB ' | как DB ' | ||
- | 3132, а числовая константа, | + | 3132, а числовая константа, |
- | ляет двоичное число и генерирует шест. 0C. | + | |
==== Директива опеделения байта ==== | ==== Директива опеделения байта ==== | ||
Из различных | Из различных | ||
Строка 294: | Строка 291: | ||
слова MPY вместо обычного мнемокода MUL. | слова MPY вместо обычного мнемокода MUL. | ||
- | ===== работа с фай | + | ===== Работа с файлами в MS-DOS ===== |
+ | |||
+ | ==== Функции типа дескриптора ==== | ||
+ | |||
+ | В MS-DOS начиная со второй версии файловая система стала иерархической, | ||
+ | C: | ||
+ | Специфика MS-DOS такова, | ||
+ | | ||
+ | преобразуется в | ||
+ | 43 3a 5c 53 59 53 54 45 4d 5c 43 4f 4d 4d 41 4e 44 2e 43 4f 4d 00 | ||
+ | Для работы с файлом с помощью функции типа дескриптора, | ||
+ | jc error | ||
+ | где error - указатель на начало обработчика. | ||
+ | Теперь рассмотрим некоторые функции типа дескриптора, | ||
+ | === Создание файла === | ||
+ | По заданному в коде ASCIIZ пути создаёт новый файл на указанном или текущем диске или на указанном или текущем каталоге. Если указанный файл существует, | ||
+ | При вызове: | ||
+ | * AH = 3cH | ||
+ | * CX = атрибут (в нашем случае всегда 0) | ||
+ | * DS:DX - адрес строки, | ||
+ | При возврате: | ||
+ | Успешно - флаг переноса сброшен | ||
+ | * AX = дескриптор | ||
+ | Неудачно - флаг переноса установлен | ||
+ | * AX = код ошибки | ||
+ | === Открытие файла === | ||
+ | По заданному в коде ASCIIZ пути открывает файл на указанном или текущем диске или на указанном или текущем каталоге. Возвращается дескриптор. | ||
+ | При вызове: | ||
+ | * AH = 3dH | ||
+ | * AL = режим доступа | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | * DS:DX - адрес строки, | ||
+ | При возврате: | ||
+ | Успешно - флаг переноса сброшен | ||
+ | * AX = дескриптор | ||
+ | Неудачно - флаг переноса установлен | ||
+ | * AX = код ошибки | ||
+ | === Закрытие файла === | ||
+ | При вызове: | ||
+ | * AH = 3Eh | ||
+ | * BX = дескриптор | ||
+ | При возврате: | ||
+ | Успешно - флаг переноса сброшен | ||
+ | Неудачно - флаг переноса установлен | ||
+ | * AX = код ошибки | ||
+ | === Чтение файла === | ||
+ | При вызове: | ||
+ | * AH = 3Fh | ||
+ | * BX = дескриптор | ||
+ | * CX = число байт для чтения | ||
+ | * DS:DX = адрес буфера | ||
+ | При возврате: | ||
+ | Успешно - флаг переноса сброшен | ||
+ | * AX = число переданных байтов (может быть меньше CX!) | ||
+ | Неудачно - флаг переноса установлен | ||
+ | * AX = код ошибки | ||
+ | === Запись в файл === | ||
+ | При вызове: | ||
+ | * AH = 40h | ||
+ | * BX = дескриптор | ||
+ | * CX = число байт для вывода записи | ||
+ | * DS:DX = адрес буфера | ||
+ | При возврате: | ||
+ | Успешно - флаг переноса сброшен | ||
+ | * AX = число переданных байтов (может быть меньше CX!) | ||
+ | Неудачно - флаг переноса установлен | ||
+ | * AX = код ошибки |