Клавиатура буферін тазарту
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1 Клавиатура көмегімен басқару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..5
2 Клавиатура буферін тазарту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .7
3 Буфердегі символдарды тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9
4 Символды енгізуді күту және оны экранға шығармау ... ... ... ... ... ... ... ... ... 11
5 Пернені басуды және экрандағы дыбысты (эхо) күту ... ... ... ... ... ... ... ... ...13
6 Символды күтпей.ақ қабылдау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
7 Символдар жолын алу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...16
8 Қосқыш.пернелер статусын тексеру/орнату ... ... ... ... ... ... ... ... ... ... ... ... ..18
9 Енгізу процедурасын жалпы қолданысты клавиатурадан жазу ... ... ... ... ... 20
10 Клавиатура үзілісінің программасын қайта құру ... ... ... ... ... ... ... ... ... ... ...23
11 Жекеленген пернелердің программасын қайта құру ... ... ... ... ... ... ... ... ... .27
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..29
1 Клавиатура көмегімен басқару ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..5
2 Клавиатура буферін тазарту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .7
3 Буфердегі символдарды тексеру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 9
4 Символды енгізуді күту және оны экранға шығармау ... ... ... ... ... ... ... ... ... 11
5 Пернені басуды және экрандағы дыбысты (эхо) күту ... ... ... ... ... ... ... ... ...13
6 Символды күтпей.ақ қабылдау ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 15
7 Символдар жолын алу ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...16
8 Қосқыш.пернелер статусын тексеру/орнату ... ... ... ... ... ... ... ... ... ... ... ... ..18
9 Енгізу процедурасын жалпы қолданысты клавиатурадан жазу ... ... ... ... ... 20
10 Клавиатура үзілісінің программасын қайта құру ... ... ... ... ... ... ... ... ... ... ...23
11 Жекеленген пернелердің программасын қайта құру ... ... ... ... ... ... ... ... ... .27
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 28
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..29
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 26 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 26 бет
Таңдаулыға:
МАЗМҰНЫ
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1 Клавиатура көмегімен басқару
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
2 Клавиатура буферін
тазарту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... 7
3 Буфердегі символдарды тексеру
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
4 Символды енгізуді күту және оны экранға
шығармау ... ... ... ... ... ... ... ... ... .11
5 Пернені басуды және экрандағы дыбысты (эхо) күту
... ... ... ... ... ... ... ... ... 13
6 Символды күтпей–ақ қабылдау
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
7 Символдар жолын алу
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ...16
8 Қосқыш–пернелер статусын тексеруорнату
... ... ... ... ... ... ... ... ... ... ... ... ...18
9 Енгізу процедурасын жалпы қолданысты клавиатурадан жазу
... ... ... ... ... 20
10 Клавиатура үзілісінің программасын қайта құру
... ... ... ... ... ... ... ... ... ... ... 23
11 Жекеленген пернелердің программасын қайта құру
... ... ... ... ... ... ... ... ... ..27
Қорытынды
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... 28
Қолданылған әдебиеттер
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ..29
КІРІСПЕ
Қазіргі таңда бар барлық программалау тілдерін шартты түрде екі
категорияға бөлуге болады, оның біреуі ассемблер тілі де, екіншісіне
қалғандары жатады.
Жоғарғы деңгейлі тілдер қолданбалы тапсырмаларды (материалдық,
экономикалық және т.б.) шешуге ориентир алатын болса және осы
тапсырмалардың алгоритмдік мазмұнын өзінде сақтаса, ассемблер тілі
архитектуралық процестің сонымен қатар, программалық құрылғылардың
режимдерінің және функционалдау алгоритмдердің айнасы болып табылады.
Ассемблер тілінің операторы микропроцессордың тек қана машиналық түрде
көрсетілген кодтар ғана емес, азды-көпті мнемоникалық белгілермен
көрсетілген нақты командаларын көрсетеді. Ассемблер тілінің бұл ерекшелігі
оның мүмкіндіктері мен қолдану аймағын анықтайды.
Ассемблер тілінің басқа да программалау тілдері сияқты көптеген
тұрғызылған құралдары бар. Ол кез келген бір жағдайда программалау процесін
жеңілдетеді әрі жеделдетеді және құрылған программаның сапасын көтереді.
Ассемблер тілінде кәсіптік жұмыс істеу аталған құралдармен жеке-жеке
танысуды қажет етеді. Бірақ қолданбалы мамандардың кең шеңбері үшін, егер
ассемблер тілін негізгі программалау тілі ретінде пайдаланбаса ассемблер
тілінің әрбір бөлшектерін жеке меңгеру қажет емес. Ассемблер тілінде
қолданбалы программаларды (алгоритмдік жоспарда онша қиын емес) құруда ең
бастысы құрылған программаларды оқып әрі түсіне білу керек, команда жүйесі
туралы және адресациялау әдісі туралы көрсететін болуы жеткілікті және
тілдің бір жағынан процессор және компьютердің толық архитектурасы жайлы
толық және ашық көрсетілген болу керек.
Бәрімізге белгілі ассемблер тілінде жазылған программалар (әрине егер
олар дұрыс жазылса) жоғары тиімділігімен соған сәйкес минималды көлемімен
және максималды жылдам әрекет етуімен ерекшеленеді. Бұл ассемблер тілі
программа жұмысының жылдамдығы немесе оған шығындалатын жады шешуші мән
алған жағдайда кеңінен қолдануға мүмкіндік береді. Кейбәр программалар
класын (мысалы, қатты құрылыммен ерекшеленетін құрылғылар драйверлерінің
программасы) құру кезінде ассемблер тілін міндетті түрде программалау
керек. Сонымен қатар ассемблер тілін компьютпрлік ғылыми өлшемдермен немесе
технологиялық процесті басқарылатын жүйесімен қосылған стандартты емес
аппаратураларды басқаратын программаларды жазуға ыңғайлы. Сонымен бірге
математикалық немесе логарифдік сипаттағы модельдеуден, сандық немесе
символдық ақпараттарды өңдеуге, мәлімет базасына қызмет көрсететін
программаларды жетілдіру үшін жоғарғы деңгейдегі тілдер қажет.
Ассемблер тілі алғашқы тексті жоқ программаларды зерттейтін негізгі
құрал болып табылады. Орындалатын программалардың шартты белгілерін ашу
деассемблер – қызметтік программалар көмегімен жүзеге асады. Ол орындалатын
программалық текстік кодты ассемблер түріне түрлендіреді. Әрине мұндай
текстпен жұмыс істеу үшін пайдаланып отырған программалау тілін жетік
меңгеру керек.
Ассемблер тілін меңгеру ПК-де (дербес компьютерде) программа жазатын
барлық маманға міндетті.
Қазіргі таңда IBM PC типті дербес компьютерлердің операциондық
жүйесін программалау екі класқа бөлінеді. MS-DOS бір тапсырмалы текстік
жүйе және көп тапсырмалы Windows графикалық жүйесі. MS-DOS операциондық
жүйесі нақты режимдегі жүйе болып табылад; басқа сөзбен айтқанда ол 8086
процессорлы құралдарды пайдаланады, тіпті егер ол Pentium процессорлы
компьютерде орнатылса да. Windows жүйесі – қорғаныс режиміндегі жүйе;
Қазіргі заман процессорларының мүмкіндіктерін кеңінен пайдаланады. Жекелей
алғанда, көп тапсырмалылық және кеңейтілген адрестік кеңістік.
1 КЛАВИАТУРА КӨМЕГІМЕН БАСҚАРУ
Клавиатурада интельдік микропроцессор бар, ол перненің әрбір басылуын
қабылдайды және скан–кодты жүйелік платада орналасқан перифериясы бар А
микросхемалы интерфейсының портына жібереді. Скан–код бірбайтты сан, оның
7 биттен кішілері әрбір пернеге берілген идентификациялық нөмерін
көрсетеді. АТ-дан басқа барлық машиналарда кодтың үлкен биты, перненің
басулы күйде тұруын (бит=1,басылу коды) немесе бос күйде тұруын (бит=0,бос
күй коды) көрсетеді. Мысалы, перненің 7-битты скан-коды В-48, немесе 110000
екілік жүйеде. Бұл перне басылған кезде А портына 10110000 коды жіберіледі,
ал пернені босатқан кезде – код 00110000. Осылайша, перненің әрбір басылуы
8255 микросхемасында екі рет регистірленеді. 8255 микросхемасы әрқашан
клавиатура микропроцессорына растау беріп отырады.АТ біраз басқаша жұмыс
істейді, ол екі жағдайда да бірдей скан-код жібереді, бірақ оны пернені
босатқанда F0H кодымен алдын алады.
Скан-код А портына берілгенде,клавиатура үзілісі (INT 9) шақырылады.
Процессор лезде өз жұмысын тотатып, скан-кодты анализдейтін процедураны
атқарады. Қозғау немесе қайта қосу пернесінен код алынғанда, статус
өзгерісі жадыға жазылып отырады. Барлық басқа жағдайларда скан-код перне
басылып тұрған жағдайда (керісінше жағдайда, скан-код алынып тасталынады)
символ кодына трансформирленеді. Әрине, енгізілетін кодты дұрыс алу үшін
(бұл а немесе А?), процедура алдымен қозғау немесе қайта қосу
пернелерінің орнатылуын анықтайды. Бұдан кейін енгізілген код клавиатура
буферіне орнығады, ол енгізілетін 15 символға дейін есте сақтай алатын жады
облысы болып табылады, программа оларды қорытуға бос болмағанша.
Символдық кодтардың екі типі бар, ASCII кодтары және кеңейтілген
кодтар.ASCII кодтары – бұл байттық сандар, олар IBM PC үшін ASCII
кодтарының кеңейтілген жиынтығына сәйкес келеді. IBM PC үшін бұл жиынтық өз
құрамына жазба машинасының қарапайым символдарын кіргізеді, сонымен қатар
псевдографиканың әріптері мен символдарының арнайы тізбегін. ASCII кодтары
сонымен қатар өзіне 32 басқарушы кодты қосады, олар әдетте, экранға
символдар сияқты шығарылмай, периферийлік құралдарға командаларды жіберу
үшін қолданылады; алайда олардың әрқайсысында өзіне сәйкес символ бар, ол
дисплейлік жадының тура адресациясын қолдану арқылы дисплейге шығарылуы
мүмкін.( Дәлірек айтқанда, алғашқы 128 символ ғана ASCII-дің нақты
символдары болып табылады, өйткені ASCII – бұл ақпаратпен ауысуға арналған
Американдық стандартты кодтың аббревиатурасы. Бірақ программисттер әдетте
ASCII кодтары туралы оларды басқа сандардан тазарту үшін айтады. Мысалы,
ASCII 8 Backspace пернесіне жатады, ал 8 - бұл ASCII 56 сәйкес
келетін сан).
Екінші кодтар жиынтығы, кеңейтілген кодтар, пернелерге немесе
комбинацияларға бекітілген, олардың өздерін көрсететін ASCII символы
болмайды,функционалдық пернелері немесе Alt пернесі бар комбинациялары
сияқты. Кеңейтілген кодтардың ұзындығы 2 байт, бірінші байт ылғи ASCII 0.
Екінші байт – кеңейтілген код нөмері.Мысалы, 0:30 коды Alt-A-ны білдіреді.
Бастапқы ноль программаға берілген кодтың ASCII немесе кеңейтілген кодтар
жиынтықтарына жатуын анықтайды.
Арнайы функцияларды атқаратын және скан-кодтарды генерирлемейтін
бірнеше пернелер комбинациясы бар. Бұл комбинациялар Ctrl-Break, Ctrl-
Alt-Del және PrtSc, қосымша АТ үшін SysReq және Ctrl-Alt-солға,оңға,
-CapsLock6 –Ins PCjr үшін.
2. КЛАВИАТУРА БУФЕРІН ТАЗАРТУ
Программа енгізуге сұраныс бермей тұрып кавиатура буферін тазарту
керек, бұнымен қатар ол сол уақытқа дейін буферде жиналып қалған басқа
пернелердің басылуын болдырмау керек. Буферде пернелердің 15 рет басылуы
сақталып қалуы мүмкін, бұл олардың бірбайтты ASCII немесе екібайтты
кеңейтілген кодтар болуына тәуелсіз. Осылайша буфер перненің әрбір басылуы
үшін жадының екі байтын апаруы қажет. Бірбайтты кодтар үшін бірінші
байтында ASCII коды,ал екіншісінде – перненің скан-коды болуы керек.
Кеңейтілген кодтар үшін бірінші байтта ASCII 0 болады, ал кеңейтілген
кодтың екінші нөмері әдетте перненің скан-кодымен сәйкес келеді, бірақ
әрқашан емес, өйткені кейбір пернелер әр түрлі кодтардың генерациясы үшін
қозғау пернелерімен комбинирленуі мүмкін.
Буфер циклдық кезек тәрізді болады, оны тағы FIFO (бірінші кірді –
бірінші шықты) буфері деп те атайды. Басқа буферлер сияқты ол жады
адрестерінің үздіксіз облысын алып жатыр. Бірақ онда “жол басын” буферде
сақтайтын жадының белгілі орны жоқ. Оның орнына екі көрсеткіш өтпелі
моментте буфер ішінде орналасқан символдар жолдарының бас және аяқ
позицияларын сақтап тұрады. Пернелердің жаңа басылулары позицияларда
жазылады.Буфер толғаннан кейін, жаңа енгізілетін символдар игнорирленеді,
бұл жағдайда клавиатура үзілісі динамик арқылы гудок шығарады.
Айта кету керек, программаның символды буферге орнату мүмкіндігі
бар.Егер мұны программаны аяқтау алдында дұрыс жасаса, онда басқарудың MS
DOS-қа қайтарылу барысында бұл символдар есепке алынбай, басқа программа
автоматты түрде енгізілуі мүмкін.
21Н үзілісінің ОС функциясы клавиатурадан 1,6,7,8 және А енгізудің кез-
келген функциясын атқарады, сонымен қатар клавиатура буферін тазартады. Ол
үшін енгізу функциясының нөмерін AL-ге орналастыру қажет:
Орта жағдай
;---пернені басуды күту алдында буферді тазарту
mov AH, 0CH ;DOC 0CH функциясын таңдаймыз
mov AL, 1 ;символды енгізу функциясын таңдаймыз
INT 21H ;буферді тазартамыз, енгізуді күтеміз
Төмен жағдай
Жоғарғы жағдайдағы мысалдағы сияқты, аяғындағы көрсеткіш мәнін
басындағы көрсеткіш мәніне теңестіреміз.Клавиатура үзілісінің әсер етуінен
арылу үшін үзілісті көрсеткіштің модификация уақытына тоқтатамыз:
;---бас және аяққа көрсеткіштер мәнін теңестіреміз
CLI ;үзілісті тоқтатамыз
SUB AX, AX ;регистрді нольдейміз
mov ES, AX ;қосымша сегмент – жады басынан
mov AL, ES : [41AH] ;буфер басына көрсеткіш аламыз
mov ES : [41CH] , AL ;оны аяғындағы көрсеткішке жібереміз
STI ;үзіліске рұқсат береміз
3. БУФЕРДЕГІ СИМВОЛДЫ ТЕКСЕРУ
Клавиатурадан енгізудің болу-болмауын клавиатура буферінен символдарды
өшірмей-ақ тексеруге болады.
Орта жағдай
21Н үзілісінің 0ВН функциясы AL регистрде 0FFH мәнін қайтарады,
клавиатура буферінде бір немесе одан да көп символдар және 0мәні болғанда,
буферде ештеңе болмағанда:
;---буферде символдың бар болуын тексеру
mov AH, 0BH ;функция нөмері
INT 21H ;21Н үзілісін шақырамыз
CMP AL, OFFH ;0FFH-пен салыстырамыз
JE GET_KEYSTROKE ;егер буфер бос болмаса орын ауыстыру
BIOS 16H үзілісінің 1 функциясы тура сондай мүмкіндіктерді
береді, бірақ сонымен қатар буферде қандай символ бар екенін көрсетеді.
(ZF) ноль жалауы алынып тасталынады, егер буфер бос болса, және орнатылады,
егер буферде символ болса.Соңғы жағдайда буфер басындағы символ көшірмесі
АХ-ке орнатылады, бірақ символ буферден өшірілмейді. ASCII-дің бірбайтты
символдары үшін символдың коды AL-ге қайта қайтады, керісінше кеңейтілген
кодтар үшін ASCII 0, код нөмері АН-та.
;---буферде символдың бар болуын тексереміз
mov AH, 1 ;функция нөмері
INT 16H ;символдың бар болуын
тексеру
JZ NO_CHARACTER ;ZF = 1 болғанда ауысу
;---символ бар – қандай екенін қараймыз
CMP AL, 0 ;бұл кеңейтілген код па?
JE EXTENDED_CODE ;егер солай болса, онда басқа тармаққа
Төмен жағдай.
Жоғары дәрежедегі мысалдағы сияқты көрсеткіштерді салыстырамыз:
;---басындағы және аяғындағы көрсеткіштерді салыстырамыз
mov AX,0 ;қосымша сегмент орнатамыз
mov ES, AX ;жадының басына
mov AL, ES: [41AH] ;бір көрсеткішті аламыз
mov AH, ES: [41CH] ;екінші көрсеткішті аламыз
CMP AH,AL ;оларды салыстырамыз
JME GET_KEYSTROKE ;егер тең болмаса, онда шығу процедурасына
4. СИМВОЛДЫ ЕНГІЗУДІ КҮТУ ЖӘНЕ ОНЫ ЭКРАНҒА ШЫҒАРМАУ
Әдетте енгізілуші символдар экранға не басылып тұр екенін көруге
енгізіледі. Бірақ кейде автоматикалық дыбыстың (эхо) экранға шығуы керек
емес. Мысалы, пернені басу бойынша мәзір пунктін таңдау. Кейде алдымен
енгізілетін символдарды экранға шығармас бұрын оларды тексеру
қажет.Әлбетте, кеңейтілген кодтарды өңдейтін кез-келген программа
автоматикалық дыбысқа тап болмауы қажет, өйткені бұл жағдайда осы кодтардың
(ASCII 0)бірінші байты, символдардың арасынан бос орын қалдырылып, экранға
шығарылады.
Орта жағдай.
21Н үзілісінің 7 және8 функциялары символдың енгізілуін күтеді,
егер клавиатура буфері бос болса, ал ол пайда болған жағдайда, экранға
шығарылмайды. Сондықтан 8 функциясы Ctrl-Break-ті анықтайды, ал 7 функциясы
оған әсер етпейді. Екі жағдайда да символ AL-ға қайта оралады. AL-да ASCII
0 болғанда, кеңейтілген код алынады. Үзілісті қайталағаннан кейін AL-да
кеңейтілген кодтың екінші байты пайда болады.
;---енгізілген символды аламыз
mov AH, 7 ;функция нөмері
INT 21H ;символдың енгізілуін
күтеміз
CMP AL, 0 ;кеңейтілген кодқа тексеру
JE EXTENDED_CODE ;иә болса, процедураға
;ары қарай
салыстырамыз т.с.с.
;---кеңейтілген кодтарды өңдеу процедурасы
EXTENDED_CODE: INT 21H ;кодтың екінші байтын
аламыз
CMP AL, 75 ;солға
қарай тексереміз
JNE C_R
;егер жоқ болса, онда келесі тексеру
JMP CURSOR_ LEFT;егер иә болса,
онда процедураға
C_R: CMP AL, 77 ;
салыстырулармен ары қарай т.с.с.
BIOS процедураны MS DOS функциялары сияқты мүмкіндіктермен қамтамасыз
етеді. 0-ді АН-та орналастырып, 16Н үзілісін шақырамыз. Функция символдың
енгізілуін күтеді және оны AL-ға қайтарады. Бұл жағдайда кеңейтілген кодтар
да, үзіліс те өңделеді. Егер AL-да 0 болса, онда АН-та кеңейтілген кодтың
нөмері болады. Мұнда Ctrl-Break өңделмейді.
;---перненің басылуын күтеміз
mov AH,0 ;енгізуді күтудің функция нөмері
INT 16H ;енгізілген кодты аламыз
CMP AL, 0 ;кеңейтілген кодқа тексеріс
JE EXTENDED_CODE ;иә болса, арнайы процедураға
;кері жағдайда
символды AL-ға
;---кеңейтілген кодтың өңделу процедурасы
EXTENDED_CODE: CMP AH, 75 ;АН-тан кеңейтілген кодты аламыз
;т.с.с.
5. ПЕРНЕНІ БАСУДЫ ЖӘНЕ ЭКРАНДАҒЫ ДЫБЫСТЫ (ЭХО) КҮТУ
Көрсеткіштер мен мәтінді енгізер кезде, енгізілетін символдар
дыбысы әдетте экранға беріледі. Мұнда каретканың қайтарылуы немесе забой
сияқты символдар курсордың сәйкес орын ауыстыруларына жіберіледі, олар осы
кодтарға арналған ASCII символдары түрінде бейнеленбейді. Дыбыстың берілісі
алдынала курсордың орнатылған позициясында болады және мәтін автоматты
түрде өтпелі жол біткенде келесі жолға көшіріледі. Келесі жолға көшіру
арнайы кодты қажет етпейді, өйткені символдар дисплейдің буферлі жадының
келесі позициясында орнығады, бұл позиция құрамына дисплейдің барлық 25
жолын кіргізетін бір ұзын жол түрінде болады.
Орта жағдай.
21Н үзілісінің 1 функциясы символды енгізуді күтеді, егер
клавиатура буфері бос болса, одан кейін оны курсордың өтпелі позициясында
экранға шығарады. Ctrl-Break өңделеді, сондықтан Ctrl-Break-тің өңделу
процедурасының атқарылуына болады. Енгізілген символ AL-ға қайтарылады.
Кеңейтілген кодты енгізу барысында AL-да ASCII 0 бар. AL-да екінші байтты
кеңейтілген кодты алу үшін үзілісті қайталау керек.
;---енгізілген символдың алынуы
mov AH, 1 ;функция нөмері
INT 21H ;перненің басылуын күтеміз
CMP AL, 0 ;кеңейтілген код?
JE EXTENDED_CODE ;иә болса, онда арнайы процедураға
;керісінше символ
AL-да болады
;---кеңейтілген кодтарды өңдеу процедурасы
INT 21H ;AL-да код нөмерін
аламыз
CMP AL, 22 ;”оңға қарай курсорға”
тексеру
JNE C_R ;егер жоқ болса,
онда келесіні тексеру
JMP CURSOR_RIGHT ;егер иә болса, онда процедураға
C_R:CMP AL, 75 ;... т.с.с.
Бұл функция толығымен ESC пернесін игнорирлейді. Табуляция
пернесі жақсы интерпретирленеді. Забой пернесі курсорды бір позицияға солға
жилжытады, бірақ бұл позицияда болатын символ өшірілмейді. Enter өтпелі
жолдың бірінші позициясына курсордың орын ауыстыруын шақырады (жолды
автоматты ауыстыру жоқ).
6. СИМВОЛДЫ КҮТПЕЙ-АҚ ҚАБЫЛДАУ
Нақты уақытта жұмыс істейтін кейбір программалар перненің басылуын
тоқтап және тоса алмайды; олар сол моменттерде ғана клавиатура буферінан
символды қабылдайды, бұл программалар үшін ыңғайлы уақытта болады. Мысалы,
клавиатурадан енгізуді күту барысында процессор жұмыссыздығы ойын
программасында экрандағы барлық әрекеттерді тоқтатады.
Орта жағдай.
21Н үзілісінің 6 функциясы – бұл енгізілген символды күтусіз
алудың жалғыз амалы. Бұл функция экранға дыбысты жібермейді және Ctrl-Break-
ті түсіндірмейді. DL-да үзілісті шақырмас бұрын, оның ішінде 0FFH орнатылуы
қажет. Кері жағдайда 6 функциясы қарама-қарсы мақсатпен жұмыс істейді –
DL-да орналасқан курсордың өтпелі позициясында символдарды басады. Ноль
жалауы 1-де орнатылады, егер клавиатура буфері бос болса. Егер символ
қабылданса, ол AL-ға орнықтырылады. ASCII 0 коды кеңейтілген кодты
индицирлейді және код нөмерін алу үшін үзілісті қайталау қажет.
mov AH, 6
;DOS функциясының нөмері
mov DL, 0FFH
;клавиатурадан енгізуге сұраныс
INT 21H
;символды алу
JZ NO_CHAR ;орын
ауыстыру, егер символ ... жалғасы
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
1 Клавиатура көмегімен басқару
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 5
2 Клавиатура буферін
тазарту ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... 7
3 Буфердегі символдарды тексеру
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..9
4 Символды енгізуді күту және оны экранға
шығармау ... ... ... ... ... ... ... ... ... .11
5 Пернені басуды және экрандағы дыбысты (эхо) күту
... ... ... ... ... ... ... ... ... 13
6 Символды күтпей–ақ қабылдау
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..15
7 Символдар жолын алу
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ...16
8 Қосқыш–пернелер статусын тексеруорнату
... ... ... ... ... ... ... ... ... ... ... ... ...18
9 Енгізу процедурасын жалпы қолданысты клавиатурадан жазу
... ... ... ... ... 20
10 Клавиатура үзілісінің программасын қайта құру
... ... ... ... ... ... ... ... ... ... ... 23
11 Жекеленген пернелердің программасын қайта құру
... ... ... ... ... ... ... ... ... ..27
Қорытынды
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... 28
Қолданылған әдебиеттер
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ..29
КІРІСПЕ
Қазіргі таңда бар барлық программалау тілдерін шартты түрде екі
категорияға бөлуге болады, оның біреуі ассемблер тілі де, екіншісіне
қалғандары жатады.
Жоғарғы деңгейлі тілдер қолданбалы тапсырмаларды (материалдық,
экономикалық және т.б.) шешуге ориентир алатын болса және осы
тапсырмалардың алгоритмдік мазмұнын өзінде сақтаса, ассемблер тілі
архитектуралық процестің сонымен қатар, программалық құрылғылардың
режимдерінің және функционалдау алгоритмдердің айнасы болып табылады.
Ассемблер тілінің операторы микропроцессордың тек қана машиналық түрде
көрсетілген кодтар ғана емес, азды-көпті мнемоникалық белгілермен
көрсетілген нақты командаларын көрсетеді. Ассемблер тілінің бұл ерекшелігі
оның мүмкіндіктері мен қолдану аймағын анықтайды.
Ассемблер тілінің басқа да программалау тілдері сияқты көптеген
тұрғызылған құралдары бар. Ол кез келген бір жағдайда программалау процесін
жеңілдетеді әрі жеделдетеді және құрылған программаның сапасын көтереді.
Ассемблер тілінде кәсіптік жұмыс істеу аталған құралдармен жеке-жеке
танысуды қажет етеді. Бірақ қолданбалы мамандардың кең шеңбері үшін, егер
ассемблер тілін негізгі программалау тілі ретінде пайдаланбаса ассемблер
тілінің әрбір бөлшектерін жеке меңгеру қажет емес. Ассемблер тілінде
қолданбалы программаларды (алгоритмдік жоспарда онша қиын емес) құруда ең
бастысы құрылған программаларды оқып әрі түсіне білу керек, команда жүйесі
туралы және адресациялау әдісі туралы көрсететін болуы жеткілікті және
тілдің бір жағынан процессор және компьютердің толық архитектурасы жайлы
толық және ашық көрсетілген болу керек.
Бәрімізге белгілі ассемблер тілінде жазылған программалар (әрине егер
олар дұрыс жазылса) жоғары тиімділігімен соған сәйкес минималды көлемімен
және максималды жылдам әрекет етуімен ерекшеленеді. Бұл ассемблер тілі
программа жұмысының жылдамдығы немесе оған шығындалатын жады шешуші мән
алған жағдайда кеңінен қолдануға мүмкіндік береді. Кейбәр программалар
класын (мысалы, қатты құрылыммен ерекшеленетін құрылғылар драйверлерінің
программасы) құру кезінде ассемблер тілін міндетті түрде программалау
керек. Сонымен қатар ассемблер тілін компьютпрлік ғылыми өлшемдермен немесе
технологиялық процесті басқарылатын жүйесімен қосылған стандартты емес
аппаратураларды басқаратын программаларды жазуға ыңғайлы. Сонымен бірге
математикалық немесе логарифдік сипаттағы модельдеуден, сандық немесе
символдық ақпараттарды өңдеуге, мәлімет базасына қызмет көрсететін
программаларды жетілдіру үшін жоғарғы деңгейдегі тілдер қажет.
Ассемблер тілі алғашқы тексті жоқ программаларды зерттейтін негізгі
құрал болып табылады. Орындалатын программалардың шартты белгілерін ашу
деассемблер – қызметтік программалар көмегімен жүзеге асады. Ол орындалатын
программалық текстік кодты ассемблер түріне түрлендіреді. Әрине мұндай
текстпен жұмыс істеу үшін пайдаланып отырған программалау тілін жетік
меңгеру керек.
Ассемблер тілін меңгеру ПК-де (дербес компьютерде) программа жазатын
барлық маманға міндетті.
Қазіргі таңда IBM PC типті дербес компьютерлердің операциондық
жүйесін программалау екі класқа бөлінеді. MS-DOS бір тапсырмалы текстік
жүйе және көп тапсырмалы Windows графикалық жүйесі. MS-DOS операциондық
жүйесі нақты режимдегі жүйе болып табылад; басқа сөзбен айтқанда ол 8086
процессорлы құралдарды пайдаланады, тіпті егер ол Pentium процессорлы
компьютерде орнатылса да. Windows жүйесі – қорғаныс режиміндегі жүйе;
Қазіргі заман процессорларының мүмкіндіктерін кеңінен пайдаланады. Жекелей
алғанда, көп тапсырмалылық және кеңейтілген адрестік кеңістік.
1 КЛАВИАТУРА КӨМЕГІМЕН БАСҚАРУ
Клавиатурада интельдік микропроцессор бар, ол перненің әрбір басылуын
қабылдайды және скан–кодты жүйелік платада орналасқан перифериясы бар А
микросхемалы интерфейсының портына жібереді. Скан–код бірбайтты сан, оның
7 биттен кішілері әрбір пернеге берілген идентификациялық нөмерін
көрсетеді. АТ-дан басқа барлық машиналарда кодтың үлкен биты, перненің
басулы күйде тұруын (бит=1,басылу коды) немесе бос күйде тұруын (бит=0,бос
күй коды) көрсетеді. Мысалы, перненің 7-битты скан-коды В-48, немесе 110000
екілік жүйеде. Бұл перне басылған кезде А портына 10110000 коды жіберіледі,
ал пернені босатқан кезде – код 00110000. Осылайша, перненің әрбір басылуы
8255 микросхемасында екі рет регистірленеді. 8255 микросхемасы әрқашан
клавиатура микропроцессорына растау беріп отырады.АТ біраз басқаша жұмыс
істейді, ол екі жағдайда да бірдей скан-код жібереді, бірақ оны пернені
босатқанда F0H кодымен алдын алады.
Скан-код А портына берілгенде,клавиатура үзілісі (INT 9) шақырылады.
Процессор лезде өз жұмысын тотатып, скан-кодты анализдейтін процедураны
атқарады. Қозғау немесе қайта қосу пернесінен код алынғанда, статус
өзгерісі жадыға жазылып отырады. Барлық басқа жағдайларда скан-код перне
басылып тұрған жағдайда (керісінше жағдайда, скан-код алынып тасталынады)
символ кодына трансформирленеді. Әрине, енгізілетін кодты дұрыс алу үшін
(бұл а немесе А?), процедура алдымен қозғау немесе қайта қосу
пернелерінің орнатылуын анықтайды. Бұдан кейін енгізілген код клавиатура
буферіне орнығады, ол енгізілетін 15 символға дейін есте сақтай алатын жады
облысы болып табылады, программа оларды қорытуға бос болмағанша.
Символдық кодтардың екі типі бар, ASCII кодтары және кеңейтілген
кодтар.ASCII кодтары – бұл байттық сандар, олар IBM PC үшін ASCII
кодтарының кеңейтілген жиынтығына сәйкес келеді. IBM PC үшін бұл жиынтық өз
құрамына жазба машинасының қарапайым символдарын кіргізеді, сонымен қатар
псевдографиканың әріптері мен символдарының арнайы тізбегін. ASCII кодтары
сонымен қатар өзіне 32 басқарушы кодты қосады, олар әдетте, экранға
символдар сияқты шығарылмай, периферийлік құралдарға командаларды жіберу
үшін қолданылады; алайда олардың әрқайсысында өзіне сәйкес символ бар, ол
дисплейлік жадының тура адресациясын қолдану арқылы дисплейге шығарылуы
мүмкін.( Дәлірек айтқанда, алғашқы 128 символ ғана ASCII-дің нақты
символдары болып табылады, өйткені ASCII – бұл ақпаратпен ауысуға арналған
Американдық стандартты кодтың аббревиатурасы. Бірақ программисттер әдетте
ASCII кодтары туралы оларды басқа сандардан тазарту үшін айтады. Мысалы,
ASCII 8 Backspace пернесіне жатады, ал 8 - бұл ASCII 56 сәйкес
келетін сан).
Екінші кодтар жиынтығы, кеңейтілген кодтар, пернелерге немесе
комбинацияларға бекітілген, олардың өздерін көрсететін ASCII символы
болмайды,функционалдық пернелері немесе Alt пернесі бар комбинациялары
сияқты. Кеңейтілген кодтардың ұзындығы 2 байт, бірінші байт ылғи ASCII 0.
Екінші байт – кеңейтілген код нөмері.Мысалы, 0:30 коды Alt-A-ны білдіреді.
Бастапқы ноль программаға берілген кодтың ASCII немесе кеңейтілген кодтар
жиынтықтарына жатуын анықтайды.
Арнайы функцияларды атқаратын және скан-кодтарды генерирлемейтін
бірнеше пернелер комбинациясы бар. Бұл комбинациялар Ctrl-Break, Ctrl-
Alt-Del және PrtSc, қосымша АТ үшін SysReq және Ctrl-Alt-солға,оңға,
-CapsLock6 –Ins PCjr үшін.
2. КЛАВИАТУРА БУФЕРІН ТАЗАРТУ
Программа енгізуге сұраныс бермей тұрып кавиатура буферін тазарту
керек, бұнымен қатар ол сол уақытқа дейін буферде жиналып қалған басқа
пернелердің басылуын болдырмау керек. Буферде пернелердің 15 рет басылуы
сақталып қалуы мүмкін, бұл олардың бірбайтты ASCII немесе екібайтты
кеңейтілген кодтар болуына тәуелсіз. Осылайша буфер перненің әрбір басылуы
үшін жадының екі байтын апаруы қажет. Бірбайтты кодтар үшін бірінші
байтында ASCII коды,ал екіншісінде – перненің скан-коды болуы керек.
Кеңейтілген кодтар үшін бірінші байтта ASCII 0 болады, ал кеңейтілген
кодтың екінші нөмері әдетте перненің скан-кодымен сәйкес келеді, бірақ
әрқашан емес, өйткені кейбір пернелер әр түрлі кодтардың генерациясы үшін
қозғау пернелерімен комбинирленуі мүмкін.
Буфер циклдық кезек тәрізді болады, оны тағы FIFO (бірінші кірді –
бірінші шықты) буфері деп те атайды. Басқа буферлер сияқты ол жады
адрестерінің үздіксіз облысын алып жатыр. Бірақ онда “жол басын” буферде
сақтайтын жадының белгілі орны жоқ. Оның орнына екі көрсеткіш өтпелі
моментте буфер ішінде орналасқан символдар жолдарының бас және аяқ
позицияларын сақтап тұрады. Пернелердің жаңа басылулары позицияларда
жазылады.Буфер толғаннан кейін, жаңа енгізілетін символдар игнорирленеді,
бұл жағдайда клавиатура үзілісі динамик арқылы гудок шығарады.
Айта кету керек, программаның символды буферге орнату мүмкіндігі
бар.Егер мұны программаны аяқтау алдында дұрыс жасаса, онда басқарудың MS
DOS-қа қайтарылу барысында бұл символдар есепке алынбай, басқа программа
автоматты түрде енгізілуі мүмкін.
21Н үзілісінің ОС функциясы клавиатурадан 1,6,7,8 және А енгізудің кез-
келген функциясын атқарады, сонымен қатар клавиатура буферін тазартады. Ол
үшін енгізу функциясының нөмерін AL-ге орналастыру қажет:
Орта жағдай
;---пернені басуды күту алдында буферді тазарту
mov AH, 0CH ;DOC 0CH функциясын таңдаймыз
mov AL, 1 ;символды енгізу функциясын таңдаймыз
INT 21H ;буферді тазартамыз, енгізуді күтеміз
Төмен жағдай
Жоғарғы жағдайдағы мысалдағы сияқты, аяғындағы көрсеткіш мәнін
басындағы көрсеткіш мәніне теңестіреміз.Клавиатура үзілісінің әсер етуінен
арылу үшін үзілісті көрсеткіштің модификация уақытына тоқтатамыз:
;---бас және аяққа көрсеткіштер мәнін теңестіреміз
CLI ;үзілісті тоқтатамыз
SUB AX, AX ;регистрді нольдейміз
mov ES, AX ;қосымша сегмент – жады басынан
mov AL, ES : [41AH] ;буфер басына көрсеткіш аламыз
mov ES : [41CH] , AL ;оны аяғындағы көрсеткішке жібереміз
STI ;үзіліске рұқсат береміз
3. БУФЕРДЕГІ СИМВОЛДЫ ТЕКСЕРУ
Клавиатурадан енгізудің болу-болмауын клавиатура буферінен символдарды
өшірмей-ақ тексеруге болады.
Орта жағдай
21Н үзілісінің 0ВН функциясы AL регистрде 0FFH мәнін қайтарады,
клавиатура буферінде бір немесе одан да көп символдар және 0мәні болғанда,
буферде ештеңе болмағанда:
;---буферде символдың бар болуын тексеру
mov AH, 0BH ;функция нөмері
INT 21H ;21Н үзілісін шақырамыз
CMP AL, OFFH ;0FFH-пен салыстырамыз
JE GET_KEYSTROKE ;егер буфер бос болмаса орын ауыстыру
BIOS 16H үзілісінің 1 функциясы тура сондай мүмкіндіктерді
береді, бірақ сонымен қатар буферде қандай символ бар екенін көрсетеді.
(ZF) ноль жалауы алынып тасталынады, егер буфер бос болса, және орнатылады,
егер буферде символ болса.Соңғы жағдайда буфер басындағы символ көшірмесі
АХ-ке орнатылады, бірақ символ буферден өшірілмейді. ASCII-дің бірбайтты
символдары үшін символдың коды AL-ге қайта қайтады, керісінше кеңейтілген
кодтар үшін ASCII 0, код нөмері АН-та.
;---буферде символдың бар болуын тексереміз
mov AH, 1 ;функция нөмері
INT 16H ;символдың бар болуын
тексеру
JZ NO_CHARACTER ;ZF = 1 болғанда ауысу
;---символ бар – қандай екенін қараймыз
CMP AL, 0 ;бұл кеңейтілген код па?
JE EXTENDED_CODE ;егер солай болса, онда басқа тармаққа
Төмен жағдай.
Жоғары дәрежедегі мысалдағы сияқты көрсеткіштерді салыстырамыз:
;---басындағы және аяғындағы көрсеткіштерді салыстырамыз
mov AX,0 ;қосымша сегмент орнатамыз
mov ES, AX ;жадының басына
mov AL, ES: [41AH] ;бір көрсеткішті аламыз
mov AH, ES: [41CH] ;екінші көрсеткішті аламыз
CMP AH,AL ;оларды салыстырамыз
JME GET_KEYSTROKE ;егер тең болмаса, онда шығу процедурасына
4. СИМВОЛДЫ ЕНГІЗУДІ КҮТУ ЖӘНЕ ОНЫ ЭКРАНҒА ШЫҒАРМАУ
Әдетте енгізілуші символдар экранға не басылып тұр екенін көруге
енгізіледі. Бірақ кейде автоматикалық дыбыстың (эхо) экранға шығуы керек
емес. Мысалы, пернені басу бойынша мәзір пунктін таңдау. Кейде алдымен
енгізілетін символдарды экранға шығармас бұрын оларды тексеру
қажет.Әлбетте, кеңейтілген кодтарды өңдейтін кез-келген программа
автоматикалық дыбысқа тап болмауы қажет, өйткені бұл жағдайда осы кодтардың
(ASCII 0)бірінші байты, символдардың арасынан бос орын қалдырылып, экранға
шығарылады.
Орта жағдай.
21Н үзілісінің 7 және8 функциялары символдың енгізілуін күтеді,
егер клавиатура буфері бос болса, ал ол пайда болған жағдайда, экранға
шығарылмайды. Сондықтан 8 функциясы Ctrl-Break-ті анықтайды, ал 7 функциясы
оған әсер етпейді. Екі жағдайда да символ AL-ға қайта оралады. AL-да ASCII
0 болғанда, кеңейтілген код алынады. Үзілісті қайталағаннан кейін AL-да
кеңейтілген кодтың екінші байты пайда болады.
;---енгізілген символды аламыз
mov AH, 7 ;функция нөмері
INT 21H ;символдың енгізілуін
күтеміз
CMP AL, 0 ;кеңейтілген кодқа тексеру
JE EXTENDED_CODE ;иә болса, процедураға
;ары қарай
салыстырамыз т.с.с.
;---кеңейтілген кодтарды өңдеу процедурасы
EXTENDED_CODE: INT 21H ;кодтың екінші байтын
аламыз
CMP AL, 75 ;солға
қарай тексереміз
JNE C_R
;егер жоқ болса, онда келесі тексеру
JMP CURSOR_ LEFT;егер иә болса,
онда процедураға
C_R: CMP AL, 77 ;
салыстырулармен ары қарай т.с.с.
BIOS процедураны MS DOS функциялары сияқты мүмкіндіктермен қамтамасыз
етеді. 0-ді АН-та орналастырып, 16Н үзілісін шақырамыз. Функция символдың
енгізілуін күтеді және оны AL-ға қайтарады. Бұл жағдайда кеңейтілген кодтар
да, үзіліс те өңделеді. Егер AL-да 0 болса, онда АН-та кеңейтілген кодтың
нөмері болады. Мұнда Ctrl-Break өңделмейді.
;---перненің басылуын күтеміз
mov AH,0 ;енгізуді күтудің функция нөмері
INT 16H ;енгізілген кодты аламыз
CMP AL, 0 ;кеңейтілген кодқа тексеріс
JE EXTENDED_CODE ;иә болса, арнайы процедураға
;кері жағдайда
символды AL-ға
;---кеңейтілген кодтың өңделу процедурасы
EXTENDED_CODE: CMP AH, 75 ;АН-тан кеңейтілген кодты аламыз
;т.с.с.
5. ПЕРНЕНІ БАСУДЫ ЖӘНЕ ЭКРАНДАҒЫ ДЫБЫСТЫ (ЭХО) КҮТУ
Көрсеткіштер мен мәтінді енгізер кезде, енгізілетін символдар
дыбысы әдетте экранға беріледі. Мұнда каретканың қайтарылуы немесе забой
сияқты символдар курсордың сәйкес орын ауыстыруларына жіберіледі, олар осы
кодтарға арналған ASCII символдары түрінде бейнеленбейді. Дыбыстың берілісі
алдынала курсордың орнатылған позициясында болады және мәтін автоматты
түрде өтпелі жол біткенде келесі жолға көшіріледі. Келесі жолға көшіру
арнайы кодты қажет етпейді, өйткені символдар дисплейдің буферлі жадының
келесі позициясында орнығады, бұл позиция құрамына дисплейдің барлық 25
жолын кіргізетін бір ұзын жол түрінде болады.
Орта жағдай.
21Н үзілісінің 1 функциясы символды енгізуді күтеді, егер
клавиатура буфері бос болса, одан кейін оны курсордың өтпелі позициясында
экранға шығарады. Ctrl-Break өңделеді, сондықтан Ctrl-Break-тің өңделу
процедурасының атқарылуына болады. Енгізілген символ AL-ға қайтарылады.
Кеңейтілген кодты енгізу барысында AL-да ASCII 0 бар. AL-да екінші байтты
кеңейтілген кодты алу үшін үзілісті қайталау керек.
;---енгізілген символдың алынуы
mov AH, 1 ;функция нөмері
INT 21H ;перненің басылуын күтеміз
CMP AL, 0 ;кеңейтілген код?
JE EXTENDED_CODE ;иә болса, онда арнайы процедураға
;керісінше символ
AL-да болады
;---кеңейтілген кодтарды өңдеу процедурасы
INT 21H ;AL-да код нөмерін
аламыз
CMP AL, 22 ;”оңға қарай курсорға”
тексеру
JNE C_R ;егер жоқ болса,
онда келесіні тексеру
JMP CURSOR_RIGHT ;егер иә болса, онда процедураға
C_R:CMP AL, 75 ;... т.с.с.
Бұл функция толығымен ESC пернесін игнорирлейді. Табуляция
пернесі жақсы интерпретирленеді. Забой пернесі курсорды бір позицияға солға
жилжытады, бірақ бұл позицияда болатын символ өшірілмейді. Enter өтпелі
жолдың бірінші позициясына курсордың орын ауыстыруын шақырады (жолды
автоматты ауыстыру жоқ).
6. СИМВОЛДЫ КҮТПЕЙ-АҚ ҚАБЫЛДАУ
Нақты уақытта жұмыс істейтін кейбір программалар перненің басылуын
тоқтап және тоса алмайды; олар сол моменттерде ғана клавиатура буферінан
символды қабылдайды, бұл программалар үшін ыңғайлы уақытта болады. Мысалы,
клавиатурадан енгізуді күту барысында процессор жұмыссыздығы ойын
программасында экрандағы барлық әрекеттерді тоқтатады.
Орта жағдай.
21Н үзілісінің 6 функциясы – бұл енгізілген символды күтусіз
алудың жалғыз амалы. Бұл функция экранға дыбысты жібермейді және Ctrl-Break-
ті түсіндірмейді. DL-да үзілісті шақырмас бұрын, оның ішінде 0FFH орнатылуы
қажет. Кері жағдайда 6 функциясы қарама-қарсы мақсатпен жұмыс істейді –
DL-да орналасқан курсордың өтпелі позициясында символдарды басады. Ноль
жалауы 1-де орнатылады, егер клавиатура буфері бос болса. Егер символ
қабылданса, ол AL-ға орнықтырылады. ASCII 0 коды кеңейтілген кодты
индицирлейді және код нөмерін алу үшін үзілісті қайталау қажет.
mov AH, 6
;DOS функциясының нөмері
mov DL, 0FFH
;клавиатурадан енгізуге сұраныс
INT 21H
;символды алу
JZ NO_CHAR ;орын
ауыстыру, егер символ ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz