Главная страница
Навигация по странице:

  • ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

  • Цель работы

  • Выполнение работы

  • Отчет Лабораторная 1. Лабораторная работа 1 Драйвер экрана по дисциплине Эксплуатация и развитие компьютерных сетей и систем


    Скачать 66.5 Kb.
    НазваниеЛабораторная работа 1 Драйвер экрана по дисциплине Эксплуатация и развитие компьютерных сетей и систем
    Дата23.10.2022
    Размер66.5 Kb.
    Формат файлаdoc
    Имя файлаОтчет Лабораторная 1.doc
    ТипЛабораторная работа
    #749400


    Министерство образования и науки Российской Федерации

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

    СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

    Кафедра промышленной электроники (ПрЭ)

    Лабораторная работа № 1 «Драйвер экрана»

    по дисциплине

    Эксплуатация и развитие компьютерных сетей и систем.


    Выполнил:

    Студент ФДО
    Специальность: 210106
    « » 2014г.
    Проверил:


    2014

    Цель работы:

    Требуется произвести написание и отладку программ драйвера экрана. В результате отладки главная программа (имитатор прикладной программы) должна выполнить с помощью драйвера экрана вывод строки символов, состоящей из нескольких слов и управляющих символов "Перевод строки" и "Возврат каретки".
    Выполнение работы
    Принцип работы программы драйвера экрана основан на работе с ASCII символами в текстовом режиме. В качестве входных данных программы выступает массив символов, точнее кодов символов, взятых из стандартной таблицы ASCII.

    Программа драйвер может воспринимать коды символов как соответствующие команды и в соответствии с этими командами выполнять те или иные действия.

    В нашем случае таких действия будет два:

    - Перевод строки на новую строку;

    - Возврат каретки (возврат к первому символу в строке).

    Общепринятые коды для этих операций 10 (для перевода строки) и 13(для возврата каретки).

    Таким образом принцип работы нашей программы заключается в том, что программа анализирует каждый входной байт-код и если он не равен 10 или 13, то выводит символ, соответствующий этому коду, на экран. Если во входном потоке символов встретится байт-код 10, то программа переведет курсор на новую строку и продолжит вывод символов с новой строки. Если встретится код 13, то программа переведет курсор на начало строки и продолжит вывод символов с начала строки.
    Листинг 1 – Драйвер экрана
    Program DisplayDriver;

    var Symbols:array [1..20] of byte; {Массив входных символов}

    i,Length1,Length2:byte; {Строки данных}

    message1,message2: string;

    Begin

    message1:= 'Display'; {Определим выводные строки}

    message2:= 'Video Driver';

    Length1:= length(message1); {Длина строк}

    Length2:= length(message2);

    for i:=1 to Length1 do Symbols[i] := ord(message1[i]); {ACSII коды символов строк}

    for i:=Length1+3 to Length1+Length2+3 do Symbols[i] := ord(message2[i-Length1-2]); {Запишем коды в Symbols}

    Symbols[Length1+1]:= 10; {Запишем код перехода на новую строку}

    Symbols[Length1+2]:= 13; {Запишем код возврата каретки}
    asm {Начало ассемблерного кода}

    mov ah,0h {Установка видеорежима}

    mov al,02h {Текстовый видеорежим 80x25}

    int 10h {Прерывание BIOS}
    mov ah,01h {Установка размера курсора}

    mov cx,0001h

    int 10h

    mov ah,02 {Установка позиции курсора}

    mov bh,00 {Номер видеостраницы в памяти}

    mov dx,0000h {Установка координат}

    int 10h

    mov al,255

    mov i,al

    @Start: {Запись символов на экран}

    inc i

    mov bl,i {Номер смещения в массиве}

    mov al,[bx+offset+Symbols] {в регистр al запишем номер символа, которого будем выводить на экран }

    cmp al,10 {если это НЕ символ перевода строки, то перейдем на проверку возврата каретки}

    jne @next {Выполнение перевода курсора на новую строку }

    mov ah,02 {Установку курсора}

    mov bh,00

    inc dh {Инкремент номера строки}

    int 10h
    cmp i,23 {Если еще есть символ в массиве }

    jne @Start {Переходим к началу цикла @Start }
    @next:

    cmp al,13 {если это не код возврата каретки, то идем к выполнению @OUT}

    jne @OUT

    {Установка возврата каретки}

    mov ah,02h {Установка курсора}

    mov bh,00h

    mov dl,00h {Установка курсора в нулевой столбец}

    int 10h

    cmp i,23 {Если еще есть символ в массиве}

    jne @Start {Переходим к началу цикла @Start }
    @OUT: {если код не переводом строки и не возвратом каретки}

    mov ah,02 {Установка курсора}

    mov bh,00

    int 10h
    mov ah,09h {Вывод символа на экран}

    mov bh,0h

    mov bl,0ch {Установка атрибутов символа}

    mov cx,01h

    int 10h
    inc dl

    cmp i,23 {Если есть еще символы в массиве }

    jne @Start {Повторяем}
    mov ah,00h

    int 16h

    end; {конец ассемблерного кода}

    end.

    Рисунок 1 – результат запуска программы-драйвера


    Заключение

    В ходе выполнения работы разработана программа драйвер экрана, анализирующая входной массив символов. Если программа встречает специальный код 10 или 13, то она переводит курсор на новую строку либо в начало строки.


    написать администратору сайта