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


Кіріспе . . .
: 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. 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. . Пернетақта буферін тазалау

Кодты еңгізуге сұрату жіберместен бұрын, бағдарлама пернетақта буферіндегі керексіз символдарды өшіруі керек. Символдардың 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-ге) орналастыру керек.

; _ _ _ _ _ пернені басу алдындағы буферді тазалау

MOV
AH, OCH
; DOS OCH функциясын таңдаймыз
MOV: MOV
AH, OCH: AL, 1
; DOS OCH функциясын таңдаймыз: ; символды енгізу функциясын таңдаймыз
MOV: INT
AH, OCH: 21H
; DOS OCH функциясын таңдаймыз: ; буферді тазалап, енгізуді күту

ТӨМЕНГІ ДЕҢГЕЙ

Жоғарғы деңгейдегі сияқты нұсқағыштардың басы мен соңын теңестіреміз. Пернетақта үзіліске ұшырамау үшін модификациялау кезінде нұсқағыштар үзілісін тоқтатып қоямыз.

; _ _ _ _ _ нұсқағыштардың басы мен соңының мәндерін туралу

CLI
; үзілісті тоқтатамыз
CLI: SUB
: AX, AX
; үзілісті тоқтатамыз: ; регистрді нольге келтіреміз
CLI: MOV
: ES, AX
; үзілісті тоқтатамыз: ; қосушы сегмент жады басынан бастап
CLI: MOV
: AL, ES:[41AH]
; үзілісті тоқтатамыз: ; буфер басына нұсқағыш аламыз
CLI: MOV
: ES:[41CH], AL
; үзілісті тоқтатамыз: ; буфер соңына жібереміз
CLI: STI
:
; үзілісті тоқтатамыз: ; үзілісті аяқтаймыз

1. 3. Буфедегі символдарды тексеру

Пернетақта буферінен сиволдарды өшірмей де, пернетақтадан енгізу болған/болмағанын тексеруге болады. Буфер ағымдағы уақытта жадыда орналасқан символдар тізбегінің басы мен аяғын көрсететін 2 түрлі нұсқағыш пайдаланады. Олардың мәндері тең болғанда, буфер бос болады. Тек 0040:001А және 0040:001С ұяшықтарының мәнін салыстыру керек.

ОРТАША ДЕҢГЕЙ

Пернетақта буфері бос болғанда OFFH мәндерін AL регистырына ОВН функциясы 21Н үзілісі қайтарады.

; _ _ _ _ _буфердегі символдарды тексеру

MOV
AH, 1
; функция номері
MOV: INT
AH, 1: 16H
; функция номері: ; 21Н үзілісін шақырамыз
MOV: CMP
AH, 1: AL, OFFH
; функция номері: ; OFFH-пен салыстырамыз
MOV: JZ
AH, 1: GET_KEYSTROKE
; функция номері: ; буфер бос болмаса ауысу

; _ _ _ _ _ буфердегі символдарды қайталап тексеру

MOV
AH, 1
; функция номері
MOV: INT
AH, 1: 16H
; функция номері: ; символды тексеру
MOV: JZ
AH, 1: NO_CHARACTER
; функция номері: ; ZF=1болса, ауысу

; _ _ _ _ _ енгізілген символды көру

CMP
AL, 0
; бұл кеңейтілген код па?
CMP: JE
AL, 0: EXTENDED_CODE
; бұл кеңейтілген код па?: ; егер иә, онда басқа бұрымға көшу

ТӨМЕНГІ ДЕҢГЕЙ

Жоғарғы деңгейдегі сияқты нұсқағыштарды салыстырамыз

; _ _ _ _ _ нұсқағыштардың басы мен соңын салыстыру

