Исследование прерываний, работающих с видеосистемой в персональном компьютере

Страницы работы

Содержание работы

Министерство образования РФ

Хабаровский государственный технический университет

Заочный факультет ускоренного обучения

Кафедра «Вычислительная техника»

ЛАБОРАТОРНАЯ РАБОТА № 6

По дисциплине «Организация ЭВМ и систем»

Исследование прерываний, работающих с видеосистемой

в персональном компьютере

Работу выполнил: студент Войтенок А.А.

Шифр № 4кПОв  0013796

Проверил: доцент к.т.н. Шоберг А.Г.

г. Хабаровск

2002 г.

Цель работы: изучить принципы управления видеорежимами в персональном компьютере и получить навыки работы с экраном, используя систему прерываний BIOS.

В работе изучены следующие функции прерывания BIOS 10h:

Назначение

Функция

Входные параметры

Выходные параметры

Установка видеорежима

00h

AL= видеорежим

Установка размера курсора

01h

CH=верхняя линия сканирования

CL=нижняя линия сканирования линии задаются в диапазоне 0-13

Установка позиции курсора

02h

BH=номер страницы

DH=строка

DL=столбец

Прокрутка экрана вверх

06

AL=количество прокручиваемых строк

СH,CL= координаты верхнего левого угла прокручиваемого участка

DH,DL=координаты правого нижнего угла

Прокрутка экрана вниз

07

AL=количество прокручиваемых строк

СH,CL= координаты верхнего левого угла прокручиваемого участка

DH,DL=координаты правого нижнего угла

Вывод символа в текущую позицию экрана

0Ah

AL=символ

BH=номер страницы

BL=цвет в графическом режиме

CX=число символов

Получение текущего видеорежима

0Fh

AL=текущий видеорежим,

AH=число символов в строке

BH=номер страницы

Контрольные вопросы.

2.  а) Установка курсора, начинающегося на 5 линии сканирования и заканчивающийся на 12 линии:

mov ah,01h

mov ch,5

mov cl,12

int 10h

б) Прокрутка экрана(25x80) на 10 строк:

mov ah,06

mov al,10

mov bh,07

mov cx,0000

mov dx,184Fh

int 10h

3.  Максимальное количество цветов в палитре как для фона, так и для текста равно 16 в текстовом режиме.

4.  Сиреневый на ярко-голубом 9Dh

Коричневый на жёлтом E6h

Красный на сером с мерцанием - не существует, красный на чёрном с мерцанием 84h

Текст программы.

data segment para public 'data'

INPUT_STRING   db 128 dup(0)

BUFFER                 db 64 dup(0)

M_MODE db 0dh,0ah,0dh,0ah,'Current video mode               1 $'

M_SET db        0dh,0ah,        'Set new mode                       2 $'

M_CURSOR       db       0dh,0ah, 'Cursor shape                      3 $'

M_POSITION     db      0dh,0ah, 'Cursor position                   4 $'

M_CLEAR     db  0dh,0ah, 'Screen clear                      5 $'

M_SCROLL_UP db   0dh,0ah, 'Scroll UP                 6 $'

M_SCROLL_DOWN db 0dh,0ah, 'Scroll DOWN                      7 $'

M_PUT_CHAR     db      0dh,0ah, 'Put char                   8 $'

M_QUIT         db   0dh,0ah, 'Quit                                  Esc $'

T_MODE  db      0dh,0ah,'Video mode : $'

T_TOP   db     0dh,0ah,'Top line :   $'

T_BOTTOM db  0dh,0ah,'Bottom line :   $'

T_XPOSITION db 0dh,0ah,'Column :      $'

T_YPOSITION db 0dh,0ah,'String :   $'

T_CHAR_IN_STRING db 0dh,0ah,'Char in string : $'

T_PAGE db 0dh,0ah,'Page number : $'

TEMP_BYTE db 0

NL             db      0dh,0ah,'$'

DECIM db 10

data ends

stk segment  stack

db 256 dup(0)

stk ends

code segment  para public 'code'

main proc

assume cs:code,ds:data,ss:stk,es:data

mov ax,data

mov ds,ax

circle:

outtitle M_MODE

outtitle M_SET

outtitle M_CURSOR

outtitle M_POSITION

outtitle M_CLEAR

outtitle M_SCROLL_UP

outtitle M_SCROLL_DOWN

outtitle M_PUT_CHAR

outtitle M_QUIT

mov ah,00h

int 16h

cmp ah,01h

jne  L1       

jmp exit

L1:     cmp ah,02h     ; определение видео режима

je  L11

jmp L2

L11:   

mov ah,0Fh

int 10h

mov TEMP_BYTE,al

outnumber T_MODE,TEMP_BYTE,BUFFER,1

mov TEMP_BYTE,ah

outnumber T_CHAR_IN_STRING,TEMP_BYTE,BUFFER,1

mov TEMP_BYTE,bh

outnumber T_PAGE,TEMP_BYTE,BUFFER,1

jmp circle

L2: cmp ah,03h ; установка видео-режима

jne L3

outtitle T_MODE

push offset INPUT_STRING

CALL asciiz_input

push offset TEMP_BYTE

CALL asciiz_to_byte

pop ax

pop ax

mov ah,00h

mov al,TEMP_BYTE

int 10h

jmp circle

L3:

cmp ah,04h     ; замена формы курсора

jne L4

outtitle T_TOP

push offset INPUT_STRING

CALL asciiz_input

push offset TEMP_BYTE

CALL asciiz_to_byte

pop bx

mov ch,TEMP_BYTE

outtitle T_BOTTOM

CALL asciiz_input

push offset TEMP_BYTE

CALL asciiz_to_byte

pop bx

pop bx

mov cl,TEMP_BYTE

mov ah,01

int 10h

jmp circle

L4:

cmp ah,05h     ; позиционирование курсора

jne L5

outtitle T_XPOSITION

push offset INPUT_STRING

CALL asciiz_input

push offset TEMP_BYTE

CALL asciiz_to_byte

pop bx

mov dl,TEMP_BYTE

outtitle T_YPOSITION

CALL asciiz_input

push offset TEMP_BYTE

CALL asciiz_to_byte

pop bx

pop bx

mov dh,TEMP_BYTE

mov bh,0

mov ah,02

int 10h

mov ah,07h

int 21h

jmp circle

L5: cmp ah,06h ;очистка экрана

jne L6

mov ax,0600h

mov bh,07

mov cx,0000

mov dx,184Fh

int 10h

mov ah,07h

int 21h

jmp circle

L6 :

cmp ah,07h  ;прокрутка вверх

jne L7

mov ax,0601h

mov bh,07

mov cx,0000

mov dx,184Fh

int 10h

mov ah,07h

int 21h

jmp circle

L7 :

cmp ah,08h  ;прокрутка вниз

jne L8

mov ax,0701h

mov bh,07

mov cx,0000

mov dx,184Fh

int 10h

mov ah,07h

int 21h

jmp circle

L8 :

cmp ah,09h

je L81

jmp circle

L81:

mov ah,07h

int 21h

mov ah,0Ah

mov bh,0

mov cx,3

int 10h

mov ah,07h

int 21h

jmp circle

exit:

mov ax,4c00h

int 21h

main endp

code ends

end main

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
45 Kb
Скачали:
0