Интерфейсы периферийных устройств
Вывод на дисплей прямоугольника с координатами левого верхнего угла, правого нижнего угла с заданными атрибутами. Создание программы, которая создает на дискете каталог с именем студента, в нем создает файл с идентификатором, куда записывает текст.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 17.02.2012 |
Размер файла | 20,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
1. В скобках указаны средства, которые необходимо применить.
При нажатии клавиши HOME (int16) включить индикатор NumLock и отключить ScrollLock CapsLock (контроллер). Если введен символ 1 или 2, вывести на дисплей его значение, увеличенное в три раза.
2. Под указанный ЗВУК понимается воспроизведение небольшого фрагмента любого музыкального произведения. Таблицу «Высота звука» см. в файле ВЫСОТА_зв.xls
Вручную позиционировать мышь в верхней половине экрана и предложить нажать
Сначала нажать правую кнопку мыши, а потом любую клавишу клавиатуры.
Если нажата F6, определить вертикальную координату курсора мыши, в момент нажатия правой клавиши и вывести полученное значение (использовать модуль IO.ASM) иначе установить курсор на 80 ниже (+ЗВУК)
3. Составить программу, выполняющую следующие действия:
а) вывод на дисплей прямоугольника с координатами левого верхнего угла (X1, Y1), правого нижнего угла (X2, Y2) с заданными атрибутами. Прямоугольник обрамлен рамкой (использовать один или несколько символов по усмотрению студента);
б) выполнения задания в соответствии с вариантом;
в) при нажатии клавиши отличной от указанной в задании, программа завершает работу.
Корд. окна |
Цвет фона |
Цвет текста |
Задание |
||
x1/y1 |
x2/y2 |
||||
11/4 |
59/18 |
черный |
Вывести слово «СТЕК» буквами разного цвета в нижней части окна. При нажатии клавиши F2 изменить цвета верхней и нижней сторон рамки и сделать их мерцающими |
4. Создать программу, которая создает на дискете каталог с именем <Фамилия студента>, в нем создать файл с идентификатором <ИМЯ_СТУДЕНТА>, куда записать фрагмент Вашего любимого стихотворения. Прочитать записанное и вывести на дисплей. После выполнения действий, предусмотренный дополнительными указаниями, удалить каталог. Все действия сопровождать комментарии.
дисплей программа дискета файл
1. В скобках указаны средства, которые необходимо применить. При нажатии клавиши HOME (int16) включить индикатор NumLock и отключить ScrollLock CapsLock (контроллер). Если введен символ 1 или 2, вывести на дисплей его значение, увеличенное в три раза
*comment *
при нажатии клавиши HOME (16int) включить индикатор NumLock и отключить остальные, если введен символ 1 или 2 вывести на дисплей его значение увеличенное в три раза.
*
MODEL small
include io.asm
stack 100
vivod macro msob
mov dx, offset msob
mov ah, 9h
int 21h
endm
data
MessagaScroll db 10,13, 'Включен индикатор NumLock$'
error db 10, 13, 'Ошибка контроллера$'
m db 10,13,'$'
ind db 0
R db 10000b
z db 3
code
;____________________________________
start:
Mov ax,@data
mov ds, ax
;____________________________________
; проверяем нажата ли кнопка home 47h
; проверяем на цифрову 1 или 2
;____________________________________
mov ah, 0
int 16h; вызов функции 0 прерывания 16h
cmp al, 0; al=0? (это расширенный код?)
jne net; если AL 0 ' на nestrela
cmp ah, 47h ; второй байт кода = 47h? (это home?)
; push ax
jne net ; если AH 47h ' на net,
; иначе ' на следующую команду
; выключили индикаторы
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
отправка второго байта
mov al, 010b
out 60h, al
sti
vivod MessagaScroll
loop exit
;____________________________________
net:
; проверяем на клавишу «1»
; если нажата 1 то вывеси число увеличеное в трираза т.е. 3
;____________________________________
; pop ax; из стека ах
cmp al, '1'; нажата 1?
jne exit1; если нет то выходим
sub al, 30h
mul z
outint ax
;____________________________________
exit1:
; проверяем на клавишу «2»
; если нажата 2 то вывеси число увеличеное в трираза т.е. 6
cmp al, '2'; нажата 2?
jne exit; если нет то выходим
sub al, 30h
mul z
outint ax
loop exit
;____________________________________
er: ; вывод сообщения «Ошибка контроллера»
vivod error
exit:
mov ah, 0h
int 16h; остановка
mov ah, 4ch
int 21h
end start
2. Под указанный ЗВУК понимается воспроизведение небольшого фрагмента любого музыкального произведения. Таблицу «Высота звука» см в файле ВЫСОТА_зв.xls. Вручную позиционировать мышь в верхней половине экрана и предложить нажать. Сначала нажать правую кнопку мыши, а потом любую клавишу клавиатуры. Если нажата F6, определить вертикальную координату курсора мыши, в момент нажатия правой клавиши и вывести полученное значение (использовать модуль IO.ASM) иначе установить курсор на 80 ниже (+ЗВУК)
comment *
позиционировать мышь в верхней половине экрана и предложить нажать сначала правую кнопку мыши а потом любую клавишу, если нажата F6 определить вертикальную координату курсора мыши, в момент нажатия правой клавиши и вывести полученное значение (использовать модуль IO.ASM) иначе установить курсор на 80 ниже (+ЗВУК)
*
masm ; синтаксический режим
MODEL small
386
include io.asm
stack 100h
data
message1 db 10,13,'Нажмите правую кнопку мыши ', '$'
message db 10,13,'Нажмите любую клавишу:', '$'
mesf6 db 10,13,'Нажата клавиша «F6» ', '$'
meserror db 10,13,'Ощибка!!! Буфер не оcвободился!!!', '$'
mesdrda db 10,13,'Драйвер мыши установлен', '$'
mesdrnet db 10,13,'Драйвер мыши не установлен', '$'
mesKord db 10,13,'Вертикальная координата курсора = ', '$'
mespoz db 10,13,'Курсор установлен на 80 ниже', '$'
mescursogr db 10,13,'Курсор ограничен ', '$'
meskursvkl db 10,13,'Курсор включен', '$'
nom db 0
sdvig db 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 1, 2, 1, 2
nota dw 1139,2280,1353,1521,1809,2031,1809,1139,2280,1353,1521,1809,2031,1809
x dw 0
y dw 0
code
;*********************************************
; процедура вывода сообщения
mes proc
push ax
mov ah, 9h
int 21h
pop ax
ret
mes endp
;**********************************************
; процедура включения курсора
vkl proc
push ax
mov ax, 1
int 33h
pop ax
ret
vkl endp
;***********************************************
; процедура выключения курсора
vikl proc
push ax
mov ax, 2
int 33h
pop ax
ret
vikl endp
;***********************************************
; процедура ожидания
shmi proc
push ax
mov ah, 7h
int 21h
pop ax
ret
shmi endp
;***********************************************
start:
Mov ax, @data
mov ds, ax
xor ax, ax
int 33h
cmp ax, 0
je drnet
lea dx, mesdrda
call mes
lea dx, mescursogr
call mes
lea dx, message1
call mes
mov ax, 7h
mov cx, 0
mov dx, 640
int 33h
mov ax, 8h
mov cx, 0
mov dx, 100
int 33h
call vkl
call shmi
call vikl
jmp Poz
;************** сообщение о отсутствие драйвера *****************
drnet: lea dx, mesdrnet
call mes
jmp exit
; *********** определить вертикальные координаты курсора
Poz:
mov ax, 5h
mov bx, 10b
int 33h
mov X, cx
mov Y, dx
lea dx, message
call mes
mov ah, 0h
int 16h
Cmp al, 0
jne pozic
;*********** расширен код *********************
Cmp ah, 40h ; клавиша F6?
jne pozic ; nef6
; F6!!!
lea dx, mesKord
call mes
outint Y
call vkl
call shmi
call vikl
jmp exit
;************ устанавливаем курсор в позицию на 80 меньше ****************
pozic:
pop dx
pop cx
mov ax, 4h
mov cx, X
mov dx, Y
add dx, 80
int 33h
lea dx, mespoz
call mes
call vkl
call shmi
call vikl
mov ah, 2h
int 16h
;*************** звук ***************************
mov al, 0B6h
out 43h, al
in al, 61h
or al, 00000011b
out 61h, al
xor si, si
xor di, di
next_note:
inc nom
cmp nom, 15
je fin
mov ax, nota[si]
out 42h, al
xchg al, ah
out 42h, al
mov eax, 7FFFFFFh
mov cl, sdvig[di]
shl eax, cl
mov ecx, eax
cycle:loopd cycle
add si, 2
inc di
jmp next_note
fin:
in al, 61h
and al, 0FCh
out 61h, al
jmp exit
;******************************************************************
error:
lea dx, meserror
call mes
exit:
call shmi
call vikl
mov ah, 4Ch
int 21h
end start
3. Координаты окна х1/у1 11/4 х2/у2 59/18 цвет фона черный. Продемонстрировать плавное изменение курсора по вертикали и вывести слово «СТЕК» буквами разного цвета в нижней части окна. При нажатии клавиши F2 изменить цвета верхней и нижней сторон рамки и сделать их мерцающими
*comment *координаты окна х1/у1 11/4 х2/у2 59/18 цвет фона черный, продемонстрировать плавное изменение курсора по вертикали и вывести слово «СТЕК», буквами разного цвета в нижней части окна. При нажатии клавиши F2 изменить цвета верхней и нижней сторон рамки и сделать их мерцающими
masm ; синтаксический режим
MODEL small
386
stack 100h
data
message db 10,13,'Нажмите клавишу «F2» ', '$'
mespgup db 10,13,'Нажата клавиша «F2» ', '$'
mesneto db 10,13,'Была нажата не «F2» ', '$'
meskurs db 10,10,13,'Изменение курсора ', '$'
mesvse db 10,10,10,10,10,13,'Конец.', '$'
mes db 'СТЕК', 0 ; 0 - признак конца вывода
atr db 00000010b, 00001111b, 00000100b, 000001010b; массив атрибутов
kol dw 10
code
;*********************************************
; процедура вывода сообщения
mesaga proc
push ax
mov ah, 9h
int 21h
pop ax
ret
mesaga endp
;*********************************************
; процедура ожидания
shmi proc
push ax
mov ah, 7h
int 21h
pop ax
ret
shmi endp
;************************************************************************
start:
Mov ax, @data
mov ds, ax
xor ax, ax
mov al, 3
int 10h
;********* вывод рамки верх ***********************************************
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 3 ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 18h ; атрибуты выводимого символа
mov cx, 51 ; кол-во повторений символа
int 10h
;********* вывод рамки низ **************************************************
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 19 ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 29h ; атрибуты выводимого символа
mov cx, 51 ; кол-во повторений символа
int 10h
;********* вывод рамки лево ***********************************************
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 3 ; номер строки
int 10h
vniz:
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
inc dh ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 3ch ; атрибуты выводимого символа
mov cx, 1 ; кол-во повторений символа
int 10h
cmp dh, 18
jne vniz
;********* вывод рамки право
mov ah, 2 ; установка курсора в позицию
mov dl, 60 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 3 ; номер строки
int 10h
vniz1:
mov ah, 2 ; установка курсора в позицию
mov dl, 60 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
inc dh ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 2ah ; атрибуты выводимого символа
mov cx, 1 ; кол-во повторений символа
int 10h
cmp dh, 18
jne vniz1
;*********** вывод окна
mov ah, 6 ; прокрутка окна вверх
mov al, 0; кол-во прокручиваемых строк
mov bh, 0fh; атрибуты заполнения пустых строк
mov ch, 4 ; № строки верхнего левого угла
mov cl, 11 ; № столбца
mov dh, 18 ; № строки нижнего правого угла
mov dl, 59 ; № столбца
int 10h
;********************************************************
mov si, 0
mov dl, 34 ; номер столбца X (начало текста минус 1)
m: mov ah, 2 ; установка курсора
inc dl ; Х:= X + 1 (= 34 в самом начале)
mov bh, 0 ; видеостраница
mov dh, 18 ; строка
int 10h
mov ah, 9 ; вывод символа
mov al, mes[si] ; символ из массива
mov bh, 0
mov bl, atr[si] ; атрибуты из массива
mov cx, 1 ; выводить один символ
int 10h
inc si ; увеличение индекса - переход на след. символ
cmp mes[si], 0 ; это последний символ?
jne m ; если нет - на метку
;*********** размер курсора меняем ************
lea dx, meskurs
call mesaga
call shmi
mov ah, 1
mov ch, 6
mov cl, 7
int 10h
ZZ:
mov ah, 1
dec ch
mov cl, 7
int 10h
mov kol, 0ffffh
Da:
dec kol
cmp kol, 0
jne Da
cmp ch, 0
jne ZZ
call shmi
lea dx, message
call mesaga
mov ah, 0h
int 16h
Cmp al, 0
jne neto
;*********** расширен код *********************
Cmp ah, 3ch ; клавиша f2?
jne neto ; ne f2
; f2
lea dx, mespgup
call mesaga
;********* вывод рамки верх
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 3 ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 0BDh ; атрибуты выводимого символа
mov cx, 51 ; кол-во повторений символа
int 10h
;********* вывод рамки низ
mov ah, 2 ; установка курсора в позицию
mov dl, 10 ; номер столбца
mov bh, 0 ; номер текстовой видео страницы
mov dh, 19 ; номер строки
int 10h
mov ah, 9 ; вывод символа с заданными атрибутами
mov al, '#' ; аски код выводимого символа
mov bh, 0 ; номер страницы видео памяти
mov bl, 0CCh ; атрибуты выводимого символа
mov cx, 51 ; кол-во повторений символа
int 10h
;***********************************************
jmp exit
neto:
lea dx, mesneto
call mesaga
exit:
lea dx, mesvse
call mesaga
call shmi
mov ah, 4Ch
int 21h
end start
4. Создать программу, которая создает на дискете каталог с именем <Фамилия студента >, в нем создать файл <ИМЯ_СТУДЕНТА>, куда записать фрагмент Вашего любимого стихотворения. Прочитать записанное и вывести на дисплей. После выполнения действий, предусмотренный дополнительными указаниями, удалить каталог. Все действия сопровождать комментарии. Получить дату и время последней модификации файла
masm; синтаксический режим
MODEL small
include io.asm
stack 100h
data
mesdata db 10,13,'Дата последней модификации $'
mesvrem db 10,13,'Время последней модификации $'
mes_katal_da db 10,13,'Каталог создан $'
mes_katal1_da db 10,13,'Подкаталог создан $'
mes_fail_da db 10,13,'Фаил создан $'
mes_fail_zapis_da db 10,13,'Информация записана в файл $'
mes_katal_net db 10,13,'Ошибка ошибка каталог не создан $'
mes_katal1_net db 10,13,'Ошибка подкаталог не создан $'
mes_fail_net db 10,13,'Ошибка файл не создан $'
mes_fail_zapis_net db 10,13,'Ошибка информация в файл не записана $'
mes_katal_del db 10,13,'Каталог удален $'
mes_katal1_del db 10,13,'Подкаталог удален $'
mes_fail_del db 10,10,13,'Файл удален $'
mesCdisk_Da db 10,13,'Каталог сменен на C:\=$'
mesCdisk_Net db 10,13,'Каталог не сменен на C:\=$'
mes_katal_del_net db 10,13,'Ошибка каталог не удален $'
mes_katal1_del_net db 10,13,'Ошибка подкаталог не удален $'
mes_fail_del_net db 10,13,'Ошибка файл не удален $'
mes_dostup_klas db 10,13,'Кол-во доступных кластеров: $'
mes_dostup_bait db 10,13,'Кол-во байт на сектор: $'
mes_dostup_klas1 db 10,13,'Кол-во кластеров на диске: $'
mesvse db 10,13,'ВСЁ!!! $'
stix db 10,13,' А.С. Пушкин ', 10,13
db 'Я Вас любил, ',10,13
db 'Любовь ещо быть может;', 10,13
db 'В душе моей угасла не совсем, ',10,13
db 'Но пусть она вас больше не тревожит', 10,13
db 'Я не хочу печалить вас ничем', 10,13
db 'Я Вас любил безмолвно безнадежно', 10,13
db 'То робостью, то ревностью томим, ',10,13
db 'Я вас любил так искренне, так нежно', 10,13
db 'Как дай Вам бог любимой быть другим', 10,13
dlina equ $-stix
stix1 db dlina dup (?), '$'
des dw?
papka db 'a:\Ivanov', 0
fail db 'a:\Ivanov\Sergey.txt', 0
min db 0
chas db 0
sek db 0
god db 0
messs db 0
den db 0
code
;*********************************************
; процедура вывода сообщения
mesaga proc
push ax
mov ah, 9h
int 21h
pop ax
ret
mesaga endp
;*********************************************
; процедура ожидания
shmi proc
push ax
mov ah, 7h
int 21h
pop ax
ret
shmi endp
;***********************************************************
start:
Mov ax, @data
mov ds, ax
;********* создание каталога
mov ah, 39h
mov dx, offset papka
int 21h
jc error_katal
lea dx, mes_katal_da
call mesaga
call shmi
;****** создание файла
mov ah, 3Ch
mov dx, offset fail
mov cx, 000b ; атрибуты скрытый системный
int 21h
jc error_fail
; ошибок нет сохранение дескриптора пауза
lea dx, mes_fail_da
call mesaga
mov des, ax
call shmi
;********** запись в файл
mov ah, 40h
mov bx, des
mov cx, dlina
mov dx, offset stix
int 21h
jc error_fail_zapis
lea dx, mes_fail_zapis_da
call mesaga
call shmi
mov ah, 3Eh
mov bx, des
int 21h
jmp vivod
error_fail:
lea dx, mes_fail_zapis_net
call mesaga
jmp exit
error_fail_zapis:
lea dx, mes_fail_net
call mesaga
jmp exit
error_katal1:
lea dx, mes_katal1_net
call mesaga
jmp exit
error_katal:
lea dx, mes_katal_net
call mesaga
jmp exit
errorCdisk:
mov ah, 2
mov dl, ':'
int 21h
mov al, messs
cbw
outint ax
mov ah, 2
mov dl, ':'
int 21h
mov al, god
cbw
add ax, 1980
int 21h
end start
Размещено на Allbest.ru
Подобные документы
Программирование и простейшие графические возможности. Основные структуры для представления и два конструктора с аргументами. Дальнейшие координаты точки и инициализирование новой. Хранение и изменение координат левого верхнего угла прямоугольника.
лабораторная работа [24,2 K], добавлен 01.12.2011Создание программы, которая создает набор данных в динамической памяти компьютера и позволяет корректировать его. Описание программного комплекса. Обзор особенностей реализации программы с использованием модулей. Добавление данных в конец текущего набора.
курсовая работа [455,2 K], добавлен 28.08.2017Участие регистров ввода-вывода в работе периферийных устройств. Отражение состояния периферийных устройств в состоянии разрядов регистров состояния. Перечень имен и номеров регистров ввода-вывода, управления и состояния микроконтроллеров разных типов.
курсовая работа [171,2 K], добавлен 22.08.2010Разработка программы, которая создает в отдельном потоке случайный массив целых чисел в заданном диапазоне и выводит на экран эти числа. Описание общего алгоритма, интерфейс программы. Методы решения и алгоритмы задач, реализуемых каждым потоком.
курсовая работа [372,6 K], добавлен 17.04.2014Классификация и основные определения периферийных устройств. Устройства ввода и вывода информации, памяти, мультимедиа, связи, защиты электропитания. Интерфейсы подключения периферийных устройств. Рекомендации и правила эксплуатации компьютерной техники.
курсовая работа [582,1 K], добавлен 06.09.2014Основы проверки и расчета входных данных и вывода выходных данных программы, их блок-схемы. Реализация функции считывания числовых данных из файла, управление (создание, уничтожение и редактирование) визуальными компонентами во время выполнения программы.
контрольная работа [1,3 M], добавлен 12.06.2009Основные виды периферийных устройств в персональных компьютерах. Классификация периферийных устройств. Устройства ввода, вывода и хранения информации. Передача информации с помощью периферийных устройств. Организация сетей на основе программных средств.
контрольная работа [1,7 M], добавлен 11.11.2014Разработка в среде Delphi программы "Поиск кратчайшего пути", которая создает лабиринт, находит кратчайший путь его прохождения и отображает его. Структура данных задачи и методы ее решения. Общая схема организации и взаимодействия модулей, их описание.
курсовая работа [86,5 K], добавлен 19.10.2010Разработка программы для решения системы обыкновенных дифференциальных уравнений на базе языка программирования Паскаль АВС. Чтение исходных данных из внешнего файла. Вывод исходных данных и результатов на дисплей и во внешний файл. Суть метода Ейлера.
реферат [126,1 K], добавлен 12.01.2012Создание программы, обеспечивающей ввод информации и отображение ее на экран, вывод в типизированный файл и загрузку из него. Составление банка данных кинологов, включающего в себя фамилию и имя владельца собаки, кличку и породу собаки, ее дату рождения.
дипломная работа [2,4 M], добавлен 29.06.2014