MOV
AX, 0
; қосымша сегментті орнатамыз
MOV: MOV
AX, 0: ES, AX
; қосымша сегментті орнатамыз: ; жадының басына
MOV: MOV
AX, 0: AL, ES:[41AH]
; қосымша сегментті орнатамыз: ; бір нұсқағыш аламыз
MOV: MOV
AX, 0: AH, ES:[41CH]
; қосымша сегментті орнатамыз: ; басқа нұсқағыш аламыз
MOV: CMP
AX, 0: AH, AL
; қосымша сегментті орнатамыз: ; салыстырамыз
MOV: JNE
AX, 0: GET_KEYSTROKE
; қосымша сегментті орнатамыз: ; егер тең болмаса енгізу процедурасына көшу

1. 4. Символ енгізілуін күту және оны экранға бейнелеу

Әдетте енгізілген символдар экранға не басылғанын көру үшін бейнеленеді. Кейде автоматты жаңғырық экранда қажет емес. Мысалы, мәзір пунктін пернені басу арқылы бейнелеуге болады. Кейде енгізілген символдарды экранға шықпастан бұрын қателікке тексеру керек.

Кеңейтілген кодты өңдейтін әрбір бағдарлама автоматты жаңғырықты пайдалану керек, себебі бұл кезде алғашқы байт (ASCIIO) коды символдар арасына бос орын (пробел) қалдырып экранға шығарады.

ОРТАША ДЕҢГЕЙ

Егер буфер бос болса, 7 және 8 функцияларын 21Н үзілісі символ енгізілуін күтеді. Бұл кезде 8 функциясы Ctrl+Break пернелер комбинациясын анықтайды, ал 7 функциясы оған әсер етпейді. Екі жағдайда да символ AL-ге қайтады. AL ASCLL кодын меншіктеген кезде кеңейтілген код болады. Үзілісті қайталағанда AL-да екінші кеңейтілген код шығады.

; _ _ _ _ _ енгізілген символды аламыз

MOV
AH, 7
; функция номері
MOV: INT
AH, 7: 21H
; функция номері: ; символды енгізуді күтеміз
MOV: CMP
AH, 7: AL, 0
; функция номері: ; кеңейтілген кодты тексеру
MOV: JE
AH, 7: EXTENDED. CODE
; функция номері:

; иә, онда ерекше процедураға

; әйтпесе символ кодын AL-ге

; _ _ _ _ _ кеңейтілген кодты өңдеу процедурасы

EXTENDED_CODE:
INT
21H
; екінші код байтын аламыз
EXTENDED_CODE::
INT: CMP
21H: AL, 75
; екінші код байтын аламыз: ; «стрелка-солға» тексереміз
EXTENDED_CODE::
INT: JNE
21H: C_R
; екінші код байтын аламыз: ; егер жоқ болса, келесі тексеру
EXTENDED_CODE::
INT: JMP
21H: CURSOR_LEFT
; екінші код байтын аламыз: ; егер иә болса, келесі процедураға
EXTENDED_CODE:: C_R
INT: CMP
21H: AL, 77
; екінші код байтын аламыз: ; ары қарай тексереміз

BIOS MS DOS функциялары сияқты процедураларды барлық мүмкіндіктермен қамтамасыз етеді. 0 ді АН-қа орналастырып 16Н үзілісін шақырамыз. Функция символ енгізілуін күтіп, оны AL-ге қайтарады. Бұл жағдайда кеңейтілген кодтар бір үзілісте өңделеді. Егер AL-де 0 орналасса, AH-та кеңейтілген код номері болады. Ctrl+Breaк өңделмейді.

; _ _ _ _ _ перне басылуын күту.

MOV
AH, O
; Енгізуді күту функциясының нөмері
MOV: INT
AH, O: 16H
; Енгізуді күту функциясының нөмері: ; енгізілген кодты алмасу
MOV: CMP
AH, O: AL, O
; Енгізуді күту функциясының нөмері: ; кеңейтілген кодқа тексеру
MOV: JE
AH, O: EXTENDED_CODE
; Енгізуді күту функциясының нөмері: ; егер иә, онда арнайы процедура
MOV:
AH, O:
; Енгізуді күту функциясының нөмері: ; әйтпесе А символ AL-ге

; _ _ _ _ _ кеңейтілген код процедурасының өңделуі.

