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

Вывод на дисплей прямоугольника с координатами левого верхнего угла, правого нижнего угла с заданными атрибутами. Создание программы, которая создает на дискете каталог с именем студента, в нем создает файл с идентификатором, куда записывает текст.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 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

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.