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



         

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


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

; Очистка экрана: ; -------------- Q10CLR PROC NEAR MOV AX,0600H ;Функция прокрутки MOV BH,41H ;Цвет (07 для ч/б) MOV CX,0000 MOV DX,184FH INT 10H RET Q10CLR ENDP ; Установка курсора: ; ----------------- Q20CURS PROC NEAR MOV AH,02 ;Функция установки MOV BH,00 ; курсора MOV DH,ROW MOV DL,COL INT 10H RET Q20CURS ENDP ; Вывод сообщения об ошибке на диске: ; ---------------------------------- X10ERR PROC NEAR MOV AH,09 ;DX содержит адрес INT 21H ; сообщения INC ROW MOV ENDCDE,01 RET X10ERR ENDP CODESG ENDS END BEGIN

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

TITLE RANBLOK (COM) Прямое блочное чтение файла CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG ORG 100H BEGIN: JMP MAIN ;---------------------------------------------------- FCBREC LABEL BYTE ;FCB для дискового файла FCBDRIV DB 04 ; дисковод D FCBNAME DB 'NAMEFILE' ; имя файла FCBEXT DB 'DAT' ; тип файла FCBBLK DW 0000 ; номер текущего блока FCBRCSZ DW 0000 ; логическая длина записи FCBFLZ DD ? ; DOS размер файла DW ? ; DOS дата DT ? ; DOS зарезервировано DB 00 ; номер текущей записи FCBRNRC DD 00000000 ; относительный номер

DSKRECS DB 1024 DUP(?),'$' ;DTA для блока записей

ENDCODE DB 00 NORECS DW 25 ;Число записей OPENMSG DB '*** Open error ***',13,10,'$' READMSG DB '*** Open error ***',13,10,'$' ROWCTR DB 00 ; --------------------------------------------------- MAIN PROC NEAR CALL Q10CLR ;Очистить экран CALL Q20CURS ;Установить курсор CALL E10OPEN ;Открыть файл, ; установить DTA CMP ENDCODE,00 ;Успешное открытие? JNZ A30 ; нет - выйти CALL F10READ ;Читать записи CALL G10DISP ;Вывод блока на экран A30: RET ;Завершить программу MAIN ENDP ; Открыть дисковый файл: ; --------------------- E10OPEN PROC NEAR MOV AH,0FH ;Функция открытия файла LEA DX,FCBREC INT 21H CMP AL,00 ;Успешное открытие? JNZ A30 ; нет - ошибка

MOV FCBRCSZ,0020H ;Размер записи MOV AH,1AH LEA DX,DSKRECS ;Установить адрес DTA INT 21H RET E20:

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

LEA DX,OPENMSG ;Ошибка открытия файла CALL X10ERR RET E10OPEN ENDP ; Чтение блока: ; ------------ F10READ PROC NEAR MOV AH,27H ;Прямое чтение блока MOV CX,NORECS ;Число записей LEA DX,FCBREC INT 21H MOV ENDCODE,AL ;Сохранить код возврата RET F10READ ENDP ; Вывод блока на экран: ; -------------------- G10DISP PROC NEAR MOV AH,09 ;Функция вывода на экран LEA DX,DSKRECS INT 21H RET G10DISP ENDP ; Подпрограмма очистки экрана: Q10CLR PROC NEAR MOV AX,0600H ;Функция скрол MOV BH,41H ;Цвет (07 для ч/б) MOV CX,0000 MOV DX,184FH INT 10H RET Q10CLR ENDP ; Подпрограмма установки курсора: ; ------------------------------ Q20CURS PROC NEAR MOV AH,02 ;Функция установки курсора MOV BH,00 MOV DH,ROWCTR MOV DL,00 INT 10H INC ROWCTR RET Q20CURS ENDP ; Подпрограмма сообщения об ошибке диска: ; -------------------------------------- X10ERR PROC NEAR MOV AH,09 ;DX содержит адрес INT 21H ; сообщения MOV ENDCODE,01 RET X10ERR ENDP




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