Жоспар №11079

Графикалық режимді программалау: BIOS видеодрайвері, EGA адаптері және палитралық операциялар

Сұрақ-жауап

Сұрағыңызға жасанды интеллект жауап береді

 Жоспар Графикалық ақпаратты экран терминалына шығару 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 

Мәтінді көшіру үшін белсенді жазылым қажет.

Пайдаланушы ID: 594690

Жарияланған күні: