Автор: Пользователь скрыл имя, 07 Декабря 2012 в 11:25, реферат
Ассемблер является одним из самых старых из существующих на сегодня языков. Когда-то это был основной язык, но со временем появились более удобные средства общения с компьютером. Тем не менее язык не стал «мертвым» языком. Ассемблер, по словам В.Ю. Пирогова, – “это язык процессора и, следовательно, он будет нужен до тех пор, пока будут существовать процессоры” [11]. Являясь, по сути, символическим представлением машинного языка, Ассемблер позволяет в случае необходимости разрабатывать высокоэффективные программы, решая проблемы, связанные, в частности, с аппаратурой компьютера. Особенно ценен он в особых случаях, когда существуют жесткие ограничения на использование памяти или программа “критична” по времени
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждение
высшего профессионального образования
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ПРИБОРОСТРЕНИЯ И ИНФОРМАТИКИ»
Кафедра ИТ-4 «Информационные технологии»
РЕФЕРАТ
ПО ДИСЦИПЛИНЕ
Тема: ИНТЕРФЕЙСЫ ПЕРЕФЕРИЙНЫХ УСТРОЙСТВ.
Москва, 2012
ВВЕДЕНИЕ
Периферийные устройства связывают компьютер с внешним миром, осуществляя ввод и вывод информации. Эффективность использования вычислительной системы в целом в значительной степени зависит от эффективности функционирования “периферии”.
Ассемблер является одним из самых старых из существующих на сегодня языков. Когда-то это был основной язык, но со временем появились более удобные средства общения с компьютером. Тем не менее язык не стал «мертвым» языком. Ассемблер, по словам В.Ю. Пирогова, – “это язык процессора и, следовательно, он будет нужен до тех пор, пока будут существовать процессоры” [11]. Являясь, по сути, символическим представлением машинного языка, Ассемблер позволяет в случае необходимости разрабатывать высокоэффективные программы, решая проблемы, связанные, в частности, с аппаратурой компьютера. Особенно ценен он в особых случаях, когда существуют жесткие ограничения на использование памяти или программа “критична” по времени.
Общепризнано, что в базовой подготовке программистов в качестве фундамента выступают знания принципов работы компьютера, его архитектуры и языка Ассемблер [15].
Целью данной работы является ознакомление с основными приемами программирования на Ассемблере периферийных устройств компьютера. Данная работа содержит теоретические сведения и подробно прокомментированные примеры использования языка Ассемблер при программировании работы клавиатуры, мыши, аудио- и видеосистем, дисков, а также для работы с файлами. При необходимости получения более подробной информации по каждому из затронутых вопросов можно обратиться к литературным источникам, ссылки на которые приводятся по мере изложения материала.
Теоретические сведения
Скан-код клавиши или комбинации клавиш - это номер, идентифицирующий их положение на клавиатуре (таблицы 1.1 и 1.2). Размер скан-кода - 1 байт.
Система представления символов в персональных компьютерах базируется на Американском стандартном коде для обмена информацией ASCII (American Standard Code for Information Interchange), включающем управляющие символы, используемые в коммуникационных протоколах для передачи команд периферийным устройствам (таблица 1.3), символы пишущей машинки – цифры, буквы и специальные знаки - и символы псевдографики (таблица 1.4). Размер ASCII-кода - 1 байт.
ASCII-код не связан напрямую со скан-кодом, так как одной и той же клавише могут соответствовать несколько символов - значений кода ASCII.
Расширенный код вырабатывается при нажатии функциональных клавиш и комбинаций управляющих и символьных клавиш, которые не имеют представляющего их символа ASCII [4, 5]. Он имеет размер 2 байта, при этом первый байт всегда ASCII-0 (null), а второй байт содержит соответствующий скан-код (см. таблицу 1.2).
Клавиатура - основное устройство ввода. Это совокупность механических датчиков, воспринимающих давление на клавиши и замыкающих электрическую цепь. Клавиатура имеет программируемый контроллер i8042. Его функции состоят в приеме скан-кодов от клавиатуры и управлении ее состоянием. Интерпретацией скан-кода занимается основной процессор.
Таблица 1.1 – Скан-коды для клавиш алфавитно-цифровой группы [8]
Скан-код клавиши |
Символ в режиме |
Скан-код клавиши |
Символ в режиме | ||
латинском |
русском |
латинском |
русском | ||
01h |
Esc |
1Eh |
A a |
Ф ф | |
02h |
1 ! |
1 ! |
1Fh |
S s |
Ы ы |
03h |
2 @ |
2 « |
20h |
D d |
В в |
04h |
3 # |
3 № |
21h |
F f |
А а |
05h |
4 $ |
4 ; |
22h |
G g |
П п |
06h |
5 % |
5 % |
23h |
H h |
Р р |
07h |
6 ^ |
6 : |
24h |
J j |
О о |
08h |
7 & |
7 ? |
25h |
K k |
Л л |
09h |
8 * |
8 * |
26h |
L l |
Д д |
0Ah |
9 ( |
9 ( |
27h |
: ; |
Ж ж |
0Bh |
0 ) |
0 ) |
28h |
“ ‘ |
Э э |
0Ch |
- _ |
29h |
` ~ |
Ë ё | |
0Dh |
= + |
2Ah |
Shift Left | ||
0Eh |
BackSpace |
2Bh |
| \ |
/ \ | |
0Fh |
Tab |
2Ch |
Z z |
Я я | |
10h |
Q q |
Й й |
2Dh |
X x |
Ч ч |
11h |
W w |
Ц ц |
2Eh |
C c |
С с |
12h |
E e |
У у |
2Fh |
V v |
М м |
13h |
R r |
К к |
30h |
B b |
И и |
14h |
T t |
Е е |
31h |
N n |
Т т |
15h |
Y y |
Н н |
32h |
M m |
Ь ь |
16h |
U u |
Г г |
33h |
< , |
Б б |
17h |
I i |
Ш ш |
34h |
> . |
Ю ю |
18h |
O o |
Щ щ |
35h |
? / |
, . |
19h |
P p |
З з |
36h |
Shift Right | |
1Ah |
{ [ |
Х х |
38h |
Alt | |
1Bh |
} ] |
Ъ ъ |
39h |
Пробел | |
1Ch |
Enter |
3Ah |
CapsLock | ||
1Dh |
Ctrl |
Таблица 1.2 – Скан-коды для клавиш функциональной, дополнительной и цифровой групп, а также для комбинаций клавиш [8]
Скан-код |
Клавиша или комбинация клавиш |
Скан-код |
Клавиша или комбинация клавиш |
Скан-код |
Клавиша или комбинация клавиш |
3Bh |
F1 |
54h |
Shift+F1 |
72h |
PrintScreen |
3Ch |
F2 |
55h |
Shift+F2 |
46h |
Scroll Lock |
3Dh |
F3 |
56h |
Shift+F3 |
45h |
Num Lock |
3Eh |
F4 |
57h |
Shift+F4 |
37h |
[*] |
3Fh |
F5 |
58h |
Shift+F5 |
4Ah |
[-] |
40h |
F6 |
59h |
Shift+F6 |
4Eh |
[+] |
41h |
F7 |
5Ah |
Shift+F7 |
52h |
Insert [Ins, 0] |
42h |
F8 |
5Bh |
Shift+F8 |
53h |
Delete [Del, .] |
43h |
F9 |
5Ch |
Shift+F9 |
47h |
Home [7] |
44h |
F10 |
5Dh |
Shift+F10 |
4Fh |
End [1] |
85h |
F11 |
87h |
Shift+F11 |
49h |
PgUp [9] |
86h |
F12 |
88h |
Shift+F12 |
51h |
PgDn [3] |
68h |
Alt+F1 |
5Eh |
Ctrl+F1 |
48h |
↑ [8] |
69h |
Alt+F2 |
5Fh |
Ctrl+F2 |
4Bh |
← [4] |
6Ah |
Alt+F3 |
60h |
Ctrl+F3 |
50h |
↓ [2] |
6Bh |
Alt+F4 |
61h |
Ctrl+F4 |
4Dh |
→ [6] |
6Ch |
Alt+F5 |
62h |
Ctrl+F5 |
4Ch |
[5] |
6Dh |
Alt+F6 |
63h |
Ctrl+F6 |
73h |
Ctrl+← |
6Eh |
Alt+F7 |
64h |
Ctrl+F7 |
74h |
Ctrl+→ |
6Fh |
Alt+F8 |
65h |
Ctrl+F8 |
75h |
Ctrl+End |
70h |
Alt+F9 |
66h |
Ctrl+F9 |
77h |
Ctrl+Home |
71h |
Alt+F10 |
67h |
Ctrl+F10 |
1Ch |
Ctrl+PgUp |
8Bh |
Alt+F11 |
89h |
Ctrl+F11 |
5Fh |
Ctrl+PgDn |
8Ch |
Alt+F12 |
8Ah |
Ctrl+F12 |
||
78h |
Alt+1 |
7Ch |
Alt+5 |
80h |
Alt+9 |
79h |
Alt+2 |
7Dh |
Alt+6 |
81h |
Alt+0 |
7Ah |
Alt+3 |
7Eh |
Alt+7 |
||
7Bh |
Alt+4 |
7Fh |
Alt+8 |
Примечание – Символ в квадратных скобках соответствует клавишам на цифровой клавиатуре.
Таблица 1.3 - Управляющие символы ASCII [8]
DEC |
HEX |
Имя |
Назначение |
DEC |
HEX |
Имя |
Назначение |
0 |
00 |
NUL |
Нулевой ( пустой ) символ |
16 |
10 |
DLE |
Завершение сеанса связи |
1 |
01 |
SOH |
Начало заголовка |
17 |
11 |
DC1 |
Управление устройством 1 |
2 |
02 |
STX |
Начало текста |
18 |
12 |
DC2 |
Управление устройством 2 |
3 |
03 |
ETX |
Конец текста |
19 |
13 |
DC3 |
Управление устройством 3 |
4 |
04 |
EOT |
Конец передачи |
20 |
14 |
DC4 |
Управление устройством 4 |
5 |
05 |
ENQ |
Запрос подтверждения |
21 |
15 |
NAK |
Ошибка передачи |
6 |
06 |
ACK |
Подтверждение (квитирование ) |
22 |
16 |
SYN |
Холостой ход передатчика |
7 |
07 |
BEL |
Звонок |
23 |
17 |
ETB |
Конец передачи блока |
8 |
08 |
BS |
Шаг назад ( возврат на одну позицию) |
24 |
18 |
CAN |
Отмена |
9 |
09 |
HT |
Горизонтальная табуляция (TAB ) |
25 |
19 |
EM |
Конец носителя данных |
10 |
0A |
LF |
Перевод строки |
26 |
1A |
SUB |
Подстановка (замена символа) |
11 |
0B |
VT |
Вертикальная табуляция |
27 |
1B |
ESC |
Переход ( посылка сложной команды) |
12 |
0C |
FF |
Перевод страницы |
28 |
1C |
FS |
Разделитель файлов |
13 |
0D |
CR |
Возврат каретки (ENTER) |
29 |
1D |
GS |
Разделитель групп |
14 |
0E |
SO |
Переход на нижний регистр |
30 |
1E |
RS |
Разделитель записей |
15 |
0F |
SI |
Переход на верхний регистр |
31 |
1F |
US |
Разделитель полей |
127 |
7F |
DEL |
Удаление символа |
Таблица 1.4 - Символы ASCII
dec |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | |
hex |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F | |
0 |
0 |
nul |
☺ |
☻ |
♥ |
♦ |
♣ |
♠ |
● |
◘ |
○ |
◙ |
♂ |
♀ |
♪ |
♫ |
☼ |
16 |
1 |
► |
◄ |
↕ |
‼ |
¶ |
§ |
▬ |
↨ |
↑ |
↓ |
→ |
← |
∟ |
↔ |
▲ |
▼ |
32 |
2 |
пробел |
! |
" |
# |
$ |
% |
& |
' |
( |
) |
* |
+ |
, |
- |
. |
/ |
48 |
3 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
: |
; |
< |
= |
> |
? |
64 |
4 |
@ |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
80 |
5 |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
[ |
\ |
] |
^ |
_ |
96 |
6 |
` |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
112 |
7 |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
{ |
¦ |
} |
~ |
⌂ |
128 |
8 |
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
Й |
К |
Л |
М |
Н |
О |
П |
144 |
9 |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
160 |
A |
а |
б |
в |
г |
д |
е |
ж |
з |
и |
й |
к |
л |
м |
н |
о |
п |
176 |
B |
░ |
▒ |
▓ |
│ |
┤ |
╡ |
╢ |
╖ |
╕ |
╣ |
║ |
╗ |
╝ |
╜ |
╛ |
┐ |
192 |
C |
└ |
┴ |
┬ |
├ |
─ |
┼ |
╞ |
╟ |
╚ |
╔ |
╩ |
╦ |
╠ |
═ |
╬ |
╧ |
206 |
D |
╨ |
╤ |
╥ |
╙ |
╘ |
╒ |
╓ |
╫ |
╪ |
┘ |
┌ |
█ |
▄ |
▌ |
▐ |
▀ |
224 |
E |
р |
с |
т |
у |
ф |
х |
ц |
ч |
ш |
щ |
ъ |
ы |
ь |
э |
ю |
я |
240 |
F |
Ё |
ё |
Є |
є |
Ϊ |
ї |
Ў |
ў |
° |
• |
∙ |
√ |
№ |
¤ |
■ |