мета-данные страницы
Загрузка не удалась. Возможно, проблемы с правами доступа?
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| 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 = код ошибки | ||