00 на диске есть свободное пространство

FF на диске нет свободного пространства

Аналогичным образом программа использует в прерывании

DOS INT 21H следующие функции:

15Н - Для последовательной записи на диск;

10Н - Для закрытия файла;

OFH - Открытие файла;

14Н - Для последовательного чтения записей с диска;

21H - Для прямого чтения записи;

22Н - Для прямой записи;

11Н и 12Н - Поиск элементов оглавления;

13Н - Удаление файла;

17Н - Переименование файла;

0ЕН - Установка текущего дисковода

Для определения выводной записи необходимо прежде всего указать начальный адрес области передачи данных (DTA - DISK TRANSFER AREA). Затем с помощью функции 1АН необходимо сообщить DOS адрес DTA. Активным может быть только один DTA.

MOV АН, 1АН ; установка адреса

LEA DX, DTANAME ; DTA

INT 21H ; вызов DOS

Дисковые операции можно программировать непосредственно на уровне BIOS. Дисковая операция BIOS INT 13H рассматривает все записи, как имеющие размер сектора, а адресацию диска осуществляет в терминах действительных номеров дорожки и сектора. Для дисковых операций чтzения, записи и верификации необходима инициализация следующих регистров:

АН - тип операции: чтение, запись, верификация или форматирование;

AL - число секторов;

СН- номер дорожки;

CL - номер головного сектора;

DH - номер головки (стороны): 0 или 1 для дискеты ;

DL - номер дисковода: 0=А, 1=В и т. д.

ES: ВХ- адрес буфера ввода- вывода в области данных.

Для указания необходимой дисковой операции необходимо перед INT 13H загрузить в регистр АН соответствующий код.

АН=00: сброс системы контроллера дисковода

АН=01: определить состояние дисковода

АН=02: чтение секторов

АН=03: запись секторов

АН=04: верификация секторов

АН=05: форматирование дорожек

Содержание задания

1. Напишите программу, которая создает дисковый файл, содержащий записи из трех элементов: номера товара (пять символов), наименования товара (12 символов) и стоимости единицы товара (одно слово). Ввод этих значений должен осуществляться с клавиатуры.

2. Напишите программу, которая выводит на экран файл, созданный в вопросе

3. Напишите программу, выполняющую одно блочное чтение файла с приведенными ниже данными и выводящую каждую запись на экран:

Номер Цена Наименование

023 00315 Ассемблеры

024 00430 Компоновщики

027 00525 Компиляторы

049 00920 Компрессоры

114 11250 Редакторы

232 05635 Контроллеры

999 00000

4. Измените программу из вопроса 3 так, чтобы цены записывались на диск в двоичном формате.

5. Напишите команды для BIOS INT 13H, выполняющие чтение одного сектора в область памяти INDISK, с дисковода А, головки 0, дорожки 6 и сектора 3.

6. Напишите команды для BIOS INT 13H, выполняющие запись трех секторов из области памяти OUTDISK на дисковод В, головку 0, дорожку 8 и сектор 1.

Лабораторная работа №7

Изучение управления печатью

Цель работы: изучить возможность программ на языке Ассемблер для вывода информации на печатающее устройство

Общие сведения.

Вывод на принтер несколько проще, чем операции с экраном и диском. Для печати существует несколько операций, выполняющихся через DOS INT 2IH и INT 17H. Команды, посылаемые на принтер, включают коды "Прогон страницы", "Перевод строки" и "Возврат каретки".

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

Стандартные символы управления печатью включают следующие:

08 - возврат на шаг

09 - горизонтальная табуляция

0А - перевод строки

0B - вертикальная табуляция

0С - прогон страницы

0D - возврат каретки

Для печати в базовой версии DOS необходимо установить в регистре АН код функции 05, а в регистре DL - распечатываемый символ, а затем выполнить команду INT 2IH следующим образом

MOV АН, 05 ; запрос функции печати

MOV DL, char ; распечатываемый символ

INT 2IH ; вызов DOS

