Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RGR_SPO_8 вариант.docx
Скачиваний:
10
Добавлен:
05.09.2020
Размер:
76.66 Кб
Скачать

ФГБОУ ВО Уфимский государственный авиационный технический университет

Кафедра АСУ

100

1

2

3

4

5

6

7

8

9

10

11

12

90

80

70

60

50

40

30

20

10

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К расчетно-графической работе

по дисциплине «Системное программное обеспечение»

НИЗКОУРОВНЕВОЕ СИСТЕМНОЕ

ПРОГРАММИРОВАНИЕ

ДЛЯ IBM PC

Группа ИВТ-314

Фамилия И.О.

Подпись

Дата

Оценка

Студент

Дроздов Н.Д.

Консультант

Лянцев О.Д.

Принял

Лянцев О.Д.

Уфа 2019 г.

Федеральное агентство по образования

Государственное образовательное учреждение высшего профессионального образования

«Уфимский государственный авиационный технический университет»

Кафедра Автоматизации систем управления

ЗАДАНИЕ

на РГР проект по дисциплине «Системное программное обеспечение»

Студент_Дроздов Н.Д. __ Группа__ИВТ-314 ___ Консультант__Лянцев О.Д.__

ФИО № акад. гр. ФИО

  1. Тема курсовой работы (наименование темы)

Разработка программы с помощью низкоуровневых средств на

языке ассемблера

  1. Основное содержание:

Вариант 8: создать метку тома дискеты, значение которой вводится с клавиатуры

  1. Требования к оформлению:

    1. Пояснительная записка должна быть оформлена в редакторе Microsoft ®Word в соответствии с требованиями ___________ЕСКД,ЕСПД_________________________

ЕСКД, ЕСПД, ГОСТ и др.

    1. В пояснительной записке должны содержаться следующие разделы:

Титульный лист, задание, введение, обоснование выбора

низкоуровневых функций, текст программы с

комментариями, примеры выполнения программы, заключение

    1. Графическая часть должна содержать:

Примеры выполнения программы

Дата выдачи «___»__________20__г. Дата окончания «__»_______20__г.

Руководитель____________________

подпись

Оглавлени

Введение 4

Выбор системных функций и разработка алгоритма 4

Цель: 5

Задание: 6

Блок – схема программы: 7

Текст программы с необходимыми комментариями 7

Скриншоты программы 11

Заключение 12

Литература 12

Введение 4

Выбор системных функций и разработка алгоритма 4

Цель: 5

Задание: 6

Блок – схема программы: 7

Текст программы с необходимыми комментариями 7

Скриншоты программы 11

Заключение 12

Литература 12

Введение

Распространение микрокомпьютеров послужило причиной пересмотра отношения к языку ассемблера по нескольким причинам. Ассемблерные программы могут быть очень эффективными. Из программистов, с равными навыками и способностями, работающий на языке ассемблер создаст программу более компактную и быстродействующую, чем такая же программа, написанная на языке высокого уровня. Это так практически для всех небольших или средних программ. К сожалению, по мере возрастания размеров, программы на языке ассемблера теряют часть своих преимуществ. Это происходит из-за необходимого в ассемблерной программе внимания к деталям. В небольших программах это позволяет оптимизировать работу программы с аппаратными средствами. В больших же программах огромное количество деталей может помешать вам, эффективно, работать над самой программой, даже если отдельные компоненты программы окажутся очень неплохими. Безусловно, программирование на языке ассемблера отвечает потребностям не каждой программы. Программы на языке ассемблера очень точны. Поскольку этот язык позволяет программисту непосредственно работать со всем аппаратным обеспечением, ассемблерная программа может делать то, что недоступно никакой другой программе. Несомненно, что в программировании устройства ввода-вывода, где требуется контроль над отдельными разрядами регистров устройства, программирование на языке ассемблера - единственный подходящий выбор.

И последняя причина для изучения программирования на языке ассемблера. Только через написание программ на этом уровне детализации можно понять, как работает машина на самом нижнем уровне. Если есть желание узнать о компьютере все, нужно быть знакомы с его языком ассемблера. Единственный способ добиться этого - писать программы на этом языке.

В данной расчетно-графической работе поставлена цель изучения возможностей операционной системы MS-DOS и освоить основы системного программирования с помощью ассемблера. Изучение функций DOS и BIOS, которые являются основными компонентами операционных систем персональных компьютеров, позволит более подробно рассмотреть те процессы, которые протекают в системе при выполнении программы; ознакомиться с механизмом программных прерываний, с помощью которых происходит обращение к этим функциям.

Выбор системных функций и разработка алгоритма

В данном разделе рассмотрены системные функции, на основе которых составляется и реализуется программа, выполняющая решение поставленной типовой задачи в соответствии с вариантом задания расчётно-графической работы.

Обращение к функциям DOS и BIOS осуществляется с помощью механизма программных прерываний. Настроив нужным образом регистры общего назначения и выполнив команду программного прерывания INT, мы активизируем требуемую функцию DOS или BIOS. Во многих случаях функция, отработав, возвращает в программу некоторую информацию, также передаваемую через регистры общего назначения.

В данной расчетно-графической работе используются такие прерывания, как INT 21H (прерывание DOS), INT 10H (прерывания BIOS).

Прерывание INT 21H служит главным входом большинства функций DOS. Программа, запрашивающая сервис DOS, должна подготовить всю необходимую информацию в регистрах и управляющих блоках, указать в регистре AH номер желаемой функции DOS и затем вызвать прерывание INT 21H. В приведенной программе данное прерывание используется для вывода на экран посредством функции 09H текстовой информации, содержащей заголовок, название дисциплины, группу и ФИО студента, а также вариант задания на РГР. Также используется функция 3ch, которая и служит главной функции программы (создание метки тома). Метка тома создается функцией создания файла.

