Автор: Пользователь скрыл имя, 10 Октября 2011 в 15:21, контрольная работа
Задание 1
При нажатии клавиши HOME (int 16h) включить индикатор NumLock и отключить индикаторы ScrollLock и CapsLock (контроллер). Если введен символ 1 или 3, вывести на дисплей его значение, увеличенное в два раза.
loop met1 ;повторить цикл заново
pop dx ;восстановить
исходные координаты
mov cx,2 ;вывод повторить 2 раза (2 строки)
met21:
push cx ;сохранить в стеке
push dx ;сохранить в стеке
mov cx,16 ;количество символов в столбце
met22:
push cx ;сохранить регистр для дальнейшего применения
mov ah,02h ;функция перемещения курсора
int 10h ;вызвать стандартную функцию
inc dh ;переместить на следующую позицию
mov ah,09h ;функция вывода символа
mov al,'|' ;код символа <|>
mov cx,1 ;повторить 1 раз
int 10h
pop cx ;восстановить регистр
loop met22 ;вывести строку полностью
pop dx ;восстановить регистр
add dl,39 ;переместить на следующий столбец
pop cx ;восстановить регистр
loop met21 ;повторить цикл заново
;-----------------------------
nextt:
;проверить нажатие на кнопку стрелка вверх и стрелка вниз
mov ah,0h ;
int 16h ;ожидать нажатие на кнопку
cmp al,0 ;проверить скан код
je nn_1
jmp quit ;выйти
nn_1:
cmp ah,48h ;проверить на код "стрелка вверх"
jne nn_2 ;перейти если не равно
jmp str_up ;стрелка вверх
nn_2:
cmp ah,50h ;проверить на код "стрелка вниз"
je str_down ;перейти если равно
jmp quit ;выйти
;-----------------------------
str_up:
mov bh,0 ;нулевая страница
mov bl,10h ;атрибут символа
lea dx,txtA
mov si,dx ;указатель на массив строки
mov dl,21 ;позиция по X
mov dh,10 ;позиция по Y
mov cx,4 ;количество символов
jmp str_n
str_down:
mov bh,0 ;нулевая страница
mov bl,5ah ;атрибут символа
lea dx,txtB
mov si,dx ;указатель на массив строки
mov dl,21 ;позиция по X
mov dh,10 ;позиция по Y
mov cx,4 ;количество символов
jmp str_n
str_n:
push cx
mov ah,02 ;функция установки позиции курсора
int 10h ;вызвать функцию
inc dl
mov cx,1
mov ah,09h
mov al,[si] ;
int 10h
inc si
pop cx
loop str_n
jmp nextt
;-----------------------------
quit:
mov ax,4c00h
int 21h
end main
Задание 4
Создать программу,
которая создает на дискете каталог
с именем <ФАМИЛИЯ_СТУДЕНТА>, в нем
создать файл с идентификатором <ИМЯ_СТУДЕНТА>,
куда записать фрагмент Вашего любимого
стихотворения. Прочитать записанное
и вывести на дисплей. Установить атрибуты
файла: системный, доказать, что они установлены.
После выполнения действий, удалить каталог.
Листинг 4
model small
include io.asm
.stack 100
.data
text db 251,?,250 DUP('$'),"$" ;массив под данных
buf db 251 dup('$'), '$' ;массив под данных
pdir db "C:\Зейналов",0
pname db "C:\Зейналов\Руслан.txt",0
discr dw 0
cnrff db 10,13,'Создание подкаталога(нажмите кнопку)','$'
crff db 10,13,'Создание файла (нажмите кнопку)','$'
intxt db 10,13,'Введите текст (нажмите кнопку)', 10,13,'$'
savetxt db 10,13,'Сохранить текст (нажмите кнопку)','$'
sadpu db 10,13,'Установить атрибут файла: системный '
db '(нажмите кнопку)','$'
closetxt db 10,13,'Закрыть файл (нажмите кнопку)','$'
delfile db 10,13,'Удалить файл (нажмите кнопку)','$'
readfile db 10,13,'Читать
файл (нажмите кнопку)', 10,13,'$'
mr0 db 10,13,'Каталог не создан','$'
mr1 db 10,13,'Файл не создан','$'
mr2 db 10,13,'Файл не сохранен','$'
mr3 db 10,13,'Атрибуты не изменены','$'
mr4 db 10,13,'Файл не закрыт','$'
mr5 db 10,13,'Файл не
удален','$'
sz dw 0
.code
main:
mov ax,@data ;
mov ds,ax ;
;-----------------------------
;сообщение действия
mov ah,09h
lea dx,crff ;сообщение о создании каталога и файла
int 21h
mov ah,0h ;ожидать нажатие клавиши
int 16h
;создаем каталог
mov ah,39h ;функция
lea dx,pdir ;путь каталога
int 21h
jnc n0
jmp er0 ;перейти на обработчик ошибки
n0:
;и новый файл
mov ah,3ch ;
xor cx,cx ;создаем файл без атрибутов
lea dx,pname ;путь и имя файла
int 21h
jnc n1
jmp er1 ;перейти на обработчик ошибки
n1:
mov discr,ax ;сохраним
дескриптор файла в регистре ax
;-----------------------------
;вывести сообщение
mov ah,09h
lea dx,intxt ;
int 21h
mov ah,0h ;ожидать нажатие клавиши
int 16h
;ввести строку с любым текстом
mov ah,0ah
lea dx,text ;ввести текст
int 21h
;-----------------------------
;сообщение действия
mov ah,09h
lea dx,savetxt ;
int 21h
mov ah,0h ;ожидать нажатие клавиши
int 16h
;запишем данные в файл
mov bx,discr ;
mov ah,40h ;функция на запись в файл
xor cx,cx ;сбросить регистр
mov cl,text[1] ;
mov sz,cx ;сохраним размер данных
lea dx,text[2] ;и начало данных
int 21h ;записать данные в файл
jnc n3
jmp er2 ;перейти на обработчик ошибки
;-----------------------------
n3:
;сообщение действия
mov ah,09h
lea dx,readfile ;
int 21h
mov ah,0h ;ожидать нажатие клавиши
int 16h
;переместим курсор на начало
mov ax,4200h ;
xor cx,cx ;установить смещение
xor dx,dx ;
int 21h
;прочитаем данные из файла
mov ah,3fh ;выбрать номер функции
mov cx,sz ;установить размер считываемых данных
lea dx,buf ;массив данных
int 21h
;выведем текст на экран
xor bx,bx
mov bl,cl
mov buf[bx],'$' ;байт окончания строки
mov ah,09h ;вывести строку
int 21h
;-----------------------------
Выполняется согласно заданию
;сообщение действия
mov ah,09h
lea dx,sadpu
int 21h ;сообщение о смене атрибута файла
mov ah,0h ;ожидать нажатие клавиши
int 16h
;меняем атрибут файла
lea dx,pname ;указать на файл
mov ax,4301h ;функция установки атрибутов файла
mov cx,0100b ;атрибут: системный
int 21h
;-----------------------------
;сообщение действия
mov ah,09h
lea dx,closetxt
int 21h ;сообщение о закрытии файла
mov ah,0h ;ожидать нажатие клавиши
int 16h
;закроем файл
mov ah,3eh
mov bx,discr ;
int 21h
jnc nn_13
jmp er4
nn_13:
;-----------------------------
;удалить файл
mov ah,09h
lea dx,delfile ;
int 21h
mov ah,0h ;ожидать нажатие клавиши
int 16h
;удалим файл
mov ah,41h ;номер функции
lea dx,pname ;указать имя файла
int 21h
jc er5
mov ah,3Ah ;номер функции
lea dx,pdir ;указать каталог
int 21h
jmp quit ;выйти
из программы
;вывод сообщений об ошибках
er0:
lea dx,mr0
jmp eer
er1:
Информация о работе Контрольная работа по "Программированию"