С помощью этих команд можно передавать на принтер управляющие символы. Однако, печать обычно предполагает вывод полной или частичной строки текста и пошаговую обработку области данных, отформатированной по строкам. Ниже показана программа печати полной строки. Сначала в регистр SI загружается начальный адрес области HEADG, а в регистр СХ - длина этой области. Цикл, начинающийся по метке Р20, выделяет очередной символ из области HEADG и посылает его на принтер. Так как первый символ области HEADG - "возврат каретки", а последние два - "перевод строки", то заголовок печатается в начале новой страницы и после него следует двойной интервал:

HEADG DB OCH, INDUSTRIAL BICycle Mfrs’, ODH, OAH, OАМ LEA SI, HEADG; установка адреса и

MOV CX, 27 ; длины заголовка

Р20:

MOV АН,05 ; запрос функции печати

MOV DL, [SI]  ; символ из заголовка

INT 21H  ; вызов DOS

INT SI ; следующий символ

LOOP P20

Пока принтер не включен, DOS выдает сообщения " out of paper". После включения питания программа начинает работать нормально. Для прекращения печати можно нажать клавиши CTRL/BREAK.

Прерывание BIOS INT 17H обеспечивает три различные операции, определенные содержимым регистра АН:

АН=0: Данная операция выполняет печать одного символа на три принтера по номерам 0,1 и 2 (стандартное значение - 0)

MOV АН, 00 ; запрос функции печати

MOV AL, CHAR ; символ, выводимый на печать

MOV DX, 00 ; выбор принтера о

INT 17H ; вызов BIOS

Если операция не может распечатать символ, то в регистре АН устанавливается значение 01.

АН=1: Инициализация порта печатающего устройства:

MOV АН, 01 ; запрос на инициализации порта

MOV DX, 00 ;выбор порта о

INT 17H ; вызов BIOS

Данная операция посылает на принтер символ "прогон страницы", поэтому ее можно использовать для установки положения "начало страницы". Большинство принтеров выполняют данную установку автоматически при включении.

АН=2: Чтение состояния порта принтера:

MOV АН, 02 ; функция чтения состояния порта

MOV DX, 00 ;выбор порта о

INT 17H ; вызов BIOS

TEST АН, 01101001В ; принтер готов?

JNZ errmsg  ; нет - выдать сообщение

В процессе работы принтер может выйти за страницу или быть нечаянно выключен. Поэтому в программах печати следует предусмотреть проверку состояния принтера перед каждой проверкой печати.

Содержание задания

Напишите программу для DOS, выполняющую: а) прогон страницы; б) Печать вашего имени; в) перевод строки и печать вашего адреса; г) перевод строки и печать названия вашего города; д) прогон страницы.

2. Закодируйте строку, в которой имеется следующая информация: возврат каретки, прогон страницы, включение узких букв (OF), заголовок (ваша фамилия) и выключение узких букв (12).

3. Измените программу из вопроса 1 для использования BIOS INT 17H. Обеспечьте проверку состояния принтера.

4. Измените программу из вопроса 1 так, чтобы пункты б), в), г), выполнялись по 5 раз.


Лабораторная работа №8.

Изучение связей между подпрограммами.

Цель работы. Раскрыть технологию программирования, включающую компоновку и выполнение программ.

Общие сведения.

Возможно выполнение программного модуля, состоящего из нескольких ассемблированных программ. В этом случае программу можно рассматривать как состоящую из основной программы и одной или более подпрограмм. Причины такой организации программ состоят в следующем:

- необходимо скомпоновать программы, написанные на разных языках, например, для объединения мощности языка высокого уровня и эффективности ассемблера;

- программа, написанная в виде одного модуля, может оказаться слишком большой для ассемблирования;

- отдельные части программы могут быть написаны на разными группами программистов, ассемблирующих свои модули раздельно;

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

