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



       

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


MOV AH,0AH ;Функция ввода LEA DX,NAMEPAR ;Ввести имя файла INT 21H CALL E10DISP ;Прокрутка на экране

CMP NAMELEN,00 ;Имя введено? JNE D20 ; да - продолжить, RET ; нет - выйти D20: MOV BH,00 ;Заменить символ Return MOV BL,NAMELEN MOV NAMEDTA[BX],' ' ;Записать пробел CALL F10WRIT ;Вызвать ; подпрограмму записи CLD LEA DI,NAMEDTA ;Очистить MOV CX,RECLEN / 2 ; поле MOV AX,2020H ; имени REP STOSW RET ;Выйти D10PROC ENDP ; Прокрутка и установка курсора:

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

; ----------------------------- E10DISP PROC NEAR MOV AH,09 ;Функция вывода на экран LEA DX,CRLF ;CR/LF INT 21H ;Вызов DOS CMP ROW,18 ;Последняя строка экрана? JAE E20 ; да - обойти, INC ROW ; нет - увеличить строку RET E20: MOV AX,0601H ;Прокрутка на 1 строку CALL Q10SCR CALL Q20CURS ;Установить курсор RET E10DISP ENDP ; Запись на диск: ; -------------- F10WRIT PROC NEAR MOV AH,15H ;Функция записи LEA DX,FCBREC INT 21H CMP AL,00 ;Запись без ошибок? JZ F20 ; да LEA DX,WRTMSG ; нет - CALL X10ERR ; выдать сообщение MOV NAMELEN,00 F20: RET F10WRIT ENDP ; Закрытие дискового файла: ; ------------------------ G10CLSE PROC NEAR MOV NAMEDTA,1AH ;Установить EOF CALL F10WRIT MOV AH,10H ;Функция закрытия LEA DX,FCBREC INT 21H RET G10CLSE ENDP ; Прокрутка экрана: ; ---------------- Q10SCR PROC NEAR ;AX уже установлен MOV BH,1EH ;Цвет желтый на синем MOV CX,0000 MOV DX,184FH INT 10H ;Прокрутка RET Q10SCR ENDP ; Установка курсора: ; ----------------- Q20CURS PROC NEAR MOV AH,02 MOV BH,00 MOV DL,00

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

MOV DH,ROW ;Установить курсор INT 10H RET Q20CURS ENDP ; Вывод сообщения об ошибке на диске: ; ---------------------------------- X10ERR PROC NEAR MOV AH,09 ;DX содержит INT 21H ; адрес сообщения MOV ERRCDE,01 ;Установить код ошибки RET X10ERR ENDP

CODESG ENDS END BEGIN

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

TITLE FCBREAD (EXE) Чтение записей созданных в CREATDSK ; ------------------------------------------------------- STACKSG SEGMENT PARA STACK 'Stack' DW 80 DUP(?) STACKSG ENDS ;-------------------------------------------------------- DATASG SEGMENT PARA 'Data' FCBREC LABEL BYTE ;FCB для файла FCBDRIV DB 04 ; дисковод D FCBNAME DB 'NAMEFILE' ; имя файла FCBEXT DB 'DAT' ; тип файла FCBBLK DW 0000 ; номер текущего блока FCBRCSZ DW 0000 ; длина логической записи DD ? ; размер файла (DOS) DW ? ; дата (DOS) DT ? ; зарезервировано (DOS) FCBSQRC DB 00 ; текущий номер записи DD ? ; относительный номер




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