EXTENDED_CODE:
CMP
AH 75
; AH-тан кеңейтілген код аламыз
EXTENDED_CODE::
CMP:
AH 75:
; AH-тан кеңейтілген код аламыз: ; т. с. с

1. 5. Экранда перне басылуы мен жаңғырықты күту

Әдетте мәтін мен мәліметтер енгізгенде, енгізілген символдар жаңғырығы экранға шығарылады. Бұл кезде каретқаға қайту символдары курсордың бағытымен орын ауыстырады, ASCII символдарының коды сияқты бейнеленбейді. Жаңғырықты беру алдын-ала курсор орналастырып, мәтіннің автоматты түрде келесі жолға орын аыстырған позициясында болады. Келесі жолға көшу арнайы кодты қажет етпейді, себебі символдар дисплей жадысының буферінде орналасады. Жады дисплейдің 25 жолын да қамтиды.

ОРТАША ДЕҢГЕЙ

Егер пернетақта буфері бос болса, 1 функциясы 21үзілісі символдың енгізілуін күтеді, кейін оны экранға курсордың ағымдағы орнына шығарады. Ctrl+Breaк өңделеді, сондықтан Ctrl+Breaк өңдеу процедурасы жұмыс істей алады. Енгізілген символ AL-ге қайтарылады. Кеңейтілген кодты енгізгенде AL де ASCII0 болады.

; _ _ _ _ _енгізілген символды алу

MOV
AH, 1
; функция номері
MOV: INT
AH, 1: 21H
; функция номері: ; перне басылуын күту
MOV: CMP
AH, 1: AL, 0
; функция номері: ; кеңейтілген код
MOV: JE
AH, 1: EXTENDED_CODE
; функция номері:

; иә, онда арнайы процедура

; әйтпесе символ AL де орналасқан

; _ _ _ _ _кеңейтілген кодты өңдеу процедурасы

INT
21H
; AL да код номерін аламыз
INT: CMP
21H: AL, 77
; AL да код номерін аламыз: ; «курсор-оңға» тексеру
INT: JNE
21H: C_R
; AL да код номерін аламыз: ; жоқ, келесіні тексеру
INT: JMP
21H: CURSOR_RIGHT
; AL да код номерін аламыз: ; иә, процедураға жіберу
INT: C_R: CMP
21H: AL, 75
; AL да код номерін аламыз: ; т. с. с . . .

Бұл функция <Esc> пернесінің әрекеттерін қабылдамайды. Перне табуляциясы интерпретенцияланады, <Enter> клавишасы ағымдағы жолдың бірінші позициясына көшеді.

1. 6. Символды күтусіз қабылдау

Кейбір нақты уақытта тоқтаусыз жұмыс істейтін бағдарламалар перненің басылуын күте алмайды, олар пернетақта буферінен символдарды бағдарламаға қолайлы, яғни бағдарламаға қажет уақытта ғана қабылдайды. Мысалы, ойын бағдарламасында процессордың пернетақтадан код енгізілуін күтуі, экрандағы бейнені тоқтатып қояр еді.

ОРТАША ДЕҢГЕЙ

6 функциясы 21Н үзілісі бұл енгізілген символды күтусіз алудың жалғыз жолы. Бұл функция экранға жаңғырық шығармайды және Ctrl+Breaк-ты анықтамайды. Үзілісті шақырмас бұрын OFFH-ты DL-ге орналастыру керек. Әйтпесе 6 функциясы экранға DL-да орналасқан символдарды шығара бастайды. Пернетақта буфері бос болса нөлдік жалауша 1-ге орналастырылады. Егер символ қабылданса, ол AL-ға орналасады. ASCII коды кеңейтілген кодты идентификациялайды, код номерін алу үшін үзліс қайталануы тиіс.

