Автор работы: Пользователь скрыл имя, 11 Января 2011 в 19:34, лекция
Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.
ASSEMBLE\EXAMPLES
Нулевой байт (шест.00) идентифицирует конец составного имени пути доступа. Для корневой директории возвращаемое значение состоит только из одного байта - шест.00. Таким образом можно получить текущее имя пути доступа для любого файла в подоглавлении. Пример демонстрирует использование данной функции.
CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,ES:CODESG
ORG 100H
BEGIN: JMP SHORT MAIN
; ------------------------------
PATHNAM DB 65 DUP(' ') ;Имя текущего пути доступа
; ------------------------------
MAIN PROC NEAR
MOV AH,19H ;Определить текущий диск
INT 21H
ADD AL,41H ;Заменить шест.номер
MOV DL,AL ; на букву: 0=A, 1=B ...
CAL B10DISP ;Выдать номер дисковода,
MOV DL,':'
CAL B10DISP ; двоеточие,
MOV DL,'\'
CAL B10DISP ; обратную косую
MOV AH,47H ;Получить текущий каталог
MOV DL,00
LEA SI,PATHNAM
INT 21H
A10LOOP:
CMP BYTE PTR [SI],0 ;Конец имени пути доступа
JE A20 ; да - выйти
MOV AL,[SI] ;Выдать на экран
MOV DL,AL ; имя пути доступа
CALL B10DISP ; побайтно
INC SI
JMP A10LOOP
A20: RET ;Выход в DOS
MAIN ENDP
B10DISP PROC NEAR
MOV AH,02 ;в DL - адрес элемента
INT 21H ;Функция вывода на экран
RET
B10DISP ENDP
CODESG ENDS
END BEGIN
Поиск файлов по шаблону: шест.4E и шест.4F
Данные функции аналогичны функциям шест. 11 и 12 базовой версии DOS. Функция 4E используется для начала поиска в оглавлении, а функция 4F – для продолжения. Для начала поиска в регистр DX необходимо загрузить адрес ASCIIZ-строки, содержащей имя пути доступа и шаблон поиска. Шаблон поиска может включать в себя символы ? и *. В регистре CX должно быть значение атрибута в любой комбинации битов (нормальный, оглавление, спрятанный или системный).
MOV AH,4EH ;Запрос на начало поиска
MOV CX,00H ;Нормальный атрибут
LEA DX,PATHNM1 ;ASCIIZ-строка
INT 21H ;Вызов DOS
Если операция находит файл, удовлетворяющий шаблону поиска, то в текущий буфер DTA в FCB заполняется следующей информацией:
00 - резервировано DOS для последующего поиска
21 - атрибут файла
22 - время файла
24 - дата файла
26 - размер файла: младшее слово, затем старшее слово
30 - имя и тип в виде 13-байтовой ASCIIZ строки, завершаемой шест.00.
В случае ошибки в регистре AX возвращается код 02 (не найдено) или 18 (нет больше файлов). Для продолжения поиска файлов (после функции шест.4E) используется функция 4F. Между этими функциями не следует нарушать содержимое DTA.
MOV AH,4FH ;Запрос на продолжение поиска
INT 21H ;Вызов DOS
Единственно возможный код в регистре AX - 18 (нет больше файлов). Обе рассмотренные функции не меняют состояние флага CF.
Переименование файла: шест.56
Для переименования файла используется функция шест.56. При этом в регистр DX должен быть загружен адрес ASCIIZ-строки, содержащей старые значения дисковода, пути доступа, имени и типа файла, а в регистр DI (в действительности ES:DI) - адрес ASCIIZ-строки, содержащей новые значения дисковода, пути доступа, имени и типа файла. Если указывается номер дисковода, то он должен быть одинаков в обоих строках. Путь доступа может быть различным, поэтому данная операция может не только переименовывать файл, но и переносить его в другое подоглавление.