Каждая программа ассемблируется и генерирует собственный универсальный объект (OBJ) модуль. Программа-компоновщик (LINK) затем компонует объектные модули в один объединенный выполняемый (ЕХЕ) модуль. Обычно выполнение начинается с основной программы, которая вызывает одну или более подпрограмм. Подпрограммы, в свою очередь, могут вызывать другие подпрограммы.

Для межсегментного вызова используется команда CALL. Данная операция сначала записывает в стек содержимое регистра CS и заносит в этот регистр адрес другого сегмента, затем записывает в стек значение регистра ТР и заносит новый относительный адрес в этот регистр.

Таким образом, в стеке запоминаются и адрес кодового сегмента, и смещение для последующего возврата из подпрограммы.

Например, межсегментный вызов CALL может состоять из следующего объектного кода:

9А 002 AF04

Шестнадцатеричное число 9А представляет собой код команды межсегментного вызова, которая записывает значения 0002 в виде 0200 в регистр IP, а значение AF04 в виде 04 AF - в регистр CS. Комбинация этих адресов указывает на первую выполняемую команду в вызываемой подпрограмме:

кодовый сегмент 04AF0

смещение в IP 0200

действительный адрес 04CF0

При выходе из вызванной процедуры межсегментная команда возврата REP восстанавливает оба адреса в регистрах CS и IP и таким образом передает управление наследующую после CALL команду.

Содержание задания

1. Программа MAINPRO должна вызвать подпрограмму SUBPRO. В программе MAINPRO определены переменные QTY как DB, VALUE как DW и PRICE как DW. Подпрограмма SUBPRO должна разделить VALUE на QTY и записать частное a PRICE. Постройте работающую программу и проверьте ее.

2.Измените программу так, чтобы программа MAINPRO передавала все три переменные, как параметры. Подпрограмма SUBPRO должна возвращать результат через параметр.

3.Составьте программу так, чтобы программа MAINPRO позволяла вводить количество (QTY) и общую стоимость (VALUE) с клавиатуры;

подпрограмма SUBCONV преобразовывала ASCII - числа в двоичное представление; подпрограмма SUBCALC вычисляла цену (PRICE);

подпрограмма SUBDISP преобразовала двойную цену, выводила результат на экран в коде ASCII.


Информация о работе «Лабораторные работы по системному ПО»
Раздел: Информатика, программирование
Количество знаков с пробелами: 28369
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
193894
73
12

аучного цикла является отсутствие возможности реальной постановки учебного, и лабораторного эксперимента. Хотя в настоящее время имеются разработки виртуальных лабораторных практикумов, однако окончательно решение проблемы требует пристального внимания специалистов различных профилей, в том числе и психолого-педагогического. 1.2 Роль технологии виртуальных приборов обучения в техническом вузе ...

Скачать
42177
10
1

... Министерство образования Российской Федерации Саратовский государственный технический университет Формульный компилятор методические указания к выполнению лабораторной работы по курсу «Теория вычислительных процессов и структур для студентов специальности ПВС Составил доцент кафедры ПВС Сайкин А.И. ...

Скачать
7739
2
0

... 17 8 STA 951H 811 32 9 LDA 950H 814 3A 10 MOV L,A 817 6F 11 LDA 951H 818 3A 12 MOY H,A 81B 67 13 SHCH 952H 81C 22 14 JMP 800H 81F C3 15 Лабораторная работа №3.   Тема: Регистры микропроцессора. Команды загрузки регистров. Команды пересылки. Цель: Изучить регистры микропроцессора, команды загрузки и команды пересылки. Ход работы   MOV рег1, рег2 – команда ...

Скачать
14933
2
0

... двойным щелчком в левой области окна. Справа появится содержимое корзины. Выделите нужный файл, а затем переместите файл в папку Temp.   Лабораторная работа № 5. Программа проводник и файловая система. Задание 14.3накомство с окном Проводника (Windows 2000 Explorer) • Запустите программу Проводник, выполнив команду Главного меню Программы-> Проводник. • Ознакомьтесь с элементами окна ...

0 комментариев


Наверх