Графикалық ақпаратты экран терминалына шығару



Графикалық ақпаратты экран терминалына шығару
BIOS видеодрайверінің графикалық мүмкіндіктері
Графикалық режимдегі програмалау есептері
EGA адаптері және оның бір бағыттағы басқару програмасы
Графикалық режимдегі EGA адаптерін тікелей програмалау есептері

Жоспар

Графикалық ақпаратты экран терминалына шығару

BIOS видеодрайверінің графикалық мүмкіндіктері

Графикалық режимдегі програмалау есептері

EGA адаптері және оның бір бағыттағы басқару програмасы

Графикалық режимдегі EGA адаптерін тікелей програмалау есептері

1.Графикалық ақпаратты экран терминалына шығару

1.1.BIOS видеодрайверінің графикалық мүмкіндіктері

EGA графикалық адаптер бұл екі графикалық беттің рұқсат етілген 640x350
түсті пикселді сақтаумен және бейнелеумен қамтамасыз етеді. Адаптер 64
түспен қамтамасыз етілген, бірақ экран бетіндегі бейнелер 16 түсті құрайды
және олар оңай өзгереді. Машина іске қосылғанда стандартты палитра
құрылады.
Барлық экрандағы фонды түс әртүрлі 16 түсті қабылдай береді және екі
жақтағы беттің фоны бір уақытта өзгеріп отырады. Фонды түсті өзгертуге
болады және ол экран бетіне шығарылған бейнені қозғамайды.
Еркін бейнелерден басқа, экран бетіне графикалық режимдегі мәтіндік
ақпаратты әртүрлі DOS және BIOS функцияларын пайдаланып, экранға жолды
символдарды шығаруға болады. Мысалы: INT 21h функциясы 40h немесе 09h
функциялары арқылы, INT 10 функциясы 09h немесе 0Ah функцилары арқылы
шығарады және т.б. функциялары арқылы шығарылады. Экрандағы жолды
позициялау үшін BIOS драйверінің 02h функциясын пайдаланылады. Ол курсордың
мәтіндік координаттарының орын орнатады және графикалық режимде
шығарылмайды. Сондай-ақ экран бетіне шығарылған символдар графикалық және
мәтіндік режим дәл сол орынға түседі. Мәтіндік жолға графикалық
координаттың белгісімен шығаруға және бағыттарын өзгертуге болмайды.
Символдардың кескін үйлесімі (конфигурация) кодты кестеден алынады. Басқа
символдардың өлшемін немесе кескін бейнесін шығару үшін кодты кестені
сәйкестендіріп дайындау керек немесе символды қолмен салу қажет. Кең
көлемдегі белгіленген көптеген қолдаңбалы програмалардың
(TURBO PASCAL-дің графикалық жүйелері және PAINT BRUSH графикалық редакторы
) осындай тәсілдері бар.
Графикалық бейнелерді програмалау кезінде BIOS видеодрайверінің
функциясын пайдалануға болады. Олар төмендегідей:
00h- видеорежимді орнату;
05h- видеопарақтарды орнату;
0ch- пикселді шығару;
0fh- видеорежимді алу;
10h, функция асты 00h- реңдік регистрді орнату;
10h, функция асты 01h- экрандағы шеткі түсті орнату;
10h, функция асты 02h- түрлі түсті регистрдің палитрасын орнату;
11h, функция асты 21h- графикалық режимде пайдаланушының кесте шрифтімен
толтыру. Осы аталғандардан басқа көптеген шектеулі функциялар
пайдаланылады.(мысалы графикалық позициядағы пикселді оқу)
00h функциясы видеожүие режиміне ауысып, қосуға рұқсат береді. Көлемі
256кб видеобуферлі EGA адаптерінін мәтіндік режимдегі коды- 03, ал
графикалық режимдегі коды-10h.
Екі режимді де тұрақты пайдаланушы 0Fh функциясы ағымдағы арқылы
видеорежимді (және де ағымдағы видеопарақты) анықтау керек және алынған
нәтижеге байланысты ауыстырып қосу режимін немесе парақтарды бағалау қажет.

05h функциясы видеопарақты қосады. Парақтың нөмірі AL регистіріне
кіргізіледі. 10h режимінде (EGA) 0-ші және 1-ші парақтарды пайдалануға
болады. Сол басқа бейне белсенді парақты ауыстырып қосу кезінде жоғалып
кетпейді, өйткені видеоадаптерде әрбір параққа арналған бөлек блокты
жадылар бар. Сурет салу үшін жалғыз 0Ch- пикселді шығару функциясы
қарастырылған.(еске түсірейік, DOS-та графиканы қолдайтын функция мүлдем
жоқ ) . AL регистріне пиксел түсінің мәні, BH регистріне беттің нөмірі, CX
және DX- X және Y регистрлеріне пиксел координаттарына лайықты жіберіледі.
X-тің координатасы 0 ден 639 дейін, ал Y- тің координатасы 0  ден 349
дейін өзгереді. (0,0) нүктесіндегі координатасы экранның сол жақтағы
жоғарғы бұрышына сәйкес келеді.
Экрандағы пикселдердің түстері және фонның түстері регистрдің түстерінің
ішіндегісімен беріледі және олар видеорежимінің палитрасымен анықталады.
EGA адаптерінде 17 түсті регистрлер бар, олардың әрбіреуі 0 ден 63дейінгі
64 түсті кодты құра алады. 0 ден 15-ке дейінгі регистр пикселдің мүмкін
болатын түстерін анықтаса, ал экрандағы рамка түсінің бүкіл жұмыс бөлігінің
айналасын 16-шы регистрді анықтайды, бірақ бұл рама көрінбейді, өйткені,
оған фонға сәйкес келетін түсті меншіктейді. Берілген програмадағы кодтың
түсін (мысалы, 0Ch функциясы AL регистріне арналған) түс емес, экранға
шығару кезіндегі берілген пикселдің пайдаланушы жүйесінің регистр түсінің
нөмірі анықтайды.
Әрбір реңдік регистр 6 разрядтан тұрады және олар интенсивті қызыл, жасыл
және көк түстерді араластырғанда керек түсті беріп, анықтайды. 23максимады
интенсивті қызыл, жасыл және көк түстер 0-шы,1-ші және 2-ші разрядқа, ал
13 интенсивті со түстер 3-ші, 4-ші және 5-ші разрядқа бекітілген.

Разрядтың 5 4 3 2 1 0
нөмірі
разрядтың 32 16 8 4 2 1
салмағы
Түсі қ Ж к Қ Ж К

Солайша, регистрде жазылған 1(К)-саны көк түсті, 2(Ж)-саны жасыл түсті,
Ж(Ж+C)-көк-жасыл түсті, 9(к+К)-ашық-көк түсті, 7(Қ+К+Ж)-ақты, 63саны
(қ+к+ж+Қ+К+Ж)-ашық ақ түстрді анықтайды.
Инициализацияау кезінде келесі сандар қатары енгізіледі:

регист0 1 2
рлер
Mov ycrnt ycrnt
Mov CX,ysize y-б-ша санауыш
Mov CX стекте сақтау
loopy Push AX,x инициализацияау
Mov xcrnt,AX xcrnt
Mov CX,xsize х-б-ша санауыш
Mov CX стекте сақтау
loopx Push AH,0Ch пикселді шығару
функциясы
Mov AL,forcolorпикселдің түсі
Mov BH,0 0-шы парақ
Mov CX,xcrnt ағымдағы графикалық
бағана
Mov DX,ycrnt ағымдағы графикалық жол
Int 10h
Inc xcrnt оңға жылжу
Pop CX х-б-ша санауышты
қалпына келтіру
Loop loopx
Inc ycrnt солға жылжу
Pop CX у-б-ша санауышты
қалпына келтіру
Loop loopy
Ret програмшадан шығу
draw Endp

• Негізгі програманың басы
...
• Графикалық режимді орнату

mov AH,0 режимді орнату
функциясы
mov AL,10h 10h режимі
графикаға тең
int 10h

• Тіктөртбұрышты пикселмен салу
...
• Call draw
• Прграманы тоқтау
...
• Мәліметтер алаңы

x dw 200 Х-координатасының басы
y dw 100 Y-координатасының басы
xcrnt dw 0 ағымдағы Х-координатасы
ycrnt dw 0 ағымдағы У-координатасы
xsize dw 200 Х-б-ша тіктөртбұрыштың
өлшемі
ysize dw 100 У-б-ша тіктөртбұрыштың
өлшемі
forcolorDb 14 сары түс

Есеп 1.2. Реңдік палитраны оқу. Экранға 16 қатарлы төртбұрыштан мүмкін
болатын түстердің (төртбұрышты 0-шы реңдік регистр анықтайды және ол
көрінбейді ) шығару қажет. Төртбұрыштың ішіне түсі әртүрлі ұзын сызықты
салу қажет және реңдік регистрдің нөмірі 1ден15 дейін көрсетілуі керек.
Сонымен қатар, циклға 0,1,2,...63 дейінгі регистр сандарын кіргізіп, жоғарда
айтылған сызықтың түсін өзгертіп отыру қажет. Бақылауға ыңғайлы болу үшін,
біріншіден, циклды тоқтату програмасына күту пернесін басып қосу қажет, ал
екіншіден, әрбір түстңі ауыстырар алдында модификация жасалынған реңдік
регистрдің құрамын экранға шығару қажет. Програманы отладка жасап болғаннан
кейін түстердің ауысып отыруын бақылап, модификацияланған реңдік регистрдің
құрамын талдау қажет.

• Програманың негізгі фрагменттері
• Draw proc
• Тіктөртбұрыштың шығару бағыныңқы програмасы
...
• Draw endp
• Негізгі програманың басы
• Графикалық режимді орнату
• Тіктөртбұрышты пикселмен салу

mov CX,16 түстердің санауышы
rect:push CX стекте сақтау
call draw тіктөртбұрышты салу
inc forcolorкелесі түс
add X,40 келесінің басы
pop CX санауышты қалпына
келтіру
loop rect

• Ұзын сызықты салу. Бұл үшін пайдаланып отырған draw бағыныңқы
програмасының параметрлер мәндерін өзгерту.

mov X,0
rect:mov y,60
mov xsize,635
mov ysize,40
mov forcolor,4-ші регистрмен
4 салу

• Сызықты салу
• Call draw
• Програманы тоқтату

mov AH,0Ch күту функциясын
енгізу
mov AL,08h жаңғырықсыз филтрді
енгізу
int 21h

• Циклдың 4-ші регистріндегі 0 ден 63 дейінгі түсті ауыстыру

mov CX,64 түстердің санауыштары
back:push CX оны сақту
mov AH,0h 10h функциясы
mov AL,0 функцияастының түсін
орнату
mov BH,4 4-ші регистрдегі қызыл
түс
mov BH,paletteтүстің нөмірі
int 10h

• Түстің нөмірің шығару үшін:
1. mes деген мәліметті шығару үшін мәтіндік курсорды қалаған жерге
орнату.
mov AH,02h курсорды орнату
функциясы
mov BH,0 0-шы парақ
mov DH,10 жолдың нөмірі
mov DL,10 бағана нөмірі
Int 10h

2.түс нөмірінің адрес символына қайта құрастырылуы.Table кестесінде
көрсетілген.
mov AL,palette AL-дағы түс нөмірі
xor AH,AH AH-ты тазалау
add AX,AX AX-ты 2-ге көбейту
mov SI,AX индекстік регистрге
жөнелту
mov BX,offset кестеге кіргізу
table
mov AX[BX][SI] AX-қа кестедегі
нөмірді кіргізу
mov number,AX оны number-ге
жөнелту

3. Экранға нөмірді шығару

mov AL,40 шығару функциясы
mov BX,1 шығарудың стандартты
дискрипторы
mov CX,meslen мәліметің ұзындығы
mov DX,offset жолдың адресі
mes
Int 21h кестеге кіргізу

• Түсті өзгерту

Inc paletteкелесі түс
pop Cx түстердің санауышын
қалпына келтіру

• Програманы тоқтату
...
• Мәліметтер алаңы

X dw 0 Х-координатасының басы
Y dw 20 Y-координатасының басы
Xcrnt dw 0 ағымдағы Х-координатасы
Ycrnt dw 0 ағымдағы У-координатасы
Xsize dw 35 Х-б-ша тітөртртбұрыштың
өлшемі
Ysize dw 40 У-б-ша тіктөртбұрыштың
өлшемі
forcolor dw 0 пикселдің түсі
Palette dw 0 палитра түсінің екілік
нөмірі
Mes db ‘ағымдағы түстің нөмірі 4-ші
регистрде:'
number dw символдық формадағы
түстің нөмірі
Meslen=$-mes

Символдық формада мүмкін болатын түстер нөмірлерінің кестесі
Көңіл бөліңіздер, төмендегі сандардың барлығы екі байттан орын алады.

table db ‘0’ ‘1’
back: push CX Оны сақтау
mov AH,0 10h функциясы
mov Түстің функцияастын
AL,0 орнату
mov BL,0 Фонның 0-ші
регистрі
mov BH,palette Түстің нөмірі
int 10h ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Төлем-ақы терминалы
Теміржол көлігінің жұмысын автоматтандыру
Термин және терминал
Геркон технологиясының бес артықшылығы
Ақпараттық технологияларды ақпараттандыру
ВАЗ 2110 көліктерінің техникалық сипаттамасы
Ақпараттық қауіпсіздік туралы
Айнымалылар, файлдар атауларын таңдау және оларға берілетін түсініктеме. Программалау стилі, деректерді енгізу және шығару
Төлем карточкаларының есебі
Мобильді қолданбаларды құру технологиялары
Пәндер