Пернетақтаны басқару


Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 26 бет
Таңдаулыға:
Жоспары
1. 1. Пернетақтаны басқару
Жүйелік платада орналасқан А микросхемасының интерфейсына пернетақтаның әрбір пернесін басқанда скан-код шығарылады. Скан-код дегеніміз бір байтты сан, кіші 7 биті әрбір пернеге меншіктелген идентификациялық номер, АТ дан басқа барлық машиналарда үлкен биттің коды перненің басылғанын (бит=1, басу коды) немесе жіберілгенін көрсетеді (бит=0, жіерілді) . Мысалы, 7 битті скан код пернелері В-48, немесе 11 екілік жүйеде. Сол перне басылғанда, онда А портына 1011 коды жіберіледі, ал босатқанда -0011 коды. Осылайша әрбір пернені басу 8255 микросхемасында 2 рет тіркеледі. Және әрбір жолы 8255 микросхемасы пернетақтаға растау әмірін жіберіп отырады. Ал АТ біраз басқаша жұмыс істейді, ол екі жағдайда да бірдей скан-код жіберіп, бірақ FOH кодымен пернелер босатылғанда алмастырып отырады.
Скан-код А портына берілген кезде пернетақтада үзіліс болады (int 9) . Процессор бірден өз жұмысын тоқтатады да, скан-кодты анализдайтын процедураны орындайды. Жылжу пернесі немесе қайта қосқыштан код келгенде статус өзгерісі жадыға жазылады. Басқа жағдайларда перне басылған кезде скан-код символ кодына трансформацияланады (әйтпесе скан-кодты шығарып тастайды) .
Әрине енгізілген кодты дұрыс алу үшін жылжу пернелері мен қайта қосқыштардың нұсқамаларын анықтап алады. Осыдан кейін өңдеуге жіберілген код жады аумағы болып табылатын пернетақта буферіне барып орналасады, бағдарлама басқа операцияларды орындап жатқан кезде пернетақта буфері 15 символға дейін жадыда сақтай алады.
Кодты символдың екі түрі болады, ASCII және «кеңейтілген». ASCII кодтары- байтты сандар, олар IBM PC-ке негізделген ASCII кеңейтілген кодтар теріміне сәйкес келеді. IBM PC-та бұл теру- теру машинкасының қарапайым символдарын, сонымен қатар арнайы әріптер және псевдографика символдарын да қолданады. Сонымен қатар ASCII коды құрамында 32 басқару коды бар, экранға басқа символдар сияқты шықпай, олар приферинді құрылғыларға командаларды жіберу үшін қолданылады. Бірақ, олардың әрқайсында дисплей жадысының тікелей адресациясы арқылы экранға шығарылатын символдар меншіктелген.
Кодты символдардың екінші түрі «кеңейтілген». Олар белгілі бір пернелерге немесе клавиша комбинацияларына меншіктелген, мысалы:Alt пернесімен комбинацияланатын пернелер және функционалды пернелер. Кеңейтілген кодтар ұзындығы 2 байт, оның бірінші байты әрқашан ASCII 0 болады. Екінші байт-кеңейтілген код номері.
Мысалы: 0:30 коды Alt+A-ға сәйкес келеді. Бастапқы ноль берілген кодының қай теруге жататынын анықтауға көмектеседі.
Арнайы командаларды орындап бірақ, скан-кодты генерация жасамайтын да бірнеше перне комбинациялары бар. Оларға Ctrl-Break, Ctrl-Alt-Del, Prtse, АТ үшін Ctrl-Alt-стрелка солға, стрелка оңға-Caps Lock, Ins жатады. Ал қалған пернелерді басқанда, егер олар бағдарламада арнайы қызмет атқарса интерпретация жасалуы керек. Мысалы: курсорды оңға жылжыту, онда бағдарламада осы эффектке жететіндей кодтар болу керек.
- . Пернетақта буферін тазалау
Кодты еңгізуге сұрату жіберместен бұрын, бағдарлама пернетақта буферіндегі керексіз символдарды өшіруі керек. Символдардың 1 байтты ASCII коды немесе 2 байтты «кеңейтілген код» екеніне қарамастан, буфер жадыда 15 символға дейін сақтай алады. Осылайша буфер перненің әрбір басылуына жадыдан 2 байт орын алып отырады. Бір байтты кодтар үшін бірінші байт ASCII коды, екіншісі перненің скан-коды, ал кеңейтілген кодтар үшін бірінші байт ASCII 0, ал екіншісі кеңейтілген код номері болады. Бұл код негізінде перне скан-кодымен сәйкес келіп отырады, бірақ ылғи емес, себебі кейбір пернелер басқа кодтардан айырмашылығы болу үшін жылжу пернелерімен комбинацияланады.
Буфер циклдық тізбек түрінде құрылған, оны FIFO буфері деп те атайды. Барлық буферлер сияқты ол да жадының үзіліссіз аймағында орналастырылады. Бірақ «жолдың басы» сақталатын арнайы жады ұяшығы болмайды. Оның орнына ағымдағы уақытта буферде сақталған екі нұсқағыш символды жолдың басы және соңы деген позицияда болады. Пернені жаңадан басқанда, алдыңғы басылған перне кодының соңына жаңа код тіркеледі.
Буфердің бос аумағы толған соң, жаңа символдар тізбектің басынан бастап қайта тіркеледі. Сондықтан буфердегі жолдың басында символдық адрестер соңына қарағанда көп болады. Буфер жадысы толған соң, жаңадан енгізілген символдар қабылданбайды, пернетақтада үзіліс болып, динамиктен дыбыс шығады.
Алғашқы енгізілген символға басындағы нұсқағышты орналастырғанда, соңғы енгізілген символға соңғы нұсқағыш орнап, олар тепе-теңдіккүйде болады. Екі нұсқағыш тең болған кезде, буфер бос болады.
15 символды толық енгізу үшін 2 байтты 16-шы позиция және <ENTER> пернесіне сәйкес скан-код 28 керек. Буфердің 32-ші байты 0040:001А және 0040:001С адрестерінде орналасқан. Әрбі нұсағшқа 2байт меншіктелгенімен, кіші байт қана қолданылады. BIOS мәліметтер облысында сәйкес нұсқағыштар мәндері 30-дан 60-қа дейін өзгереді. Буферді тазалау үшін 0040:001С ұяшығына 0040:001А ұяшығының мәндерін теңестіру керек. Егер бағдарламаны аяқтау алдында бұл командаларды дұрыс орындаса, MS DOS-та басқаруға оралғанда, символдар есептеліп, автоматты түрде басқа бағдарлама жүктелуі мүмкін.
ОРТАША ДЕҢГЕЙ
ОС функциясы 21Н үзілісі пернеақтадан енгізілген 1, 6, 7, 8 және А (осы бөлімде сипатталған) барлық функцияларды орындайды, алдымен пернетақта буферін тазалайды. Ол үшін енгізу функциясының номерін AL-ге (яғни 1-ге) орналастыру керек.
; _ _ _ _ _ пернені басу алдындағы буферді тазалау
ТӨМЕНГІ ДЕҢГЕЙ
Жоғарғы деңгейдегі сияқты нұсқағыштардың басы мен соңын теңестіреміз. Пернетақта үзіліске ұшырамау үшін модификациялау кезінде нұсқағыштар үзілісін тоқтатып қоямыз.
; _ _ _ _ _ нұсқағыштардың басы мен соңының мәндерін туралу
1. 3. Буфедегі символдарды тексеру
Пернетақта буферінен сиволдарды өшірмей де, пернетақтадан енгізу болған/болмағанын тексеруге болады. Буфер ағымдағы уақытта жадыда орналасқан символдар тізбегінің басы мен аяғын көрсететін 2 түрлі нұсқағыш пайдаланады. Олардың мәндері тең болғанда, буфер бос болады. Тек 0040:001А және 0040:001С ұяшықтарының мәнін салыстыру керек.
ОРТАША ДЕҢГЕЙ
Пернетақта буфері бос болғанда OFFH мәндерін AL регистырына ОВН функциясы 21Н үзілісі қайтарады.
; _ _ _ _ _буфердегі символдарды тексеру
; _ _ _ _ _ буфердегі символдарды қайталап тексеру
; _ _ _ _ _ енгізілген символды көру
ТӨМЕНГІ ДЕҢГЕЙ
Жоғарғы деңгейдегі сияқты нұсқағыштарды салыстырамыз
; _ _ _ _ _ нұсқағыштардың басы мен соңын салыстыру
1. 4. Символ енгізілуін күту және оны экранға бейнелеу
Әдетте енгізілген символдар экранға не басылғанын көру үшін бейнеленеді. Кейде автоматты жаңғырық экранда қажет емес. Мысалы, мәзір пунктін пернені басу арқылы бейнелеуге болады. Кейде енгізілген символдарды экранға шықпастан бұрын қателікке тексеру керек.
Кеңейтілген кодты өңдейтін әрбір бағдарлама автоматты жаңғырықты пайдалану керек, себебі бұл кезде алғашқы байт (ASCIIO) коды символдар арасына бос орын (пробел) қалдырып экранға шығарады.
ОРТАША ДЕҢГЕЙ
Егер буфер бос болса, 7 және 8 функцияларын 21Н үзілісі символ енгізілуін күтеді. Бұл кезде 8 функциясы Ctrl+Break пернелер комбинациясын анықтайды, ал 7 функциясы оған әсер етпейді. Екі жағдайда да символ AL-ге қайтады. AL ASCLL кодын меншіктеген кезде кеңейтілген код болады. Үзілісті қайталағанда AL-да екінші кеңейтілген код шығады.
; _ _ _ _ _ енгізілген символды аламыз
; иә, онда ерекше процедураға
; әйтпесе символ кодын AL-ге
; _ _ _ _ _ кеңейтілген кодты өңдеу процедурасы
BIOS MS DOS функциялары сияқты процедураларды барлық мүмкіндіктермен қамтамасыз етеді. 0 ді АН-қа орналастырып 16Н үзілісін шақырамыз. Функция символ енгізілуін күтіп, оны AL-ге қайтарады. Бұл жағдайда кеңейтілген кодтар бір үзілісте өңделеді. Егер AL-де 0 орналасса, AH-та кеңейтілген код номері болады. Ctrl+Breaк өңделмейді.
; _ _ _ _ _ перне басылуын күту.
; _ _ _ _ _ кеңейтілген код процедурасының өңделуі.
1. 5. Экранда перне басылуы мен жаңғырықты күту
Әдетте мәтін мен мәліметтер енгізгенде, енгізілген символдар жаңғырығы экранға шығарылады. Бұл кезде каретқаға қайту символдары курсордың бағытымен орын ауыстырады, ASCII символдарының коды сияқты бейнеленбейді. Жаңғырықты беру алдын-ала курсор орналастырып, мәтіннің автоматты түрде келесі жолға орын аыстырған позициясында болады. Келесі жолға көшу арнайы кодты қажет етпейді, себебі символдар дисплей жадысының буферінде орналасады. Жады дисплейдің 25 жолын да қамтиды.
ОРТАША ДЕҢГЕЙ
Егер пернетақта буфері бос болса, 1 функциясы 21үзілісі символдың енгізілуін күтеді, кейін оны экранға курсордың ағымдағы орнына шығарады. Ctrl+Breaк өңделеді, сондықтан Ctrl+Breaк өңдеу процедурасы жұмыс істей алады. Енгізілген символ AL-ге қайтарылады. Кеңейтілген кодты енгізгенде AL де ASCII0 болады.
; _ _ _ _ _енгізілген символды алу
; иә, онда арнайы процедура
; әйтпесе символ AL де орналасқан
; _ _ _ _ _кеңейтілген кодты өңдеу процедурасы
Бұл функция <Esc> пернесінің әрекеттерін қабылдамайды. Перне табуляциясы интерпретенцияланады, <Enter> клавишасы ағымдағы жолдың бірінші позициясына көшеді.
1. 6. Символды күтусіз қабылдау
Кейбір нақты уақытта тоқтаусыз жұмыс істейтін бағдарламалар перненің басылуын күте алмайды, олар пернетақта буферінен символдарды бағдарламаға қолайлы, яғни бағдарламаға қажет уақытта ғана қабылдайды. Мысалы, ойын бағдарламасында процессордың пернетақтадан код енгізілуін күтуі, экрандағы бейнені тоқтатып қояр еді.
ОРТАША ДЕҢГЕЙ
6 функциясы 21Н үзілісі бұл енгізілген символды күтусіз алудың жалғыз жолы. Бұл функция экранға жаңғырық шығармайды және Ctrl+Breaк-ты анықтамайды. Үзілісті шақырмас бұрын OFFH-ты DL-ге орналастыру керек. Әйтпесе 6 функциясы экранға DL-да орналасқан символдарды шығара бастайды. Пернетақта буфері бос болса нөлдік жалауша 1-ге орналастырылады. Егер символ қабылданса, ол AL-ға орналасады. ASCII коды кеңейтілген кодты идентификациялайды, код номерін алу үшін үзліс қайталануы тиіс.
; иә, арнайы процедура
; әйтпесе ASCII кодын AL-ге орнату
1. 7. Символдар жолын алу
ОРТАША ДЕҢГЕЙ
жаңғырықты териналға шығара отырып ОАН функциясын 21Н үзілісі 254 символдан тұратын жолды шығарады. Бұл процедура кареткаға қайту пернесі басылғанша символдарды енгізеді. DS:DX жадысы жолдың орналасу адресінкөрсетеді. Жолға енгізілген символдардың бірінші байты байттар саны болуы керек. Жол енгізілгеннен кейін, екінші байт нақты енгізілген символдардың санын көрсетеді. Жолдың өзі үшінші байттан басталады.
Жолды жеткілікті ұзындықта жасап, қосымша екі бит дискрипторға және бір қосымша бит кареткаға қайту үшін қосу керек. Жолдың максималды ұзындығын алған кезде, міндетті түрде кареткаға қайтатын қосымша бір байт алу керек. Кареткаға қайту коды ASCII-13 соңғы символ болып енгізіледі. Бірақ, ол жол дискриптордың екінші байтына орналастыратын функция болып есептелінбейді. Осылайша, 50 символды жол алу үшін ASCII 51 бірінші байтына 53 байт жады орналастыру керек.
; _ _ _ _ _ мәліметтер сегменттері
; _ _ _ _ _пернетақтадан жолды алу
; _ _ _ _ _жолдың ұзындығын тексеру
Бұл процедура MS DOS жолының редактрлеу мүмкіндіктерін пайдалануға болады. «стрелка -солға» пернесі экрандағы символдарды жадыға орналастырмай өшіреді. Табуляция пернесі жұмыс істейді. Кеңейтілген кодтар қолданылмайды. Терминалда оң жаң шетке жеткен кезде жол, келесі жолғакөшеді, ал оң жақ төменгі шетке жеткенде экран бір жол үстіге көтеріледі. Көбірек символ енгізгенде, артық символдар енгізілмей динамик дыбысы қосылады.
MS DOS-та жаңғырықты терминалға шығармай да «жолды» алу әрекеттері бар. 3FH функциясы 21р үзілісі- бұл ортақ мәнді енгізу функциясы, әдетте дисктік операцияларда қолданылады. Ол үшін алдын-ала анықталған кодтық сан болып файл (file handle) дискрипторын қажет етеді, ол операциялық жүйеде қондырғының мәнән анықтауда қолданылады. Пернетақтада 0 дискрипторы қолданылады, ол ВХ-қа орналасуы керек. DS:DX-қа жол орналасатын адресті көрсетіп, ал СХ-қа жолдың максималды ұзындығын енгізіп, функция шақырамыз
; _ _ _ _ _жолды жаңғырықсыз оқу
Жолды енгізу кареткаға қайту пернесін басқаннан кейін анықталады, осы кезде DOS жол соңына екі символ қосады: кареткаға қайту және жолды ауыстыру (ASCII 13 және ASCII 10) . Қосымша символдарды қосқаннан кейін, максималды жол ұзындығын 100 деп көрсетсек те, ол 102 байтқа дейін жадыдан орын алуы мүмкін. Енгізілген жол ұзындығы АХ-қа қайтады және бұл мән өзіне 2 шектеуші символды қосады.
1. 8. Қайтақосқыш пернелерді тексеру/орнату статусы
0040:0017 және 0040:0018 жады ұяшығында орналасқан 2байт биттерден тұрады, олар перне статусын мына түрде бейнелейді:
Қалған биттер қолданылмайды.
Пернетақтада үзіліс болғанда, буферден ешқандай символ оқылмасада, қосқыш пернелердің біреуі басылғанда-ақ биттар статусы жаңартылады. Осы 8 перненің ішінде кодты буферге орналастыратын INS бұл дұрыс ереже (INS статусын орнату буферде символға бос орын жоқ болса да ауысады) . CTRL+ NUMLOCK тоқтату режимі іске қосылғанда 0040:0018 адресінен 3 биті 1 ге орналасады, бұл жағдайда бағдарлама тоқтатылады.
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz