Түстің нөмірін шығару




Жоспар
Графикалық ақпаратты экран терминалына шығару
BIOS видеодрайверінің графикалық мүмкіндіктері
Графикалық режимдегі програмалау есептері
EGA адаптері және оның бір бағыттағы
Графикалық режимдегі EGA адаптерін тікелей програмалау
1.Графикалық ақпаратты экран терминалына шығару
1.1.BIOS видеодрайверінің графикалық мүмкіндіктері
EGA графикалық адаптер бұл екі графикалық
Барлық экрандағы фонды түс әртүрлі 16
Еркін бейнелерден басқа, экран бетіне графикалық
(TURBO PASCAL-дің графикалық жүйелері және PAINT
Графикалық бейнелерді програмалау кезінде BIOS видеодрайверінің
00h- видеорежимді орнату;
05h- видеопарақтарды орнату;
0ch- пикселді шығару;
0fh- видеорежимді алу;
10h, функция асты 00h- реңдік регистрді
10h, функция асты 01h- экрандағы шеткі
10h, функция асты 02h- түрлі түсті
11h, функция асты 21h- графикалық режимде
00h функциясы видеожүие режиміне ауысып, қосуға
Екі режимді де тұрақты пайдаланушы 0Fh
05h функциясы видеопарақты қосады. Парақтың нөмірі
Экрандағы пикселдердің түстері және фонның түстері
Әрбір реңдік регистр 6 разрядтан тұрады
Разрядтың нөмірі 5 4 3 2
разрядтың салмағы 32 16 8 4
Түсі қ Ж к Қ Ж
Солайша, регистрде жазылған 1(К)-саны көк түсті,
Инициализацияау кезінде келесі сандар қатары енгізіледі:
регистрлер 0 1 2 3 4
құрамы 0 1 2 3 4
Бұл тізім түрлі түсті стандартты палитраны
Солайша, реңдік регистрлердің өзгеруі экрандағы түстердің
0-шы реңдік регистр фонның түсін анықтайды.
1.2. Графикалық режимдегі програмалау есептері
Есеп 1.1. Экранға графикалық бейнені шығару.
Програманың негізгі фрагменттері
Draw (подфункция) тіктөртбұрышты қылып шығару
Ішкі параметрлері- x,y,xsize,ysize,forcolor
xcrnt, ycrnt бағыныңқы програмасын пайдаланып, осы
draw Proc AX,y инициализацияау
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
Прграманы тоқтау
...
Мәліметтер алаңы
x dw 200 Х-координатасының басы
y dw 100 Y-координатасының басы
xcrnt dw 0 ағымдағы Х-координатасы
ycrnt dw 0 ағымдағы У-координатасы
xsize dw 200 Х-б-ша тіктөртбұрыштың өлшемі
ysize dw 100 У-б-ша тіктөртбұрыштың өлшемі
forcolor Db 14 сары түс
Есеп 1.2. Реңдік палитраны оқу. Экранға
Програманың негізгі фрагменттері
Draw
Тіктөртбұрыштың шығару бағыныңқы програмасы
...
Draw
Негізгі програманың басы
Графикалық режимді орнату
Тіктөртбұрышты пикселмен салу
mov CX,16 түстердің санауышы
rect: push CX стекте сақтау
call draw тіктөртбұрышты салу
inc forcolor келесі түс
add X,40 келесінің басы
pop CX санауышты қалпына келтіру
loop rect
Ұзын сызықты салу. Бұл үшін пайдаланып
mov X,0
rect: mov y,60
mov xsize,635
mov ysize,40
mov forcolor,4 4-ші регистрмен салу
Сызықты салу
Call
Програманы тоқтату
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’ ‘2’ ‘3’
db ‘10’ ‘11’ ‘12’ ‘13’ ‘14’
db ‘20’ ‘21’ ‘22’ ‘23’ ‘24’
db ‘30’ ‘31’ ‘32’ ‘33’ ‘34’
db ‘40’ ‘41’ ‘42’ ‘43’ ‘44’
db ‘50’ ‘51’ ‘52’ ‘53’ ‘54’
db ‘60’ ‘61’ ‘62’ ‘63’
Есеп 1.3. Фонның түсін өзгерту. Экранға
Программаның негізгі фрагменттері
Тіктөртбұрыштың шығару бағыныңқы програмасы
Негізгі програманың басы
Графикалық режимді орнату
Тіктөртбұрышты салу
Програманы тоқтату
Циклдағы фонның түсін 0-ден 63
mov CX,64 Түстердің санауышы
back: push CX Оны сақтау
mov AH,0 10h функциясы
mov
AL,0 Түстің функцияастын орнату
mov BL,0 Фонның 0-ші регистрі
mov BH,palette Түстің нөмірі
int 10h
Түстің нөмірін шығару
...
Програманы аяқтау
...
Есеп 1.4. Реңдік гамманы өзгерту. Экранға
Тіктөртбұрышты шығару програмшасы
...
Негізгі програманың басы
...
Графикалық режимді орнату
...
Стандартты палитра түстерімен тіктөртбұрышты салу
...
Програманы тоқтату
ES регистрін дайындау
mov AX,seg plt_blue
mov ES,AX
Реңдік палитраның көк түстерін орнату
Mov AH,10h 10h функциясы
Mov AL,2 Палитраның функцияастын орнату
Mov DX,offset plt_blue Палитраның адресі
Int 10h
Програманы тоқтату
...
Реңдік палитраның қызыл түстерін орнату
...
Програманы тоқтату
...
Реңдік палитраның сары түстерін орнату
...
Програманы тоқтату
...
Програманы аяқтау
...
Мәліметтер алаңы
...
Көк гамма
Plt_blue db 00,01,03,08,09,13,17,25
db 29,31,33,41,43,49,57,59,00
Қызыл гамма
plt_red db 00,04,05,12,20,28,32,36
db 37,40,44,45,52,53,60,61,00
Жасыл гамма
Plt_grn db 00,02,07,10,11,16,18,19
db 26,27,34,35,42,48,51,58,00
Сары гамма
plt_yel db 00,14,22,06,23,24,30,38
Db 39,46,47,54,55,56,6263,00
Есеп 1.5. Графикалық режимде мәтінді шығару.
Програманың негізгі фрагменттері
Графикалық режимді орнату
...
Фонның түсін орнату (мысалы, көк)
mov AH,10h 10h функциясы
mov AL,0 Реңдік регистрді орнату
mov BL,0 Фонның регистрі
mov BH,1 Фонның түсі
int 10h
Мәтіндік курсорды орнату
mov AH,02h Курсорды орнату функциясы
mov BH,0 0-шы парақ
mov DH,5 Жолды мәтінің нөмірі
mov DL,20 Бағана мәтінің нөмірі
Int 10h
Дескриптор арқылы string жолды шығару

Мәтіндік курсорды екі жолға төмен орнату
...
BIOS құралы арқылы символды шығару
Mov AH,09h Символды шығару функциясы
Mov AL,23 Символдың еркін коды
Mov BH,0 0-шы парақ
Mov BL,0 Қызыл түс
Mov CX,4 Жолдың ұзындығы
Int 10h
Програманы тоқтату
...
Програманы аяқтау
...
Мәліметтер алаңы
String db Dos құралы арқылы жолды
Stringlen equ $-string
Есеп 1.6. BIOS құралы арқылы графикалық
Програманы аяқтағаннан кейін, DOS құралы арқылы
Програманың негізгі фрагменттері
Графикалық режимді орнату(0h)
Фонның түсін орнату
Mov AH,10h 10h функциясы
Mov AL,0 Түрлі түсті регистрді орнау
Mov BL,0 Фонның регистрі
Mov BH,1 Түстің фоны
Int 10h
Символдардың түсін орнату(мысалы,сары)
Mov AH,10h 10h функциясы
Mov AL,0 Түрлі түсті регистрді орнау
Mov BL,07h Ақ түсті регистр
Mov BH,14 Жаңа түс (сары)
Int 10h
Экранның ортасына қандайда болсын бір жерге
....
21h үзілісті 09h функциясы арқылы str

Пайдаланушының шрифтін жүктеу
Mov AH,11h Шрифтпен жұмыс жасау функциясы
Mov AL,21h 40h векторын жүктеу
Mov BL,2 Экранға 25 жол
Mov CX,14 Символға 14 сызық
Lea BP,newchar Кесте адресінің сипаттамасы
Push DS символдар
Pop ES ES:BP→біздің кестеге
Int 10h
Мәтіндік курсорды экранның басқа жеріне орнату
Символдар өзгергеннен кейін сол жолды шығару
Програманы тоқтату
...
Програманы аяқтау
...
Мәліметтер алаңы
Str db 1,0,2,0,3,0,4,0 Нөлдер бос орынның
db ‘А,Б,В,Г’ cr,if,’$’
Пайдаланушының кодты кестесі (1-ші бөлік, 0-шы
newchar db 14 dup (0) Код
db 00011000B Код ASCII 1
db 00011000B
db 00111100B
db 01111110B
db 11100111B
db 11000011B
db 11000011B
db 11100111B
db 01111110B
db 00111100B
db 00011000B
db 00011000B
db 11111111B
db 11111111B
Бірінші бөліктегі кестенің қалдығын әртүрлі жай
db 30 dup (5 dup(0),4 dup
db 14 dup (0);орнына бос орын
db 95 dup (5 dup (0),
Пайдаланушының кодтық кестесінің 2- щі бөлігі
db 11111111B Код ASCII 128 (A)
db 10011001B
db 10011001B
db 10111101B
db 10100101B
db 10100101B
db 11100111B
db 10100101B
db 10100101B
db 10100101B
db 10011001B
db 10011001B
db 10111101B
db 11111111B
Кестенің қалдығын басқа жай суреттермен толтыру
db 127 dup (4 dup (0),
1.3. EGA адаптері және оның бір
EGA графикалық адаптері графикалық контролерді және
Экранның әрбір түсінің нүктесі 16 мәнге
Пикселдер
0-7
3 0 1
..................................
2 0 1
..................................
1 0 1
.................................
0 0 1 2 ................................. 79
80 81 82 ................................. 159
160 161 162 .................................. 239
Сурет 1.1. Видеобуфердің құрылымы
Видеожадының бір биттік адрес жазықтығы экрандағы
7
Байттың бейнесі
сол жақ пиксел
80h- ең сол жақтағы нүктенің жануы
С0h- екі сол жақтағы нүктенің жануы
01h- ең оң жақтағы нүктенің жануы
FFh- барлық 8 нүктенің жануы
Сурет 1.2. Байттың бейнесі
Биттік жазықтықтардың құрамына операциялар тікелей видеожадыда
EGA адаптері видеомәліметтерде жазуды үш режиммен
0
х х х х х 3
2
0
х х х х х
1
1 1 0 0 1 1
1
0 1 0 0 1 0
Түстің қалқасы(маска) биттік жазықтықтар
3-ші түс коды –көкшіл (А0000:хххх)
0 1 0 х х
1 1 0 х х
1 1 0 х х
0 1 0 х х
Регистр-бекіткіштер
0 0 0 1 1
Биттер қалқасы
* * * 0 1
2





Ұқсас жұмыстар

Турбо паскаль жүйесіндегі графика. Жұмыс істеп тұрған бағдаршамның бейнесін шығару
Графикалық ақпаратты экран терминалына шығару
Турбо Паскальда графикалық процесстерді қолдану
Турбо паскаль программалау тілі жөнінде негізгі ұғымдар
Кодтау және кодтаудың түрлері
Turbo pascal
Турбо-паскальдағы графикамен жұмыс
Крест пен нөл ойынын программалау
Basic 6.0
Паскаль тілінің түсініктері