MOV
AH, 6
; DOS функциясының номері
MOV: MOV
AH, 6: DL, OFFH
; DOS функциясының номері: ; пернетақтадан сұраныс енгізу
MOV: INT
AH, 6: 21H
; DOS функциясының номері: ; символды алу
MOV: JZ
AH, 6: NO_CHAR
; DOS функциясының номері: ; символ жоқ болса, ауысу
MOV: CMP
AH, 6: AL, 0
; DOS функциясының номері: ; кеңейтілген кодқа тексеру
MOV: JE
AH, 6: EXTENDED_CODE
; DOS функциясының номері:

; иә, арнайы процедура

; әйтпесе ASCII кодын AL-ге орнату

MOV: EXTENDED_CODE
AH, 6: INT 21H
; DOS функциясының номері: ; кеңейтілген код номерін аламыз

1. 7. Символдар жолын алу

ОРТАША ДЕҢГЕЙ

жаңғырықты териналға шығара отырып ОАН функциясын 21Н үзілісі 254 символдан тұратын жолды шығарады. Бұл процедура кареткаға қайту пернесі басылғанша символдарды енгізеді. DS:DX жадысы жолдың орналасу адресінкөрсетеді. Жолға енгізілген символдардың бірінші байты байттар саны болуы керек. Жол енгізілгеннен кейін, екінші байт нақты енгізілген символдардың санын көрсетеді. Жолдың өзі үшінші байттан басталады.

Жолды жеткілікті ұзындықта жасап, қосымша екі бит дискрипторға және бір қосымша бит кареткаға қайту үшін қосу керек. Жолдың максималды ұзындығын алған кезде, міндетті түрде кареткаға қайтатын қосымша бір байт алу керек. Кареткаға қайту коды ASCII-13 соңғы символ болып енгізіледі. Бірақ, ол жол дискриптордың екінші байтына орналастыратын функция болып есептелінбейді. Осылайша, 50 символды жол алу үшін ASCII 51 бірінші байтына 53 байт жады орналастыру керек.

; _ _ _ _ _ мәліметтер сегменттері

STRING
DB 53 DUP(?)
; 50 символдық жолға аумақ

; _ _ _ _ _пернетақтадан жолды алу

LEA
DX, STRING
; DS:DX жол адресін көрсету
LEA: MOV
DX, STRING: BX, DX
; DS:DX жол адресін көрсету: ; BX-те адресті көрсету
LEA: MOV
DX, STRING: AL, 51
; DS:DX жол адресін көрсету: ; жол ұзындығын орнату(+1 CRүшін )
LEA: MOV
DX, STRING: [BX], AL
; DS:DX жол адресін көрсету: ; дискриптордың 1-ші байтына жібереміз
LEA: MOV
DX, STRING: AH, OAH
; DS:DX жол адресін көрсету: ; функция номері
LEA: INT
DX, STRING: 21H
; DS:DX жол адресін көрсету: ; жолды алу

; _ _ _ _ _жолдың ұзындығын тексеру

MOV
AH, [BX] +1
Енді ұзындық AH-та орналасқан

Бұл процедура MS DOS жолының редактрлеу мүмкіндіктерін пайдалануға болады. «стрелка -солға» пернесі экрандағы символдарды жадыға орналастырмай өшіреді. Табуляция пернесі жұмыс істейді. Кеңейтілген кодтар қолданылмайды. Терминалда оң жаң шетке жеткен кезде жол, келесі жолғакөшеді, ал оң жақ төменгі шетке жеткенде экран бір жол үстіге көтеріледі. Көбірек символ енгізгенде, артық символдар енгізілмей динамик дыбысы қосылады.

MS DOS-та жаңғырықты терминалға шығармай да «жолды» алу әрекеттері бар. 3FH функциясы 21р үзілісі- бұл ортақ мәнді енгізу функциясы, әдетте дисктік операцияларда қолданылады. Ол үшін алдын-ала анықталған кодтық сан болып файл (file handle) дискрипторын қажет етеді, ол операциялық жүйеде қондырғының мәнән анықтауда қолданылады. Пернетақтада 0 дискрипторы қолданылады, ол ВХ-қа орналасуы керек. DS:DX-қа жол орналасатын адресті көрсетіп, ал СХ-қа жолдың максималды ұзындығын енгізіп, функция шақырамыз

