Контрольная работа по "Программированию"

Автор: Пользователь скрыл имя, 10 Октября 2011 в 15:21, контрольная работа

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

Задание 1
При нажатии клавиши HOME (int 16h) включить индикатор NumLock и отключить индикаторы ScrollLock и CapsLock (контроллер). Если введен символ 1 или 3, вывести на дисплей его значение, увеличенное в два раза.

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

Контрольная Работа ПУ.doc

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

      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:

Информация о работе Контрольная работа по "Программированию"