INT 10H – прерывание, с помощью которого реализуется программное обращение к видеодрайверу BIOS. В рассматриваемом проекте используется следующие функции для данного прерывания. Во-первых, это функция 06H, служащая для прокрутки всего экрана вверх, которая в данной работе используется для очистки экрана от выведенной ранее текстовой информации. Во-вторых, это функция 02H, которая служит для установки позиции курсора.

Цель:

Целью данной расчетно-графической работы является закрепление, углубление и обобщение знаний, полученных во время обучения по дисциплине «Системное программное обеспечение», развитие навыков работы со специальной литературой и навыков программирования.

Задание:

Создать метку тома дискеты, значение которой вводится с клавиатуры

Формат программы: COM - программа;

Ввод с клавиатуры: средствами DOS;

Вывод на экран: в текстовом режиме;

Динамическое распределение памяти: определение размера программы;

Блок – схема программы:

Текст программы с необходимыми комментариями

text segment 'code'

assume CS:text, DS:text

org 100h

main:

; очистка экрана : начало

mov AX, 0600h ; AH=06 (прокрутка)

; AL=00 (весь экран)

mov BH, 07 ;Нормальный атрибут (черно/белый)

mov CX, 0000h ;Верхняя левая позиция

mov DX, 184fh ;Нижняя правая позиция

int 10h ;Передача управления в BIOS

; очистка экрана : конец

mov ah,09

lea dx,msg_lb1

int 21h

mov ah,09

lea dx,msg_lb2

int 21h

mov ah,09

lea dx,msg_lb3

int 21h

mov ah,09

lea dx,msg_lb4

int 21h

mov ah,09

lea dx,msg_lb5

int 21h

; перевод размера программы в символьный вид: начало

lea DI, msg_size[20] ;передача по адресу msg_size в 20 столбце

mov AX, word ptr _size ;получаем младшее слово _size

mov CX,0010 ;число шагов цикла – размеру диапазона = 10

СA: ;определяет размер программы

cmp AX,0010

jb CB

xor DX,DX

div CX

or DL,30H

mov [DI],DL

dec DI

jmp СA

CB:

or AL,30H

mov [DI],AL

; перевод размера программы в символьный вид : конец

; устанавливаем позицию курсора для приглашения ввести новую метку

mov AH, 02 ;Запрос на установку курсора

mov BH, 00 ;Экран 0

mov DH, 06 ;Строка 06

mov DL, 00 ;Столбец 00

int 10h ;Передача управления в BIOS

; выводим приглашение ввести новую метку

lea DX, msg_lb

; вывод сообщения

push AX

mov AH, 09h

int 21h

pop AX

; считываем новую метку тома дискеты с клавиатуры

lea DX, sLabel+1 ;Загрузка адреса сообщ.

mov BX, DX ;копируем смещение в рег. BX

mov AL, 12 ;заносим в AX

mov [BX], AL ;пересылать содержимое регистра AL по адресу, лежащему в регистре DX

mov AH, 0Ah

int 21h

; сохраняем количество реально введённых символов

xor CX, CX ;очищаем регистр CX

mov CL, byte ptr sLabel[2] ;извлекаем число введенных символов в CL

add CL, 3 ; добавляем 3 (для C:\)

mov DI, CX ;копируем CX в DI

; дописывам префикс к метке тома, указав диск A:

mov [sLabel+0], byte ptr 'C'

mov [sLabel+1], byte ptr ':'

mov [sLabel+2], byte '\'

mov [sLabel+DI], 00 ;завершаем строку метки символом 0

; устанавливаем позицию курсора для вывода сообщения о результате

mov AH, 02 ;Запрос на установку курсора

mov BH, 00 ;Экран 0

mov DH, 08 ;Строка 08

mov DL, 00 ;Столбец 00

int 10h ;Передача управления в BIOS

; метка тома создаётся функцией создания файла

mov AH, 3ch ;АН = 3Ch (номер функции DOS)

mov CX, 08 ;атрибут метки тома

lea DX, [sLabel] ;адрес имени метки

int 21h ;вызываем функцию DOS создния файла

jc L_ERR

; выводим сообщение об успешной смене метки тома

lea DX, msg_ok

; вывод сообщения

push AX

mov AH, 09h

int 21h

pop AX

L_EXIT:

; устанавливаем позицию курсора для вывода размера программы

mov AH, 02

mov BH, 00

mov DH, 10

mov DL, 00

int 10h

; выводим размер программы

mov ah,09

lea DX, msg_size

int 21h

; функция ожидания нажатия клавиши

mov AH, 08h

int 21h

; выход из программы в DOS

mov AX, 4C00h

int 21h

L_ERR: ; обработка ошибочной ситуации

mov ah,09

lea DX, msg_err

int 21h

jmp L_EXIT

; Поля данных

msg_size db "Razmer programmy: $"

msg_lb db "Vvedite novuyu metku: $"

msg_lb1 db "Raschetno-graficheskaya rabota",0ah,0dh,'$'

msg_lb2 db "Po discipline Sistemnoe programmnoe obespechenie",0ah,0dh,'$'

msg_lb3 db "Vipolnil: Student gruppi IVT-314",0ah,0dh,'$'

msg_lb4 db "Drozdov N.D. ",0ah,0dh,'$'

msg_lb5 db "Variant 8:",0ah,0dh,'$'

msg_ok db "Metka diska C izmenena.","$"

msg_err db "Oshibka! Metka ne smenena!","$"

sLabel db 16 dup (00h)

; вычисляем размер программы

_size = $-main

text ends

end main

Соседние файлы в предмете Системное программное обеспечение