; _ _ _ _ _жолды жаңғырықсыз оқу

MOV
AH, 3FX
; функция номері
MOV: MOV
AH, 3FX: BX, 0
; функция номері: ; дискриптор файлының номері
MOV: LEA
AH, 3FX: DX, STRING_BUFFER
; функция номері: ; жолды енгізетін буферге сілтеме
MOV: MOV
AH, 3FX: CX, 100
; функция номері: ; жолдың максималды ұзындығы
MOV: INT
AH, 3FX: 21H
; функция номері: ; енгізуді күту

Жолды енгізу кареткаға қайту пернесін басқаннан кейін анықталады, осы кезде DOS жол соңына екі символ қосады: кареткаға қайту және жолды ауыстыру (ASCII 13 және ASCII 10) . Қосымша символдарды қосқаннан кейін, максималды жол ұзындығын 100 деп көрсетсек те, ол 102 байтқа дейін жадыдан орын алуы мүмкін. Енгізілген жол ұзындығы АХ-қа қайтады және бұл мән өзіне 2 шектеуші символды қосады.

1. 8. Қайтақосқыш пернелерді тексеру/орнату статусы

0040:0017 және 0040:0018 жады ұяшығында орналасқан 2байт биттерден тұрады, олар перне статусын мына түрде бейнелейді:

Бит
Перне
Бит =1болғандағы мән
: 0040:0017
Бит: 7
Перне: INSERT
Бит =1болғандағы мән: Қою режимі қосулы
:
Бит: 6
Перне: CAPSLOCK
Бит =1болғандағы мән: CAPSLOCK режимі қосулы
:
Бит: 5
Перне: NUMLOCK
Бит =1болғандағы мән: NUMLOCK режимі қосулы
:
Бит: 4
Перне: SCROLLLOSK
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 3
Перне: ALT
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 2
Перне: CTRL
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 1
Перне: сол SHIFT
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 0
Перне: оң SHIFT
Бит =1болғандағы мән: Перне басылып тұр
: 0040:0018
Бит: 7
Перне: INSERT
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 6
Перне: CAPSLOCK
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 5
Перне: NUMLOCK
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 4
Перне: SCROLLLOSK
Бит =1болғандағы мән: Перне басылып тұр
:
Бит: 3
Перне: CTRL+ NUMLOCK
Бит =1болғандағы мән: CTRL+ NUMLOCK режимі қосулы

Қалған биттер қолданылмайды.

Пернетақтада үзіліс болғанда, буферден ешқандай символ оқылмасада, қосқыш пернелердің біреуі басылғанда-ақ биттар статусы жаңартылады. Осы 8 перненің ішінде кодты буферге орналастыратын INS бұл дұрыс ереже (INS статусын орнату буферде символға бос орын жоқ болса да ауысады) . CTRL+ NUMLOCK тоқтату режимі іске қосылғанда 0040:0018 адресінен 3 биті 1 ге орналасады, бұл жағдайда бағдарлама тоқтатылады.

... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Пернетақтаны басқару туралы
Дербес компьютер құрамы
Әмбебaп моделдейтін бaғдaрлaмaлaрды пaйдaлaну тиімділігі. MatCad
“Ипподром”
Медицинадағы бұлтты есептеу
Параллель және сериялық порттардың тарихы
Компьютер құрылымдары
Жүйелік программалаудың негізгі ұғымдары мен анықтамалары жайлы ақпарат
Компьютерлік ойындардың зияны
Дербес компьютердің ақпараттық қамтамасыздандыруы
Пәндер



Реферат Курстық жұмыс Диплом Материал Диссертация Практика Презентация Сабақ жоспары Мақал-мәтелдер 1‑10 бет 11‑20 бет 21‑30 бет 31‑60 бет 61+ бет Негізгі Бет саны Қосымша Іздеу Ештеңе табылмады :( Соңғы қаралған жұмыстар Қаралған жұмыстар табылмады Тапсырыс Антиплагиат Қаралған жұмыстар kz