Интерфейсы переферийных устройств

Автор: Пользователь скрыл имя, 07 Декабря 2012 в 11:25, реферат

Описание работы

Ассемблер является одним из самых старых из существующих на сегодня языков. Когда-то это был основной язык, но со временем появились более удобные средства общения с компьютером. Тем не менее язык не стал «мертвым» языком. Ассемблер, по словам В.Ю. Пирогова, – “это язык процессора и, следовательно, он будет нужен до тех пор, пока будут существовать процессоры” [11]. Являясь, по сути, символическим представлением машинного языка, Ассемблер позволяет в случае необходимости разрабатывать высокоэффективные программы, решая проблемы, связанные, в частности, с аппаратурой компьютера. Особенно ценен он в особых случаях, когда существуют жесткие ограничения на использование памяти или программа “критична” по времени

Работа содержит 1 файл

реферат -интерфейсы-13стр.doc

— 284.50 Кб (Скачать)

error   db 10, 13, 'Ошибка контроллера$'

.code

start:

mov ax, @data

mov ds, ax

; вывод приглашения

lea dx, Press

mov ah, 9h

int 21h

; ожидание нажатия клавиши, считывание  кода (без “Эхо”)

mov ah, 8h

int 21h ; в AL код введенного символа (первый байт)

; Идентификация введенного кода:

cmp al, 0 ; AL = 0? (код расширенный?)

jne ascii ; если нет à на метку ascii

; если да (код расширенный) à на следующую команду

int 21h ; вторичный вызов для получения в AL второго байта кода

cmp al, 5Eh  ;сравнение второго байта кода со скан-кодом Ctrl+F1

jne kon ; если не равно (расширенный, но не Ctrl+F1),

; переход на метку kon

; равно, т.е. введен Ctrl+F1 !!!

; ******************** БЛОК 2 *******************************

; вывод приглашения

lea dx, PressShift

mov ah, 9h

int 21h

; ожидание нажатия клавиши, считывание  кода 

mov ah, 0

int  16h

; считывание байта состояния в AL (см. п. 1.3.5)

xor ax, ax

mov es, ax

mov al, es:[417h]

; тестирование бита №1 (выяснение состояния левого Shift)

test al, 10b

jz net   ; Shift не нажат à на метку net

; Shift нажат

lea dx, ShiftDa  ; в dx начальный адрес сообщения ShiftDa

jmp vivod   ; переход на vivod

net:

lea dx, ShiftNet  ; в dx начальный адрес сообщения ShiftNet

vivod:    ; вывод нужного сообщения

mov ah, 9h

int 21h

; БЛОК 2 завершен à выход

jmp exit

;******** *************************************************

; в al код 'w' ?

ascii: cmp al, 'w'

jne kon  ; нет (это и не 'w', и не Ctrl+F1) à на метку kon

; в al код 'w' !!!

; ************************ БЛОК 1 ************************

; работа с контроллером клавиатуры (см. подробно в п. 1.3.3)

cli

xor cx, cx

wait1:

in al, 64h

test al, 10b

loopnz wait1

jnz er

mov al, 0EDh

out 60h, al

xor cx, cx

wait2:

in al, 64h

test al, 10b

loopnz wait2

jnz er

; отправка второго байта (см. формат байта в п.1.2.4)

mov al, 100b

out 60h, al

sti

; БЛОК 1 завершен à выход

jmp exit

;******** ***************************************************

kon: 

lea dx, konec  ; вывод сообщения «Конец»

mov ah, 9h

int 21h

jmp exit

er:      ; вывод сообщения « Ошибка контроллера »

lea dx, error

mov ah, 9h

int 21h

exit:

mov ah, 0   ; задержка до нажатия любой клавиши

int  16h

mov ax, 4C00h  ; завершение программы

int  21h

end start

 

РазмещЛЛено на

Allbes

ЛИТЕРАТУРА

 

С.В.Краснов, В.Ф.Ларина. Периферийные устройства.

Содержит примеры  использования языка Ассемблер  при программировании работы клавиатуры, мыши, аудио- и видеосистем, дисков. Каждый пример сопровождается кратким изложением теоретического материала.

t.ru


Информация о работе Интерфейсы переферийных устройств