Приложение 5
Натискането на клавиша се преобразува в двубайтов код, наречен ASCII код за сканиране. Този код се поставя в буфера на клавиатурата, откъдето вашата програма може да го прочете чрез прекъсване на BIOS. Старшият байт на двубайтовия код се нарича код за сканиране и е отражение на действително натиснатия клавиш. Кодът за сканиране не отразява състоянието на клавишите Shift, Ctrl или Alt и не е уникален. В допълнение към кодовете за сканиране при натискане има кодове за освобождаване на клавиши, които се различават с шестнадесетична стойност от 80 нагоре. Ниският байт на пълния код, наречен ASCII код, също не е уникален, но пълната комбинация от сканиране и ASCII код е уникална. Някои ключове нямат ASCII код и вместо това се връща нула. Такива двубайтови кодове се наричат разширени. При получаване на кода на натиснатия клавиш през DOS, последният отделя скан кода от общата стойност. Освен това работещият в системата кракер може допълнително да превежда сканираните кодове на буквени ключове в ASCII кодове на български букви.
Въз основа на гореизложеното, когато използвате стандартната функция readkey, която работи с ASCII кодове на ключове, следната схема за обработка на Pascal като цяло е правилна:
ако ch = #0 тогава започнете
допълнителен разширен код>
В Pascal десетичният код може да бъде записан като #N, където N е число, например#65 ('A' е латиница). ASCII кодовете на основните печатни знаци могат да бъдат намерени в Приложение 1, останалите необходими кодове са дадени в таблица. P5, P6.
Таблица P5. ASCII кодове за някои клавиши
Таблица P6. Разширени кодове за някои ключове
Приложение 1. Таблици с кодове на символи ascii за операционни системи dos и Windows
За да разберем как се съхранява информацията в компютъра, ниеТрябва да запомните някои термини.
Минималната информационна единица е единбит. Битът е двоична цифра със стойност "0" или "1". Очевидно е защо разработчиците на първите компютри са се спрели на двоичната бройна система. Числата в тази система са най-лесни за представяне физически - например нула съответства на "немагнетизирано" състояние на секцията с магнитна лента, а едно - "магнетизирано", или нула - състояние "няма сигнал", а едно - "има сигнал" в някаква комуникационна линия.
Лесно е да се види колко отделни стойности могат да бъдат представени с N бита - това число е 2 N. По този начин 2 8 = 256 различни стойности ще се "поберат" в един байт.
За да бъде обработена от компютър, цялата нечислова информация трябва да бъде преобразувана в числова форма. Така че, за компютърна обработка на текст, всяка буква се кодира с определен номер при въвеждане, а когато се извежда към външни устройства, като монитор или принтер, съответните изображения на букви се изграждат с помощта на кодове на знаци. Съответствието между набор от знаци и числата, които ги кодират, се наричакодиране на знаци. По правило кодът на символа се съхранява в един байт, така че кодовете на символи могат да приемат стойности от 0 до 255. Такива кодировки се наричат еднобайтови. Базовият набор от знаци на компютъра е стандартният ANSI еднобайтов набор от знаци за IBM-съвместими машини, наричан ощеASCII код(прочетете "askи-код").
В двубайтовото кодиране Unicode (Unicode), което понастоящем се предлага като световен стандарт, знакът е кодиран в два байта, така че кодовете на символи могат да приемат стойности от 0 до 65535=2 16 различни знака. Това кодиране съдържа кодове за всички букви от азбуката на много езици, математически, декоративни символи и др.
На фиг. P1 представя две основни български езикови кодировки, известни като DOS-866 и Windows-1251. Средата Turbo-Pascal и всички програми на руските версии на DOS работят с първия, всички приложения на руските версии на Windows работят с втория. За да разберете кода на знака, достатъчно е да добавите броя на единиците от първия ред към броя на десетките от първата колона. И така, кодът на буквата "Z" и в двете кодировки е 90. Символи с кодове под 32 не могат да се печатат, това са знаци като подаване на ред, връщане на каретка, табулиране, така че не са включени в таблицата. Кодът за интервал е 32. Моля, обърнете внимание, че първите половини на кодовите таблици (знаци с кодове под 128) са еднакви в тези две кодировки и във всички останали.