Работа с клавиатурой. Ввод с клавиатуры с ожиданием, без ожидания, с эхом, без эха, ввод строки символов
Управление клавиатурой с помощью скан-кодов. Очистка буфера клавиатуры. Проверка символов в буфере. Ожидание ввода символа и не выведение его на экран. Ожидание нажатия клавиши и эхо на экран. Прием символа без ожидания. Получение строки символов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 07.08.2011 |
Размер файла | 28,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реферат работа
По теме:
«Работа с клавиатурой. Ввод с клавиатуры с ожиданием, без ожидания, с эхом, без эха, ввод строки символов»
Введение
Клавиатура выполнена, как правило, в виде отдельного устройства, подключаемого к компьютеру тонким кабелем. Малогабаритные блокнотные компьютеры содержат встроенную клавиатуру.
Внутри клавиатуры находится компьютер, только этот компьютер состоит из одной микросхемы и выполняет специализированные функции. Когда вы нажимаете на клавиши, он посылает номер нажатой клавиши в центральный компьютер.
До недавнего времени существовали три различных типа клавиатуры. Это клавиатура для компьютеров IBM PC/XT, 84-клавишная клавиатура для IBM PC/AT и 101-клавишная (расширенная) клавиатура для IBM PC/AT. Некоторые клавиатуры имеют переключатель режима работы (XT/AT), расположенный на нижней крышке. Он должен быть установлен в правильное положение.
После того как операционная система Microsoft Windows получила широкое распространение, специально для нее был создан новый тип клавиатуры. К обычной клавиатуре типа IBM PC/AT были добавлены две кнопки, первая из которых дублирует вызов меню Start, выполняемый при помощи левой клавиши мыши, а вторая - вызов того же меню при помощи правой клавиши мыши.
1. Управление клавиатурой
Клавиатура содержит интеловский микропроцессор, который воспринимает каждое нажатие на клавишу и выдает скан-код в порт A микросхемы интерфейса с периферией, расположенной на системной плате. Скан-код это однобайтное число, младшие 7 битов которого представляют идентификационный номер, присвоенный каждой клавише. На всех машинах, кроме AT, старший бит кода говорит о том, была ли клавиша нажата (бит = 1, код нажатия) или освобождена (бит = 0, код освобождения). Например, 7-битный скан-код клавиши B - 48, или 110000 в двоичной системе. Когда эта клавиша нажимается, то в порт A посылается код 10110000, а когда ее отпустили - код 00110000. Таким образом, каждое нажатие на клавишу дважды регистрируется в микросхеме 8255. И каждый раз микросхема 8255 выдает подтверждение микропроцессору клавиатуры. AT работает немного по-другому, посылая в обоих случаях один и тот же скан-код, но предваряя его кодом F0H, когда клавиша отпускается.
Когда скан-код выдается в порт A, то вызывается прерывание клавиатуры (INT 9). Процессор моментально прекращает свою работу и выполняет процедуру, анализирующую скан-код. Когда поступает код от клавиши сдвига или переключателя, то изменение статуса записывается в память. Во всех остальных случаях скан-код трансформируется в код символа, при условии, что он подается при нажатии клавиши (в противном случае, скан-код отбрасывается). Конечно, процедура сначала определяет установку клавиш сдвига и переключателей, чтобы правильно получить водимый код (это «а» или «A»?). После этого введенный код помещается в буфер клавиатуры, который является областью памяти, способной запомнить до 15 вводимых символов, пока программа слишком занята, чтобы обработать их. На рис. 3-1 показан путь, который проходит нажатие на клавишу перед тем, как попасть в Вашу программу.
Имеется два типа кодов символов, коды ASCII и расширенные коды. Коды ASCII - это байтные числа, которые соответствуют расширенному набору кодов ASCII для IBM PC. Для IBM PC этот набор включает обычные символы пишущей машинки, а также ряд специальных букв и символов псевдографики. ASCII коды включают также 32 управляющих кода, которые обычно используются для передачи команд периферийным устройствам, а не выводятся как символы на экране; однако каждый из них имеет соответствующий символ, который может быть выведен на дисплей, с использованием прямой адресации дисплейной памяти. (Строго говоря, только первые 128 символов являются настоящими символами ASCII, так как ASCII - это аббревиатура от Американский стандартный код для обмена информацией. Но программисты обычно говорят о кодах ASCII, чтобы отличить их от других чисел. Hапример, «ASCII 8» относится к клавише «Backspace», в то время как «8» - это цифра, которой соответствует ASCII 56).
Второй набор кодов, расширенные коды, присвоен клавишам или комбинациям клавиш, которые не имеют представляющего их символа ASCII, таким как функциональные клавиши или комбинации с клавишей Alt. Расширенные коды имеют длину 2 байта, причем первый байт всегда ASCII 0. Второй байт - номер расширенного кода. Например, код 0:30 представляет Alt-A. Начальный ноль позволяет программе определить, принадлежит ли данный код набору ASCII или расширенному набору.
Имеется несколько комбинаций клавиш, которые выполняют специальные функции и не генерируют скан-коды. Эти комбинации включают, и, плюс для AT и для PCjr. Эти исключения приводят к заранее предопределенным результатам. Все остальные нажатия клавиш должны интерпретироваться Вашей программой и если они имеют специальное назначение, скажем, сдвинуть курсор влево, то Ваша программа должна содержать код, обеспечивающий достижение этого эффекта.
K счастью, операционная система предоставляет различные процедуры для чтения кодов из буфера клавиатуры, включая средства для получения сразу целой строки. Поскольку эти процедуры позволяют делать практически все, что Вы можете пожелать, то практически бессмысленно писать свои процедуры обработки ввода с клавиатуры и поэтому в данной работе имеется очень мало примеров программирования на низком уровне. Однако содержится обсуждение вопроса о том, как перепрограммировать прерывание клавиатуры.
2. Очистка буфера клавиатуры
Программа должна очистить буфер клавиатуры, перед тем, как выдать запрос на ввод, исключая тем самым посторонние нажатия клавиш, которые могут к тому времени накопиться в буфере. Буфер может накапливать до 15 нажатий на клавишу, независимо от того, являются ли они однобайтными кодами ASCII или двухбайтными расширенными кодами. Таким образом, буфер должен отвести два байта памяти для каждого нажатия на клавишу. Для однобайтных кодов первый байт содержит код ASCII, а второй - скан-код клавиши. Для расширенных кодов первый байт содержит ASCII 0, а второй номер расширенного кода. Этот код обычно совпадает со скан-кодом клавиши, но не всегда, поскольку некоторые клавиши могут комбинироваться с клавишами сдвига для генерации различных кодов.
Буфер устроен как циклическая очередь, которую называют также буфером FIFO (первый вошел - первый ушел). Как и любой буфер, он занимает непрерывную область адресов памяти. Однако не имеется определенной ячейки памяти, которая хранит «начало строки» в буфере. Вместо этого два указателя хранят позиции головы и хвоста строки символов, находящейся в буфере в текущий момент. Новые нажатия клавиш запасаются в позициях, следующих за хвостом (в более старших адресах памяти) и соответственно обновляется указатель хвоста буфера. После того, как израсходовано все буферное пространство, новые символы продолжают вставляться, начиная с самого начала буферной области; поэтому возможны ситуации, когда голова строки в буфере имеет больший адрес, чем хвост. После того как буфер заполнен, новые вводимые символы игнорируются, при этом прерывание клавиатуры выдает гудок через динамик.
В то время как указатель на голову установлен на первый введенный символ, указатель на хвост установлен на позицию за последним введенным символом. Когда оба указателя равны, то буфер пуст. Чтобы разрешить ввод 15 символов требуется 16-я пустая позиция, 2 байта которой всегда содержат код возврата каретки (ASCII 13) и скан-код клавиши, равный 28. Эта пустая позиция непосредственно предшествует голове строки символов. 32 байта буфера начинаются с адреса 0040:001E. Указатели на голову и хвост расположены по адресам 0040:001A и 0040:001C, соответственно. Хотя под указатели отведено 2 байта, используется только младший байт. Значения указателей меняются от 30 до 60, что соответствует позициям в области данных BIOS. Для очистки буфера надо просто установить значение ячейки 0040:001A равным значению ячейки 0040:001C.
Отметим, что программа имеет возможность вставлять символы в буфер, завершая строку символом возврата каретки и соответственно меняя значения указателей. Если это проделать правильным образом перед завершением программы, то при возврате управления в MS DOS эти символы будут считаны и может быть автоматически загружена другая программа.
Низкий уровень.
Некоторые программы могут создавать буфер где-нибудь в другом месте памяти, а кроме того, всегда существует возможность, что посреди строки 110 произойдет прерывание клавиатуры, которое изменит указатель хвоста. По этим причинам лучше оставить указатели буфера в покое. Вместо этого, лучше читать из буфера до тех пор, пока не будет возвращен символ ASCII 0, показывающий, что буфер пуст:
100 IF INKEY$<>"» THEN 100 'берем следующее если не нуль
Средний уровень.
Функция 0C прерывания 21H выполняет любую из функций ввода с клавиатуры 1, 6, 7, 8 и A, но перед этим чистит буфер клавиатуры. Надо просто поместить номер функции ввода в AL (в этом примере - 1):
; - очистка буфера перед ожиданием нажатия клавиши
MOV AH, 0CH; выбираем функцию DOS 0CH
MOV AL, 1; выбираем функцию ввода символа
INT 21H; чистим буфер, ждем ввода
Низкий уровень.
Как и в примере высокого уровня делаем значение указателя на хвост равным значению указателя на голову. Для избежания влияния прерывания клавиатуры запрещаем прерывания на время модификации указателя:
; - выравниваем значения указателей на голову и хвост
CLI; запрещаем прерывания
SUB AX, AX; обнуляем регистр
MOV ES, AX; добавочный сегмент - с начала памяти
MOV AL, ES: [41AH]; берем указатель на голову буфера
MOV ES: [41CH], AL; посылаем его в указатель хвоста
STI; разрешаем прерывания
3. Проверка символов в буфере
Вы можете проверить, был ли ввод с клавиатуры, не удаляя символ из буфера клавиатуры. Буфер использует два указателя, которые отмечают голову и хвост очереди символов, находящихся в буфере в текущий момент. Когда значения этих указателей равны, то буфер пуст. Надо просто сравнить содержимое ячеек памяти 0040:001A и 0040:001C. (Нельзя просто проверить символ, находящийся в голове очереди, поскольку буфер организован в виде циклической очереди, и позиция ее головы постоянно меняется.)
Средний уровень.
Функция 0BH прерывания 21H возвращает значение 0FFH в регистре AL, когда буфер клавиатуры содержит один или более символов и значение 0, когда буфер пуст:
; - проверка наличия символа в буфере
MOV AH, 0BH; номер функции
INT 21H; вызываем прерывание 21H
CMP AL, 0FFH; сравниваем с 0FFH
JE GET_KEYSTROKE; переход если буфер не пуст
Функция 1 прерывания BIOS 16H предоставляет ту же возможность, но, кроме того, показывает какой символ в буфере. Флаг нуля (ZF) сбрасывается, если буфер пуст, и устанавливается, если в буфере имеется символ. В последнем случае копия символа, находящегося в голове буфера, помещается в AX, но символ из буфера не удаляется. В AL возвращается код символа для однобайтных символов ASCII, иначе ASCII 0 для расширенных кодов, и тогда номер кода - в AH.
; - проверяем наличие символа в буфере
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; сравниваем их
JNE GET_KEYSTROKE; если неравны, то к процедуре ввода
4. Ожидание ввода символа и не выведение его на экран
Обычно вводимые символы выводятся на экран, чтобы было видно, что напечатано. Но иногда автоматическое эхо на экране нежелательно. Например, выбор пункта меню по нажатию клавиши. Иногда надо сначала проверить вводимые символы на ошибку перед выводом на экран. В частности, любая программа, обрабатывающая расширенные коды, должна избегать автоматического эха, так как при этом первый байт этих кодов (ASCII 0) будет выводиться на экран, вставляя пробелы между символами.
Средний уровень.
Функции 7 и 8 прерывания 21H ожидают ввода символа, если буфер клавиатуры пуст, а когда он появляется, то не выводится на экран. При этом функция 8 определяет Ctrl-Break (и инициирует процедуру обработки Ctrl-Break), а функция 7 не реагирует на него. В обоих случаях символ возвращается в AL. Когда AL содержит ASCII 0, то получен расширенный код. Повторите прерывание и в AL появится второй байт расширенного кода.
; - получаем введенный символ
MOV AH, 7; номер функции
INT 21H; ожидаем ввод символа
CMP AL, 0; проверка на расширенный код
JE EXTENDED_CODE; если да, то на особую процедуру
; иначе, код символа в AL
; - процедура обработки расширенных кодов
EXTENDED_CODE: INT 21H; берем второй байт кода
CMP AL, 75; проверяем на «стрелку-влево»
JNE C_R; если нет, то след. проверка
JMP CURSOR_LEFT; если да, то на процедуру
C_R: CMP AL, 77; сравниваем дальше и т.д.
BIOS обеспечивает процедуру, которая предоставляет те же возможности, что и функции MS DOS. Поместите 0 в AH и вызовите прерывание 16H. Функция ожидает ввода символа и возвращает его в AL. В этом случае и расширенные коды обрабатываются за одно прерывание. Если в AL содержится 0, то в AH будет содержаться номер расширенного кода. При этом не обрабатывается Ctrl-Break.
; - ждем нажатия клавиши
MOV AH, 0; номер функции ожидания ввода
INT 16H; получаем введенный код
CMP AL, 0; проверка на расширенный код
JE EXTENDED_CODE; если да, то на спец. процедуру
; иначе символ в AL
; - процедура обработки расширенного кода
EXTENDED_CODE: CMP AH, 75; берем расширенный код из AH.
5. Ожидание нажатия клавиши и эхо на экран
При вводе данных и текста, эхо вводимых символов обычно выдается на экран. При этом такие символы как возврат каретки или забой переводятся в соответствующие перемещения курсора, а не изображаются как ASCII символы для этих кодов. Выдача эха происходит в той позиции, где предварительно был установлен курсор, и текст автоматически переносится на следующую строку при достижении конца текущей. Перенос на следующую строку не требует специального кода, поскольку символы помещаются в следующую позицию буферной памяти дисплея, которая представляет из себя одну длинную строку, включающую все 25 строк дисплея.
Средний уровень.
Функция 1 прерывания 21H ожидает ввода символа, если буфер клавиатуры пуст, а затем выводит его на экран в текущую позицию курсора. Обрабатывается 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, 77; проверка на «курсор-вправо»
JNE C_R; если нет, проверка следующего
JMP CURSOR_RIGHT; если да, то на процедуру
C_R: CMP AL, 75;… и т.д.
Эта функция полностью игнорирует клавишу. Клавиша табуляции интерпретируется нормально. Клавиша забой сдвигает курсор на одну позицию влево, но символ, находящийся в этой позиции не стирается. Клавиша вызывает перемещение курсора в первую позицию текущей строки (нет автоматического перевода строки).
6. Прием символа без ожидания
Некоторые программы, работающие в реальном времени не могут останавливаться и ждать нажатия клавиши; они принимают символ из буфера клавиатуры только в те моменты, когда это удобно для программы. Например, бездействие процессора во время ожидания ввода с клавиатуры остановило бы все действия на экране в игровой программе.
Средний уровень.
Функция 6 прерывания 21H - это единственный способ получить введенный символ без ожидания. Эта функция не дает эха на экран и не распознает Ctrl-Break. Перед вызовом прерывания в DL должно быть помещено 0FFH. В противном случае функция 6 служит совершенно противоположной цели - печатает в текущей позиции курсора символ, находящийся в DL. Флаг нуля устанавливается в 1, если буфер клавиатуры пуст. Если символ принят, то он помещается в AL. Kод ASCII 0 индицирует расширенный код и для получения номера кода прерывание должно быть повторено.
MOV AH, 6; номер функции DOS
MOV DL, 0FFH; запрос ввода с клавиатуры
INT 21H; получение символа
JZ NO_CHAR; переход если нет символа
CMP AL, 0; проверка на расширенный код
JE EXTENDED_CODE; если да, то на спец. процедуру
…; иначе в AL код ASCII
EXTENDED_CODE: INT 21H; получаем номер расширенного кода
…; номер кода в AL.
7. Получение строки символов
клавиатура символ клавиша экран
MS DOS предоставляет процедуры для приема строки символов. Они автоматически повторяют процедуры ввода одного символа, описанные в предыдущих разделах, ожидая ввода возврата каретки, сигнализирующего окончание строки. Конечно, должна быть отведена память, достаточная для приема всех символов строки, и должна записываться длина каждой строки для того, чтобы отделить одну строку от другой. Это делается с помощью дескрипторов строки, которые состоят из одного или более байтов, содержащих адрес и / или длину строки. DOS хранит длину строки прямо в начале самой строки и для программы достаточно знать положение строки в памяти.
Средний уровень.
Функция 0AH прерывания 21H позволяет вводить строку длиной до 254 символов, выдавая эхо на терминал. Эта процедура продолжает ввод поступающих символов до тех пор, пока не нажата клавиша возврат каретки. DS:DX указывает на адрес памяти, куда должна быть помещена строка. При входе первый байт в этой позиции должен содержать число байтов, отводимых для этой строки. После того как строка введена, второй байт даст число реально введенных символов. Сама строка начинается с третьего байта.
Надо отвести достаточно памяти для строки нужной длины плюс два байта для дескриптора строки и один добавочный байт для возврата каретки. Когда Вы устанавливаете максимальную длину строки в первом байте, то не забудьте добавить 1 для возврата каретки. Код возврата каретки - ASCII 13 - вводится как последний символ строки, но он не учитывается в результате, который функция помещает во второй байт дескриптора строки. Таким образом, для получения 50-символьной строки надо отвести 53 байта памяти и поместить в первый байт ASCII 51. После ввода 50 символов второй байт будет содержать ASCII 50, а 53-й байт отведенной памяти - ASCII 13.
; - в сегменте данных
STRING DB 53 DUP(?); область для строки 50 символов
; - получение строки с клавиатуры
LEA DX, STRING; DS:DX указывают на адрес строки
MOV BX, DX; пусть BX тоже указывает на строку
MOV AL, 51; установка длины строки (+1 для CR)
MOV [BX], AL; посылаем в 1-й байт дескриптора
MOV AH, 0AH; номер функции
INT 21H; получаем строку
; - проверка длины строки
MOV AH, [BX]+1; теперь длина в AH
Ввод строки завершается нажатием клавиши возврат каретки и DOS добавляет в конец строки два символа: возврат каретки и перевод строки (ASCII 13 и ASCII 10). Из-за этих добавочных символов, при указании длины строки 100 символов она может занимать до 102 байт памяти. Длина введенной строки возвращается в AX и это значение включает два символа-ограничителя.
Средний уровень.
Функция 2 прерывания 16H предоставляет доступ к одному - но только одному - из байтов статуса. Это байт по адресу 0040:0017, который содержит больше полезной информации. Байт возвращается в AL.
; - проверка статуса клавиши вставки
MOV AH, 2; номер функции
INT 16H; получаем байт статуса
TEST AL, 10000000B; проверяем бит 7
JZ INSERT_OFF; если 0, то INSERT выключен
Низкий уровень.
В данном примере устанавливается режим вставки, за счет установки бита 7 байта статуса по адресу 0040:0017 (который адресуется как 0000:0417).
SUB AX, AX; устанавливаем добавочный сегмент на
MOV ES, AX; начало памяти
MOV AL, 10000000B; готовим бит 7 к установке
OR ES: [417H], AL; меняем байт статуса.
8. Написание процедуры ввода с клавиатуры общего назначения
Система кодов, используемых клавиатурой, не поддается простой интерпретации. Коды могут иметь длину 1 или 2 байта и нет простого соответствия между длиной кода и тем, служит ли он для обозначения символа или для управления оборудованием. Не все комбинации клавиш даже выдают уникальный код, поэтому необходимы добавочные усилия, чтобы различить их. Ни коды ASCII, ни расширенные коды не упорядочены таким образом, который бы позволил их простую группировку и проверку ошибок. Другими словами, процедура ввода с клавиатуры общего назначения требует хлопотливого программирования.
Средний уровень.
Когда встает вопрос о том, возник ли указанный код при нажатии одной клавиши, или в комбинации с клавишей Ctrl, проверяется скан-код. Этот метод более правилен, чем проверка бита статуса, так как скан-код запоминается в буфере клавиатуры, а установка бита статуса может быть изменена.
; - получение кода нажатой клавиши и определение его типа
NEXT: MOV AH, 0; функция ввода с клавиатуры BIOS
INT 16H; получаем введенный код
CMP AL, 0; проверка на расширенный код
JE EXTENDED_CODE; если да, то на спец. процедуру
CMP AL, 32; проверка на управляющий символ
JL CONTROL_CODE; если да, то на спец. процедуру
CMP AL, 65; если символ не входит в набор пишу-
JL NEXT; щей машинки, то берем следующий
CMP AL, 123;
JL NEXT;
; - теперь обрабатываем символ в AL
STOSB; запоминаем символ по адресу ES:DI
MOV AH, 2; функция вывода символа на экран
MOV DL, AL; помещаем символ в DL перед выводом
INT 21H; выводим его на экран
JMP NEXT; переходим к следующему символу
; - анализируем управляющие коды
CONTROL_CODE: CMP AL, 13; код ASCII 13?
JNE TAB; если нет, то след. проверка
CMP AH, 28; иначе проверяем скан-код
JNE C_M; если нет, то было Ctrl-M
CALL CARRIAGE_RET; обработка возврата каретки
JMP NEXT; переход к следующему символу
C_M: CALL CTRL_M; обработка Ctrl-M
JMP NEXT; переход к следующему символу
TAB: CMP AL, 9; проверка на табуляцию…
CMP AL, 10; затем проверка других
REJECT: JMP NEXT; переход к следующему символу
; - анализ расширенных кодов (2-й байт кода в AH):
EXTENDED_CODE: CMP AH, 71; проверка нижней границы
JL REJECT; если меньше, то след. символ
CMP AH, 81; проверка верхней границы
JL REJECT; если больше, то след. символ
; - AH содержит символ управления курсором, анализируем его:
CMP AH, 72; «курсор-вверх»?
JE C_U; если да, то на процедуру
CMP AH, 80; «курсор-вниз»?
JE C_D; если да, то на процедуру
C_U: CALL CURSOR_UP; вызов соответствующей процедуры
JMP NEXT; переход к следующему символу
C_D: CALL CURSOR_DOWN; вызов соответствующей процедуры
JMP NEXT; переход к следующему символу.
Заключение
В этой работе рассматривалось одно из важнейших устройств персонального компьютера - клавиатура. Практически ни одна программа не обходится без обращения к клавиатуре.
Программа может использовать клавиатуру по-разному. Она может задержать свое выполнение до тех пор, пока оператор не введет какое-нибудь число или пока не нажмет какую-нибудь клавишу. Выполняя некоторую работу, программа может периодически проверять, не нажал ли оператор на клавишу, изменяющую режим работы программы. Некоторые программы могут контролировать все нажатия на клавиши, активизируясь при нажатии определенной заранее комбинации. Можно использовать прерывание, вырабатываемое клавиатурой, например, для завершения работы программы.
Список литературы
1. Пятибpатов А.П. Вычислительные системы, сети и телекоммуникации: Учебник для ВУЗов / А.П. Пятибратова, Л.П. Гудыно, А.А. Кириченко; Под ред. А.П. Пятибратова. 2-е изд., перераб. И доп. - М.: Финансы и статистика, 2003.
2. Лаpионов А.М., Майоpов С.А., Новиков Г.И. Вычислительные комплексы, системы и сети. Ленингpад.: ЭНЕРГОАТОМИЗДАТ, 1987.
3. Е.П. Угрюмов. Проектирование элементов и узлов ЭВМ. Учебное пособие для вузов. - М: Высшая школа, 1987.
4. Абель Питер. Язык Ассемблера для IBM PC и программирования. - М.: Высшая школа, 1992.
5. Ю-Чжен Лю, Гибсон Г. Микропроцессоры семейства 8086/8088. - М.: Радио и связь, 1987.
6. Пирогов В.Ю. ASSEMBLER. Учебный курс. - М.: Нолидж, 2001.
Размещено на Allbest.ru
Подобные документы
Разработка ввода с клавиатуры и вывода на экран монитора данных с помощью стандартных функций printf и scanf. Ввод количества материальных точек. Работа с линейным списком. Хранение содержимого списка в блоке ячеек памяти с последовательными адресами.
курсовая работа [176,8 K], добавлен 18.01.2016Расположение клавиш на клавиатуре. "Горячие клавиши" общего назначения. Использование цифровой клавиатуры для быстрого ввода чисел. Организация клавиш набора, функциональных, перемещения и управления. Характеристика основных символов клавиатуры.
презентация [670,4 K], добавлен 10.08.2015Устройство, которое используется для ввода букв, символов и других данных в компьютер. Определение "клавиатура" и виды клавиатур. Ввод данных в электронное устройство. Алфавитно-цифровые, компьютерные, цифровые, проводные и беспроводные клавиатуры.
презентация [369,4 K], добавлен 22.12.2012Эволюция компьютерной клавиатуры: рождение, телетайп, первые клавиатуры, емкостная клавиатура. Виды клавиатур: АТРасширенная, жесткоконтактная, АТХ-клавиатуры, мультимедийные и Win-клавиатуры. Эргономика клавиатур. Защита от пользователя.
реферат [22,1 K], добавлен 09.11.2007Этап предварительной обработки данных, классификации, принятия решения. Изображения обучающих рукописных символов, тестового символа. Выход нейронной сети для тестового символа. График тренировки нейронной сети. Последовательность точек. Входные вектора.
статья [245,7 K], добавлен 29.09.2008Устройства и основные типы устройств ввода и вывода информации: манипуляторы, сканеры, микрофоны, печатающие устройства, видеокамера, вебкамера, плата видеозахвата. Клавиатура, ее основные части; служебные, функциональные клавиши, цифровая клавиатура.
реферат [487,5 K], добавлен 18.12.2009Анализ особенностей работы и основных операций с символьными строками, указателями, функциями, динамически выделяемой памятью. Ввод текста в пустые строки. Вывод введённого текста на экран. Замена первых слов строк. Проверка правильности работы программы.
курсовая работа [1,9 M], добавлен 17.07.2014Разработка при помощи средств визуального программирования Delphi приложения для Windows, представляющего собой программу, обучающую работе с клавиатурой, которая должна выдавать на экран текст, набираемый на клавиатуре и оценивать скорость набора.
курсовая работа [241,3 K], добавлен 19.03.2010Изучение понятия и основных видов массивов. Ввод массива с клавиатуры и вывод на экран. Сортировка массивов. Метод простых обменов (пузырьковая сортировка). Сортировка простым выбором и простым включением. Решение задач с использованием массивов Паскаля.
курсовая работа [82,1 K], добавлен 18.03.2013Лисповская функция чтения READ. Интерпретатор. Вызов READ. Построенные структуры. Внешние устройства и доступ к ним. Типы потоков и операции используемые для ввода и вывода. Действие макроса. Запись символов и макроинтерпретаций. Системная переменная.
доклад [7,8 K], добавлен 22.09.2008