Лекция по программированию

Автор работы: Пользователь скрыл имя, 11 Января 2011 в 19:34, лекция

Краткое описание

Язык ассемблера - это один из самых старых из всех существующих языков программирования. Когда-то это был один из основных языков программирования, без знания которого нельзя было заставить компьютер сделать что-либо полезное. Появились более удобные средства общения с компьютером. Но в отличии от других языков ассемблер не умирал, более того он это не смог сделать в принципе.

Содержимое работы - 1 файл

LECTS.DOC

— 893.00 Кб (Скачать файл)

        CALL    E100PEN         ;Открыть файл,

;                               ; установить DTA

        CMP     ENDCDE,00       ;Ошибка открытия?

       JNZ     A90             ; да - завершить программу

A20LOOP:

        CALL    F10READ         ;Чтение записи с диска

        CMP     ENDCDE,00       ;Ошибка чтения?

        JNZ     A90             ; да - выйти,

        CALL    G10DISP         ; нет - выдать имя,

        JMP     A20LOOP         ;       и продолжить

A90:    RET

BEGIN   ENDP

;               Открытие файла:

;               --------------

E100PEN PROC    NEAR

        MOV     AH,3DH          ;Функция открытия

        MOV     CX,00           ;Нормальные атрибуты

        LEA     DX,PATHNAM

        INT     21H

        JC      E20             ;Ошибка открытия?

        MOV     HANDLE,AX       ; нет - сохранить

        RET                     ;  файловый номер

E20:

        MOV     ENDCDE,01       ; да - выдать

        LEA     DX,OPENMSG      ;  сообщение об ошибке

        CALL    X10ERR

        RET

E100PEN ENDP

;               Чтение дисковой записи:

;               ----------------------

F10READ PROC    NEAR

        MOV     AX,3FH          ;Функция чтения

        MOV     BX,HANDLE

        MOV     CX,32           ;30 для имени, 2 для CR/LF

        LEA     DX,IOAREA

        INT     21H

        JC      F20             ;Ошибка при чтении?

        CMP     AX,00           ;Конец файла?

        JE      F30

        CMP     IOAREA,1AH      ;Маркер конца файла (EOF)?

        JE      F30             ; да - выйти

        RET

F20:

        LEA     DX,READMSG      ; нет - выдать

        CALL    X10ERR          ;  сообщение об ошибке

F30:

        MOV     ENDCDE,01       ;Код завершения

F90:    RET

F10READ ENDP

;               Вывод имени на экран:

;               --------------------

G10DISP PROC    NEAR

        MOV     AH,40H          ;Функция вывода на экран

        MOV     BX,01           ;Установить номер

        MOV     CX,32           ; и длину

        LEA     DX,IOAREA

        INT     21H

        CMP     ROW,20          ;Последняя строка экрана?

        JEA     G90             ; да - обойти

        INC     ROW

        RET

G90:

        MOV     AX,0601H

        CALL   Q10SCR          ;Прокрутка (скроллинг)

        CALL    Q20CURS         ;Установить курсор

        RET

G10DISP ENDP

;               Прокрутка (скроллинг) экрана:

;               ----------------------------

Q10SCR  PROC    NEAR            ;в AX - адрес элемента

        MOV     BH,1EH          ;Установить цвет

        MOV     CX,0000

        MOV     DXX,184FH       ;Функция прокрутки

        INT     10H

        RET

Q10SCR  ENDP

;               Установка курсора:

;               -----------------

Q20CURS PROC    NEAR

        MOV     AH,02           ;Функция установки курсора

        MOV     BH,00           ; курсор

        MOV     DH,ROW          ; строка

        MOV     DL,00           ; столбец

        INT     10H

        RET

Q20CURS ENDP

;               Вывод сообщения об ошибке:

;               -------------------------

X10ERR  PROC    NEAR

        MOV     AH,40H          ;в DX - адрес сообщения

        MOV     BX,01           ;Номер

        MOV     CX,20           ;Длина сообщения

        INT     21H

        RET

X10ERR  ENDP

 

CODESG  ENDS

        END     BEGIN

Программакоторая  читает  файлсозданный, отсортированный командой  DOS  SORT.

Для открытия файла используется функция шест.3D.  Полученный в  результате файловый номер заносится в поле HANDLE  и  используется  затем  в  функции шест.3F для чтения файла.

     В программе нет необходимости переносить курсор на новую строкутак как записи содержат в конце символы "возврат каретки" и "новая строка".

ДРУГИЕ ДИСКОВЫЕ ФУНКЦИИ В РАСШИРЕННОЙ ВЕРСИИ DOS

       Получение размера свободного дискового пространства: шест.36

     Данная функция выдает информацию о дисковой  памятиДля  выполнения функции необходимо загрузить в регистр DL номер  дисковода  (0  -  текущий дисковод, 1 - A, 2 - B и т.д.):

               MOV  AH,36H    ;Запрос на

               MOV  DL,0      ; текущий дисковод

               INT  21H       ;Вызов DOS

     При указании неправильного номера  дисковода  операция  возвращает  в регистре AX шест.FFFF, иначе следующие значения:

               в AX число секторов на кластер,

               в BX число доступных кластеров,

               в CX число байтов на сектор,

               в DX общее число кластеров на дисководе.

     В версии DOS младше 2.0 для получения информации  о  дисковой  памяти следует использовать функцию шест.1B (получить информацию из таблицы FAT).

Удаление файла: шест.41

     Для удаления файлов из программы (за исключением файлов  с  атрибутом "только чтение") используется функция шест.41.  При  этом  в  регистре  DX необходимо загрузить ASCIIZ строку, содержащую путь доступа и имя файла:

Информация о работе Лекция по программированию