Ассемблер и программирование для IBM PC



         

ГЛАВА 23. Прерывания BIOS и DOS - часть 38


CODESG ENDS END BEGIN

Ассемблер для IBM PC. Программы. 119

TITLE SELDEL (COM) Выборочное удаление файлов ; Предполагается текущий дисковод; ; Примеры параметров: *.*, *.BAK, и т.д. CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG ORG 100H BEGIN JMP MAIN ; ---------------------------------------------------------- TAB EQU 09 LF EQU 10 CR EQU 13 CRLF DB CR,LF,'$' DELMSG DB TAB,'Erase','$' ENDMSG DB CR,LF,'No more directory entries',CR,LF,'$' ERRMSG DB 'Write protected disk','$' PROMPT DB 'y = Erase, N = Keep, Ret = Exit',CR,LF,'$' ; ---------------------------------------------------------- MAIN PROC NEAR ;Главная процедура MOV AH,11H ;Найти первый элемент CALL D10DISK CMP AL,0FFH ;Если нет элементов, JE A90 ; то выйти LEA DX,PROMPT ;Текст запроса CALL B10DISP A20: LEA DX,DELMSG ;Выдать сообщение CALL B10DISP ; об удалении файла MOV CX,11 ;11 символов MOV SI,81H ;Начало имени файла A30: MOV DL,[SI] ;Текущий символ CALL C10CHAR ; для вывода на экран INC SI ;Следующий символ LOOP A30 MOV DL,'?' CALL C10CHAR MOV AH,01 ;Получить односимвольный INT 21H ; ответ CMP AL,ODH ;Символ Return? JE A90 ; да - выйти OR AL,00100000B ;Перекодировать ; в прописную букву CMP AL,'y' ;Запрошено удаление? JNE A50 ; нет - обойти, MOV AH,13H ; да - удалить файл MOV DX,80H INT 21H CMP AL,0 ;Успешное удаление? JZ A50 ; да - обойти LEA DX,ERRMSG ; нет - выдать CALL B10DISP ; предупреждение JMP A90

Ассемблер для IBM PC. Программы. 120

A50: LEA DX,CRLF ;Перевести строку на экране CALL B10DISP MOV AH,12H CALL B10DISK ;Получить следующий элемент CMP AL,0FFH ;Есть еще? JNE A20 ; да - повторить A90: RET ;Выход в DOS MAIN ENDP ; Вывод строки на экран; ; --------------------- B10DISP PROC NEAR ;в DX находится адрес MOV AH,09 ; строки INT 21H RET B10DISP ENDP ; Вывод символа на экран; ; ---------------------- C10CHAR PROC NEAR ;в DL находится символ MOV AH,02 INT 21H RET C10CHAR ENDP ; Чтение элемента каталога: ; ------------------------ D10DISK PROC NEAR MOV DX,5CH ;Установить FCB INT 21H CMP AL,0FFH ;Есть еще элементы? JNE D90 PUSH AX ;Сохранить AL LEA DX,ENDMSG CALL B10DISP POP AX ;Восстановить AL D90: RET D10DISK ENDP




Содержание  Назад  Вперед