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

Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1 Негізгі бөлім ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
1.1 Пернетақтаны басқару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
1.2 Пернетақта буферін тазалау ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
1.3 Буфердегі символдарды тексеру ... ... ... ... ... ... ... ... ... ... ... ... ...
1.4 Символ енгізілуін күту және оны экранға бейнелеу ... ... ... ... .
1.5 Экранда перне басылуы мен жаңғырықты күту ... ... ... ... ... ... .
1.6 Символдарды күтусіз қабылдау ... ... ... ... ... ... ... ... ... ... ... ... ...
1.7 Символдар жолы ашу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .
1.8 Пернетақтадан процедураның жазылуын енгізу ... ... ... ... ... ... .
1.9 Пернетақта үзілісін қайта бағдарламалау ... ... ... ... ... ... ... ... .
1.10 Скан.кодтың қосалқы кестесі ... ... ... ... ... ... ... ... ... ... ... ... ...
1.11 ASCII кодынын қосымша кестесі ... ... ... ... ... ... ... ... ... ... ... .
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
        
        |     |Кіріспе....................................................|      |
| ... | |
|1 ... | |
| ... |
| ... | ... ... | |
| ... |
| ... | ... ... ... | |
| ... |
| |..... | ... ... ... | |
| ... | ... ... ... күту және оны экранға | |
| ... | ... ... ... ... мен ... | |
| ... | ... ... ... | |
| ... |
| |. | ... ... жолы | |
| ... |
| |......... | ... ... ... жазылуын | |
| ... | ... ... үзілісін қайта | |
| ... | ... ... ... | |
| ... | ... |ASCII кодынын қосымша | |
| ... | |
| ... | |
| ... |
| ... | ... ... ... платада орналасқан А микросхемасының интерфейсына
пернетақтаның әрбір пернесін ... ... ... ... бір байтты сан, кіші 7 биті әрбір пернеге меншіктелген
идентификациялық ... АТ дан ... ... ... үлкен биттің коды
перненің басылғанын (бит=1,басу коды) немесе жіберілгенін көрсетеді
(бит=0,жіерілді). Мысалы, 7 битті скан код пернелері В-48, немесе ... ... Сол ... ... онда А ... 10110000 ... ал босатқанда -00110000 коды. Осылайша әрбір пернені басу
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-стрелка солға, ... ... ... ... ... ... егер олар бағдарламада арнайы
қызмет атқарса интерпретация жасалуы ... ... ... оңға
жылжыту, онда бағдарламада осы эффектке жететіндей кодтар болу керек.
2. . Пернетақта буферін тазалау
Кодты еңгізуге ... ... ... ... ... ... символдарды өшіруі керек.Символдардың 1 байтты ASCII
коды немесе 2 байтты ... код» ... ... ... ... ... дейін сақтай алады. Осылайша буфер перненің әрбір басылуына
жадыдан 2 байт орын алып ... ... ... үшін ... ... ... екіншісі перненің скан-коды, ал кеңейтілген кодтар үшін
бірінші байт ASCII 0, ал ... ... код ... ... Бұл ... перне скан-кодымен сәйкес келіп отырады, бірақ ылғи емес,
себебі кейбір пернелер басқа кодтардан ... болу үшін ... ... циклдық тізбек түрінде құрылған, оны FIFO буфері деп те атайды.
Барлық буферлер сияқты ол да ... ... ... ... ... ... сақталатын арнайы жады ұяшығы болмайды. Оның орнына
ағымдағы уақытта буферде сақталған екі нұсқағыш ... ... басы ... ... ... ... Пернені жаңадан басқанда, алдыңғы басылған
перне кодының соңына жаңа код ... бос ... ... соң , жаңа ... ... ... қайта тіркеледі. Сондықтан буфердегі жолдың басында символдық
адрестер соңына қарағанда көп ... ... ... ... соң , ... символдар қабылданбайды,пернетақтада үзіліс болып, динамиктен
дыбыс шығады.
Алғашқы енгізілген символға басындағы нұсқағышты орналастырғанда,
соңғы ... ... ... ... ... олар ... Екі ... тең болған кезде, буфер бос болады.
15 символды толық енгізу үшін 2 байтты 16-шы ... және ... ... ... 28 керек. Буфердің 32-ші байты 0040:001А және
0040:001С адрестерінде орналасқан. Әрбі нұсағшқа ... ... байт қана ... BIOS ... ... ... нұсқағыштар
мәндері 30-дан 60-қа дейін өзгереді. Буферді тазалау үшін 0040:001С
ұяшығына 0040:001А ұяшығының мәндерін теңестіру керек. Егер бағдарламаны
аяқтау алдында бұл ... ... ... MS DOS-та ... символдар есептеліп, автоматты түрде басқа бағдарлама жүктелуі
мүмкін.
ОРТАША ДЕҢГЕЙ
ОС функциясы 21Н ... ... ... 1,6,7,8 және А (осы
бөлімде сипатталған) барлық функцияларды орындайды, алдымен пернетақта
буферін тазалайды. Ол үшін ... ... ... AL-ге ... ... керек.
; _ _ _ _ _ пернені басу алдындағы буферді тазалау
|MOV |AH, OCH |;DOS OCH ... ... ... |AL,1 |; ... ... функциясын таңдаймыз |
|INT |21H |; ... ... ... күту ... ... ... ... нұсқағыштардың басы мен соңын теңестіреміз.
Пернетақта үзіліске ұшырамау үшін модификациялау кезінде нұсқағыштар
үзілісін тоқтатып ... _ _ _ _ ... басы мен ... ... ... | |; ... ... ... |AX, AX |; ... ... ... ... |ES, AX |; ... ... жады ... ... ... |AL, ES:[41AH] |; ... ... ... аламыз |
|MOV |ES:[41CH], AL |; ... ... ... ... | |; ... ... ... ... ... ... ... ... өшірмей де, пернетақтадан енгізу
болған/болмағанын тексеруге болады. Буфер ағымдағы уақытта жадыда
орналасқан символдар тізбегінің басы мен ... ... 2 ... ... ... ... тең ... буфер бос болады. Тек
0040:001А және 0040:001С ұяшықтарының мәнін салыстыру керек.
ОРТАША ... ... бос ... OFFH ... AL ... ... 21Н ... қайтарады.
; _ _ _ _ _буфердегі символдарды тексеру
|MOV |AH, 1 ... ... ... |16H |; 21Н ... ... ... |AL, OFFH |; ... ... ... ... |; ... бос ... ... |
; _ _ _ _ _ ... ... ... ... |AH,1 ... ... ... |16H |; ... ... ... ... |; ... |
; _ _ _ _ _ ... ... ... |AL, 0 |; бұл ... код па? ... |EXTENDED_CODE |; егер иә, онда басқа ... көшу ... ... ... ... нұсқағыштарды салыстырамыз
; _ _ _ _ _ нұсқағыштардың басы мен ... ... |AX,0 |; ... ... ... ... |ES, AX |; ... ... ... |AL, ... |; бір нұсқағыш аламыз ... ... |; ... ... ... ... |AH, AL |; ... ... |GET_KEYSTROKE |; егер тең ... ... ... | ... ... ... ... күту және оны экранға бейнелеу
Әдетте енгізілген символдар ... не ... көру ... Кейде автоматты жаңғырық экранда қажет емес. Мысалы, мәзір
пунктін ... басу ... ... ... Кейде енгізілген
символдарды экранға шықпастан бұрын қателікке тексеру керек.
Кеңейтілген кодты өңдейтін әрбір бағдарлама автоматты ... ... ... бұл ... алғашқы байт (ASCIIO) коды символдар
арасына бос орын ... ... ... ... ... ... бос ... 7 және 8 функцияларын 21Н үзілісі символ
енгізілуін күтеді. Бұл ... 8 ... ... ... анықтайды, ал 7 функциясы оған әсер етпейді. Екі жағдайда
да символ AL-ге қайтады. AL ASCLL ... ... ... ... код
болады. Үзілісті қайталағанда AL-да екінші кеңейтілген код шығады.
; _ _ _ _ _ ... ... ... |AH,7 ... ... ... |21H ... ... ... ... |AL,0 ... кодты тексеру |
|JE ... |;иә, онда ... ... |
| | ... ... кодын AL-ге |
; _ _ _ _ _ кеңейтілген кодты өңдеу процедурасы
|EXTENDED_CODE: |INT |21H ... код ... ... |CMP |AL,75 ... |
| | | ... |
| |JNE |C_R ... жоқ ... |
| | | ... |
| |JMP ... |;егер иә болса,келесі |
| | | ... ... |CMP |AL,77 |;ары ... ... ... MS DOS функциялары сияқты процедураларды барлық
мүмкіндіктермен қамтамасыз етеді. 0 ді АН-қа орналастырып 16Н үзілісін
шақырамыз. Функция символ ... ... оны AL-ге ... ... кеңейтілген кодтар бір үзілісте өңделеді. Егер AL-де 0
орналасса, AH-та кеңейтілген код номері болады.Ctrl+Breaк өңделмейді.
;_ _ _ _ _ ... ... ... |AH,O ... күту функциясының нөмері |
|INT |16H ... ... ... ... |AL,O ... ... ... |
|JE ... ... ... арнайы процедура |
| | ... А ... AL-ге |
;_ _ _ _ _ ... код ... ... |CMP |AH 75 ... кеңейтілген код аламыз |
| | | ... ... ... ... ... мен ... ... мәтін мен мәліметтер енгізгенде, енгізілген символдар жаңғырығы
экранға шығарылады. Бұл ... ... ... символдары курсордың
бағытымен орын ауыстырады, ASCII ... коды ... ... беру алдын-ала курсор орналастырып, мәтіннің автоматты түрде
келесі жолға орын аыстырған позициясында болады. ... ... көшу ... ... етпейді, себебі символдар дисплей жадысының буферінде
орналасады. Жады ... 25 ... да ... ДЕҢГЕЙ
Егер пернетақта буфері бос болса, 1 функциясы ... ... ... ... оны ... ... ... орнына шығарады.
Ctrl+Breaк өңделеді, сондықтан Ctrl+Breaк өңдеу процедурасы жұмыс ... ... ... AL-ге ... ... ... енгізгенде AL
де ASCII0 болады.
; _ _ _ _ _енгізілген символды ... |AH, 1 |; ... ... ... |21H |; ... ... күту ... |AL,0 |; ... код ... ... |; иә, онда ... ... |
| | ... ... AL де ... |
; _ _ _ _ ... ... ... ... |21H |; AL да код ... ... ... |AL,77 |; ... ... |
|JNE |C_R |; жоқ, ... ... ... ... |; ... жіберу |
|C_R: CMP |AL,75 |; ... ... ... ... ... ... ... интерпретенцияланады, клавишасы ағымдағы жолдың бірінші
позициясына көшеді.
1.6. Символды ... ... ... ... тоқтаусыз жұмыс істейтін бағдарламалар перненің
басылуын күте алмайды, олар пернетақта ... ... ... яғни ... ... уақытта ғана қабылдайды. Мысалы, ойын
бағдарламасында процессордың пернетақтадан код ... ... ... қояр ... ... ... 21Н ... бұл енгізілген символды күтусіз алудың жалғыз жолы.
Бұл функция экранға ... ... және ... анықтамайды.
Үзілісті шақырмас бұрын OFFH-ты DL-ге орналастыру керек. Әйтпесе ... ... DL-да ... ... шығара бастайды. Пернетақта
буфері бос болса нөлдік жалауша 1-ге ... Егер ... ол AL-ға ... ASCII коды ... ... код ... алу үшін ... қайталануы тиіс.
|MOV |AH, 6 |; DOS ... ... ... |DL,OFFH |; ... сұраныс енгізу |
|INT |21H ... алу ... |NO_CHAR |; ... жоқ ... ... ... |AL, 0 |; ... кодқа тексеру ... ... ... ... |
| | ... ASCII ... AL-ге орнату |
|EXTENDED_CODE |INT 21H ... код ... ... ... ... ... алу
ОРТАША ДЕҢГЕЙ
жаңғырықты териналға шығара отырып ОАН функциясын 21Н үзілісі 254 символдан
тұратын жолды шығарады. Бұл ... ... ... ... ... енгізеді. DS:DX жадысы жолдың орналасу адресінкөрсетеді. Жолға
енгізілген символдардың бірінші байты ... саны ... ... ... ... ... байт нақты енгізілген символдардың ... ... өзі ... ... ... жеткілікті ұзындықта жасап, қосымша екі бит дискрипторға және
бір қосымша бит ... ... үшін қосу ... ... ... алған кезде, міндетті түрде кареткаға қайтатын қосымша бір байт
алу керек. Кареткаға қайту коды ASCII-13 ... ... ... ... жол ... ... байтына орналастыратын функция болып
есептелінбейді. Осылайша, 50 символды жол алу үшін ASCII 51 ... 53 байт жады ... ... _ _ _ _ _ ... ... |DB 53 DUP(?) |;50 ... жолға аумақ |
; _ _ _ _ ... ... ... |DX,STRING |; DS:DX жол ... ... ... |BX,DX |; BX-те ... көрсету ... |AL,51 |; жол ... ... ... ) |
|MOV |[BX],AL |; ... 1-ші ... ... ... |AH, OAH |; ... ... ... |21H ... алу |
; _ _ _ _ ... ұзындығын тексеру
|MOV ... ... ... AH-та орналасқан ... ... MS DOS ... ... ... ... болады.
«стрелка -солға» пернесі экрандағы ... ... ... Табуляция пернесі жұмыс істейді. Кеңейтілген кодтар қолданылмайды.
Терминалда оң жаң шетке жеткен кезде жол, ... ... оң ... ... ... ... бір жол үстіге көтеріледі. Көбірек символ
енгізгенде, артық символдар енгізілмей динамик дыбысы ... DOS-та ... ... ... да «жолды» алу әрекеттері
бар. 3FH функциясы 21р ... бұл ... ... ... ... ... ... Ол үшін алдын-ала анықталған кодтық сан
болып файл (file handle) дискрипторын қажет етеді, ол ... ... ... ... ... ... 0 ... ол ВХ-қа орналасуы керек. DS:DX-қа жол ... ... ал ... ... ... ұзындығын енгізіп, функция шақырамыз
; _ _ _ _ _жолды жаңғырықсыз оқу
|MOV |AH,3FX |; ... ... ... |BX,0 |; ... ... ... |
|LEA ... |; ... ... ... сілтеме |
|MOV |CX, 100 |; ... ... ... ... |21H |; ... күту ... енгізу кареткаға қайту пернесін басқаннан кейін анықталады, осы ... жол ... екі ... ... ... ... және ... ауыстыру
(ASCII 13 және ASCII 10). Қосымша символдарды қосқаннан кейін, максималды
жол ұзындығын 100 деп ... те, ол 102 ... ... ... орын ... Енгізілген жол ұзындығы АХ-қа қайтады және бұл мән өзіне 2 шектеуші
символды ... ... ... ... статусы
0040:0017 және 0040:0018 жады ұяшығында орналасқан 2байт биттерден ... ... ... мына ... ... |Бит ... |Бит ... мән ... | 7 |INSERT |Қою ... ... |
| |6 ... ... режимі қосулы |
| |5 |NUMLOCK |NUMLOCK ... ... |
| |4 ... ... басылып тұр |
| |3 |ALT ... ... тұр |
| |2 |CTRL ... ... тұр |
| |1 | сол SHIFT ... ... тұр |
| |0 |оң SHIFT ... басылып тұр |
|0040:0018 |7 |INSERT ... ... тұр |
| |6 ... ... басылып тұр |
| |5 |NUMLOCK ... ... тұр |
| |4 ... ... басылып тұр |
| |3 |CTRL+ NUMLOCK |CTRL+ NUMLOCK ... |
| | | ... ... ... қолданылмайды.
Пернетақтада үзіліс болғанда,буферден ешқандай ... ... ... біреуі басылғанда-ақ биттар статусы жаңартылады. Осы ... ... ... ... ... INS бұл ... ереже (INS
статусын орнату буферде символға бос орын жоқ болса да ... ... ... ... іске ... 0040:0018 адресінен 3 биті 1 ... бұл ... ... ... ... статустың биттерді басылған пернелерді
интерпретациялаудың ... ... ... ... ... ... сәйкес пернені физикалық шертудегідей
болады. Енгізу сәйкес типте болу үшін NUMLOCK және CAPSLOCK ... ... ... ... ... 16Н ... ... бір байтына жол ашады. Ол 0040:0017
адресіндегі байт, байт AL-ге ... _ _ _ _ қою ... ... ... |AH,2 |; ... ... ... |16H |; ... ... алу ... ... |; 7 ... ... ... ... |; егер 0 ... INSERT ... |
ТӨМЕНГІ ДЕҢГЕЙ
Бұл ... қою ... ... |AX,AX |; ... сегмент орнатамыз ... |ES,AX |; жады басы ... ... |; 7 ... ... ... ... |ES:(417H),AL |; ... ... ... ... ... ... жазылуын енгізу
Пернетақтада қолданылатын код ... жай ... ... 1 ... 2 байт ұзындықта болуы мүмкін. ... ... ... код ... сондықтан оларды ажырату үшін
қосымша күш қажет. ASCLL ... да, ... ... да ... мен ... тексере алмайды.
Орташа деңгей.
Бұл мысал алдыңғыдан төрт жақты жағдайды Ctrl+H, Ctrl+M тану ... Бұл ... ... ... ... ... Ctrl пернесімен
комбинацияланған пернелерді басқан кезде көрсетілген код енгізіледі ма?
деген сұрақ туғанда скан код тексеріледі. Бұл ... ... ... ... болып табылады, себебі скан код пернетақта буферінде сақталады,
ал бит ... ... ... ... _ _ _ _ _ ... ... ... алу және оны тексеру
|NEXT |MOV |AH,0 |;BIOS ... ... |
| | | ... |
| |INT |16H |; ... кодты алу |
| |CMP |AL,0 |; ... ... ... |
| |JE ... |; иә, ... ... жіберу |
| |CMP |AL,32 |; ... ... ... |
| |JL ... |; егер иә, онда арнайы процедураға |
| | | ... |
| |CMP |AL,65 |; егер ... теру ... |
| | | ... |
| |JL |NEXT |; ... ... |
| |CMP |AL,123 | |
| |JL |NEXT | |
; _ _ _ _ _ енді ... ... ... | |;ES:DI ... ... есте ... |
|MOV |AH,2 ... ... ... ... шығу |
|MOV |DL,AL ... ... ... ... орнату |
|INT |21H |;оны ... ... |
|. | | ... |NEXT ... ... көшеміз |
; _ _ _ _ _ ... ... ... |CMP |AL,13 |; ASCII 13 коды ма? |
| |JNE |TAB |; жоқ, ... ... |
| |CMP |AH,28 |; ... скан-код|
| | | ... |
| |JNE |C_M ... Ctrl+M |
| |CALL ... ... ... |
| | | ... |
| |JMP |NEXT |; ... ... көшу |
|C_M: |CALL |CTRL_M |; Ctrl-M ... |
| |JMP |NEXT |; ... ... көшу ... |CMP |AL,9 |; ... ... |
| |CMP |AL,10 |; ... ... ... |JMP |NEXT ... ... көшу |
; _ _ _ _ _ кеңейтілген код анализі (2 байт коды ... ... |CMP |AH,71 |; ... шекті тексеру |
| |JL |REJECT |; егер кіші ... онда ... |
| | | ... |
| |CMP |AH,81 |; ... ... ... |
| |JL |REJECT |; егер ... болса, онда келесі|
| | | ... |
; _ _ _ _ _ ... ... ... АН-та орналасқан, өңдеу
| |CMP |AH,72 |; ... |
| |JL |C_U |; егер иә, онда ... |
| | | ... |
| |CMP |AH,80 |; ... |
| |JL |C_D |; егер иә, онда ... |
| | | ... ... |CALL ... ... ... ... |
| |JMP |NEXT |; ... ... көшу ... |CALL ... ... ... шақыру |
| |JMP |NEXT |; ... ... көшу ... Пернетақта үзілісін қайта бағдарламалау
Микропроцессор пернетақтасы скан коды 8255 микросхемасының А портына
орналастырылғанда 9 ... ... Бұл ... ... ... ... ... жағдайына жүгіне отырып скан кодты символға
айналдыру және оны пернетақта буферіне орналастыру. Егер скан код ... ... ... ... ... ... сәйкес келеді. Бірақ бұл
жағдайға пернесіне қатысты емес, мұның орнына статус байтын
өзгертеді, ол байттар BIOS ... ... ... DOS және ... ... үзілісі болып табылады. Шынында оларға перненің
басылуы сезілмейді. ... ... олар ... ... ... Оны 9 ... қамтамасыз етеді. PCJR 62 пернесінен 82 пернелік
протоколға және басқа да IBM PC-ларымен пайдаланылатын енгізілгендерді
өңдеу үшін арнайы процедураларды қолданады. Бұл ... ... ... атқаратын 9 үзіліске жіберіледі. Пернетақта үзілісінен
3 негізгі қадамды атап айтуға болады
1. Скан кодты оқып және оны ... ... ... ... Скан кодты код номеріне ауыстыру немесе қайтасозғыш ... ... ... ... ... ... ... буферіне орналастыру. Үзілісті шақыру сәтінде
скан код А портында болады. Сондықтан бұл кодты алғашында оқып ... ... ... қажет. Пернетақта микропроцессорына растау
сигналын тез жіберу үшін В порты қолданылады. Ол үшін жай ғана 7 ... ... Одан соң оны ... 0-ге ... ... В ... 6-ншы
биті пернетақта сағатының сигналын басқарып тұратынын байқаймыз. Ол
әрдайым 1-іншіден орнығуы қажет, кері жағдайда ... өшіп ... ... 8255 ... ... болмаса да бұл порттар
адрестері АТ-ға да қолдануға болады.
Бірінші скан код басылған басу коды ... ... ... ... ... босату коды 7 скан кодының 1-ге ... ... АТ үшін 7 бит ... 0-ге тең, ... коды ... ... ... оған , кейін скан код.
Статустарында байтқа сәйкес өзгерістер енгізілетін қайта қосқыш
пернелерінен басқа, босату кодтары істен шығарылады. ... ... ... ... ... Осы ... тағы да ... пернелерінің байт
статусы өзгеруі мүмкін. Сондықтан символдық ... ... ... ... 30 ... А әріпінің төмнегі немесе жоғарғы регисторының
қайсысына ... ... ... ... идентиорикоияланғаннан кейін, пернетақтадан
еЖалпы жағдайда скан-код нгізу процедурасы өзіне сәйкес ASCII коды ... ... табу ... ... скан-код XLAT инструкциясымен
анализданатын мәліметтер таблициясының элементтерімен слыстырылады. XLAT ... 0 ден 255-ке ... ... ... ол AL-ға ... ... 256 ... таблициядан 1 байттық мән жібереді. Таблица
мәліметтер сегментінде болуы мүмкін. Егер AL-да 30 ... коды ... ... кестеден 30 санды байты орналастырылады. Таблицадағы бұл байт 97-ге
тең орналастырылуы және ASCII-де коды «а» сәйкес болуы керек. Ал А ... үшін ... ... қажет, егер жылжу статусы орныққан болса, оларға
қатынас орнатылады. Немесе ... ... осы ... ... ... ... мүмкін.
Аяғында код номерлері пернетақта буферіне орналастырылады. Процедура
алдыиен буферде келесі символға орын бар екенін тексереді. ... ... ... ... нұсқағыш бар, ал 0040-001С буфер соңын ... ... BIOS ... ... ... ол 40Н ... да, 30-60 ... аралығында болады. Жаңа символ буфер ұяшығына
үлкен адрестермен қойылады, ал жоғарғы шекараға жеткен кезде, келесі ... ... ... орналасады.
ТӨМЕНГІ ДЕҢГЕЙ
; _ _ _ _ _ ... ... |DB |16 DUP (0) ... 16 ... ... |
| |DB ... 0.0.0.0. ... жоғарғы қатары |
| |DB ... ... ... ... |
| |DB ... |; ... ... қаттары |
| |DB |16 DUP (0) ... ... ... ... |
| |DB ... |;сол ... ... |
| |DB ... |;регистрда |
| |DB ... |; |
; _ _ _ _ ... ... ... орнатамыз
|CLI | ... шек қою ... |DS ... ... ... |AX,SEG ... |; DS: DX сілтеме жасау керек ... |DS,AX ... ... ... |DX,OFFESET NEW_KEYBOARD |;үзіліске ... |AL,9 ... ... номері ... |AH,25H |;DOS ... ... ... |21H ... ... ауыстырамыз |
|POP |DS ... ... ... ... | ... іске қосу |
; _ _ _ _ ... ... |PROG |FAR ... ... ... |
| |PUSH |AX ... |
| |PUSH |BX |; |
| |PUSH |CX |; |
| |PUSH |DI |; |
| |PUSH |ES |; |
; _ _ _ _ ... алып растау сигналын жібереміз
|IN |AL,60H |;А ... ... ... ... |AH,AL ... ... ... ... |AX ... ... ... |AL,61H |;В ... жағдайын оқимыз ... ... |;7 ... ... ... |61H,AL ... ... портқа жібереміз ... ... |; 7 ... ... ... |61H,AL |; В ... ... ... |
; _ _ _ _ _ES BIOS ... ... ... |AX,40H |; ... ... ... |ES,AX |; ... |AX ... ... ... |
; _ _ _ _ ... пернесін тексеру
| |CMP |AL,42 |;сол жақ ... ... ба? |
| |JNE |KEY_UP ... ... |
| |MOV |BL,1 ... ... өзгертеміз |
| |OR ... ... ... ... |
| |JMP |OUIT ... шығу ... |CMP |AL,170 |;сол жақ ... жіберілді ме? |
| |JNE |NEXTKEY ... ... ... |
| |MOV ... ... ... ... |
| |AND ... |; ... ... ... |
| |JMP |OUIT |; ... шығу |
|NEXTKEY | | ... ... ... |
; _ _ _ _ _бұл символды ... ... |TEST ... |; пернені жіберу коды ма? |
| |JNZ |QUIT ... шығу |
| |MOV ... ... байт ... аламыз |
| |TEST ... |; ... ... ... ба? |
| |JZ ... ... қарай жүреміз |
| |ADD |AL,100 ... бас әріп ... |MOV ... TABLE |; ... дайындаймыз |
| |XLAT |TABLE ... ... |
| | | ... |
| |CMP |AL,0 |; 0 ... ма? |
| |JE |QUIT ... |
; _ _ _ _ ... коды дайын, пернетақта буферінің жадысын тексереміз
| |MOV |BX,1AH ... ... ... |
| |MOV ... |; онын ... аламыз |
| |MOV |DI, ... ... ... аламыз |
| |CMP |CX,60 |; ... ... ... ма? |
| |JE ... ... жағдайғакөшеміз |
| |INC |CX ... ... ... |
| |INC |CX |; 2-ге |
| |CMP |CX,DI ... ... ... |
| |JE |QUIT ... тең ... толы |
| |JMP ... ... ... ... ... |CMP |DI,30 ... ... ... |
| |JE |OUIT ... ... толы ... |
; _ _ _ _ ... болмаса,оған символ қоямыз
|GO_AHEAD |MOV ... ... ... ... |
| | | ... |
| |CMP |DI,60 |; ... ... ... ма? |
| |JNE |NO_WRAP ... ... |
| |MOV |DI,28 ... нұсқағыш соңы 28+2 |
|NO_WRAP |ADD |DI,2 ... жаңа ... ... |
| |MOV ... |;мәліметтер облысына жібереміз |
; _ _ _ _ ... ... |POP |ES ... ... ... |
| |POP |DI ... |
| |POP |CX |; |
| |POP |BX |; |
| |POP |AX |; |
| |MOV |AL,20H |; соңы ... ... |
| |OUT |20H,AL |; ... ... |
| |IRET | |; ... қайту |
|NEW_KEYBOARD |END P | | ... ... ... ... ... коды ... ... коды |Перне |Басу коды |
|«1» |2 |«T» |20 |«L» |38 ... |3 |«Y» |21 |«;» |39 ... |4 |«U» |22 |«’» |40 ... |5 |«I» |23 |«”» |41 ... |6 |«O» |24 |«\» |43 ... |7 |«P» |25 |«Z» |44 ... |8 |«[» |26 |«X» |45 ... |9 |«]» |27 |«C» |46 ... |10 |«A» |30 |«V» |47 ... |11 |«S» |31 |«B» |48 ... |12 |«D» |32 |«N» |49 ... |13 |«F» |33 |«M» |50 ... |16 |«G» |34 |«,» |51 ... |17 |«H» |35 |«.» |52 ... |18 |«J» |36 |«/» |53 ... |19 |«K» |37 ... |57 ... пернелері
|Esc-1 |Ctrl-29 |Alt-56 ... |Left shift-42 ... ... |Right shift-42 ... ... ... ... ... пернелер
|F1-59 |F5-63 |F9-67 ... |F6-64 |F10-68 ... |F7-65 | ... |F8-66 | ... ... пернелері
|«7»-71 ... ... ... ... ... ... ... ... ... ... |Sys ... да ... ... ... ... ... ASCII ... ... ... 1 ден 255-ке ... коды пернетақтадан енгізіледі, Alt пернесін
басып тұрып енгізсе,пернені босатқанда кодтар енеді.
|Символ ... ... ... ... ... |16-лық |2-лік |
|(Null) |0 |00 ... |0 |48 |30 ... |
| |1 |01 ... |1 |49 |31 ... |
| |2 |02 ... |2 |50 |32 ... |
| |3 |03 ... |3 |51 |33 ... |
| |4 |04 ... |4 |52 |34 ... |
| |5 |05 ... |5 |53 |35 ... |
| |6 |06 ... |6 |54 |36 ... |
| |7 |07 ... |7 |55 |37 ... |
| |8 |08 ... |8 |56 |38 ... |
| |9 |09 ... |9 |57 |39 ... |
| |10 |0A ... |: |58 |3A ... |
| |11 |0B ... |; |59 |3B ... |
| |12 |0C ... |< |60 |3C ... |
| |13 |0D ... |= |61 |3D ... |
| |14 |0E ... |> |62 |3E ... |
| |15 |0F ... |? |63 |3F ... |
| |16 |10 ... |@ |64 |40 ... |
| |17 |11 ... |A |65 |41 ... |
| |18 |12 ... |B |66 |42 ... |
| |19 |13 ... |C |67 |43 ... |
| |20 |14 ... |D |68 |44 ... |
| |21 |15 ... |E |69 |45 ... |
| |22 |16 ... |F |70 |46 ... |
| |23 |17 ... |G |71 |47 ... |
| |24 |18 ... |H |72 |48 ... |
| |25 |19 ... |I |73 |49 ... |
| |26 |1A ... |J |74 |4A ... |
| |27 |1B ... |K |75 |4B ... |
| |28 |1C ... |L |76 |4C ... |
| |29 |1D ... |M |77 |4D ... |
| |30 |1E ... |N |78 |4E ... |
| |31 |1F ... |O |79 |4F ... ... |32 |20 ... |P |80 |50 ... |
|! |33 |21 ... |Q |81 |51 ... |
|“ |34 |22 ... |R |82 |52 ... |
|# |35 |23 ... |S |83 |53 ... |
|$ |36 |24 ... |T |84 |54 ... |
|% |37 |25 ... |U |85 |55 ... |
|& |38 |26 ... |V |86 |56 ... ... |39 |27 ... |W |87 |57 |0100111 |
|( |40 |28 ... |X |88 |58 ... |
|) |41 |29 ... |Y |89 |59 ... |
|* |42 |2A ... |Z |90 |5A ... |
|+ |43 |2B ... |[ |91 |5B ... ... |44 |2C |0010100 |\ |92 |5C ... |
|- |45 |2D ... |] |93 |5D ... |
|. |46 |2E ... |^ |94 |5E |0101110 |
|/ |47 |2F ... |_ |95 |5F ... ... ... ... ... |Символ |10-дық |16-лық |2-лік |
|. |96 |60 ... |Щ |153 |99 ... |
|a |97 |61 ... |Ъ |154 |9A ... |
|b |98 |62 ... |Ы |155 |9B ... |
|c |99 |63 ... |Ь |156 |9C ... |
|d |100 |64 ... |Э |157 |9D ... |
|e |101 |65 ... |Ю |158 |9E ... |
|f |102 |66 ... |Я |159 |9F ... |
|g |103 |67 ... |а |160 |A0 ... |
|h |104 |68 ... |б |161 |A1 ... |
|i |105 |69 ... |в |162 |A2 ... |
|j |106 |6A ... |г |163 |A3 ... |
|k |107 |6B ... |д |164 |A4 ... |
|l |108 |6C ... |ж |165 |A5 ... |
|m |109 |6D ... |з |166 |A6 ... |
|n |110 |6E ... |и |167 |A7 ... |
|o |111 |6F ... |й |168 |A8 ... |
|p |112 |70 ... |к |169 |A9 ... |
|q |113 |71 ... |л |170 |AA ... |
|r |114 |72 ... |м |171 |AB ... |
|s |115 |73 ... |н |172 |AC ... |
|t |116 |74 ... |о |173 |AD ... |
|u |117 |75 ... |п |174 |AE ... |
|v |118 |76 ... |- |175 |AF ... |
|w |119 |77 ... |- |176 |B0 ... |
|x |120 |78 ... |- |177 |B1 ... |
|y |121 |79 ... |¦ |178 |B2 ... |
|z |122 |7A ... |+ |179 |B3 ... |
|{ |123 |7B ... |¦ |180 |B4 ... |
|| |124 |7C |0111100 |¦ |181 |B5 ... |
|} |125 |7D ... |¬ |182 |B6 ... |
|~ |126 |7E |0111110 |¬ |183 |B7 ... |
| |127 |7F |0111111 |¦ |184 |B8 ... ... |128 |80 ... |¦ |185 |B9 ... ... |129 |81 ... |¬ |186 |BA ... ... |130 |82 ... |- |187 |BB ... ... |131 |83 |1000011 |- |188 |BC ... ... |132 |84 ... |- |189 |BD ... ... |133 |85 ... |¬ |190 |BE ... ... |134 |86 ... |L |191 |BF ... ... |135 |87 ... |+ |192 |C0 ... ... |136 |88 ... |T |193 |C1 ... ... |137 |89 ... |+ |194 |C2 ... ... |138 |8A ... |- |195 |C3 ... ... |139 |8B ... |+ |196 |C4 ... |
|М |140 |8C ... |¦ |197 |C5 ... ... |141 |8D ... |¦ |198 |C6 ... ... |142 |8E ... |L |199 |C7 ... ... |143 |8F ... |г |200 |C8 ... |
|Р |144 |90 ... |¦ |201 |C9 ... ... |145 |91 ... |Т |202 |CA ... ... |146 |92 ... |¦ |203 |CB ... ... |147 |93 ... |= |204 |CC ... ... |148 |94 ... |+ |205 |CD ... |
|Х |149 |95 ... |¦ |206 |CE ... ... |150 |96 ... |¦ |207 |CF ... |
|Ч |151 |97 ... |¦ |208 |D0 ... ... |152 |98 ... |Т |209 |D1 ... ... |10-дық |16-лық |2-лік ... ... ... ... |
|T |210 |D2 ... |щ |233 |E9 ... |
|L |211 |D3 ... |ъ |234 |EA ... |
|L |212 |D4 ... |ы |235 |EB ... |
|- |213 |D5 ... |ь |236 |EC ... ... |214 |D6 ... |э |237 |ED ... |
|+ |215 |D7 ... |ю |238 |EE ... |
|+ |216 |D8 ... |я |239 |EF ... |
|- |217 |D9 ... |Е |240 |F0 ... |
|- |218 |DA ... |е |241 |F1 ... |
|- |219 |DB ... |€ |242 |F2 ... |
|- |220 |DC ... |ε |243 |F3 ... ... |221 |DD ... |Ї |244 |F4 ... ... |222 |DE ... |ї |245 |F5 ... |
|- |223 |DF ... |Ỳ |246 |F6 ... ... |224 |E0 ... |ỳ |247 |F7 ... ... |225 |E1 ... |º |248 |F8 ... ... |226 |E2 ... |· |249 |F9 ... ... |227 |E3 ... |• |250 |FA ... ... |228 |E4 ... |v |251 |FB ... ... |229 |E5 ... |№ |252 |FC ... |
|ц |230 |E6 ... |¤ |253 |FD ... ... |231 |E7 ... |¦ |254 |FE ... ... |232 |E8 ... | |255 |FF ... ... ... ...

Пән: Информатика
Жұмыс түрі: Материал
Көлемі: 25 бет
Бұл жұмыстың бағасы: 500 теңге









Ұқсас жұмыстар
Тақырыб Бет саны
Пернетақтаны басқару туралы6 бет
Ақпаратты кодтау. Ақпараттың өлшем бірліетері. Санау жүйелері10 бет
Паскаль тіліндегі модульдер29 бет
Қағаздағы ақпаратты енгізу құрылғылары38 бет
"Дербес электронды есептеу техникасының архитектурасы."8 бет
Adobe Photoshop 7. 041 бет
C++ екі өлшемді массивтер20 бет
C++ тілінде сызықтық тізіммен жұмыс29 бет
Delphi ортасында бағдарламалау ( әдістемелік құрал )112 бет
Delphі ортасында жұмыс істеу технологиясы80 бет


Исходниктер
Пәндер
Көмек / Помощь
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить


Зарабатывайте вместе с нами

Рахмет!
Хабарлама жіберілді. / Сообщение отправлено.

Сіз үшін аптасына 5 күн жұмыс істейміз.
Жұмыс уақыты 09:00 - 18:00

Мы работаем для Вас 5 дней в неделю.
Время работы 09:00 - 18:00

Email: info@stud.kz

Phone: 777 614 50 20
Жабу / Закрыть

Көмек / Помощь