_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Рефераты > Лабораторные работы по системному ПО

Лабораторные работы по системному ПО

Страница: 2/3

MONTAB DB 'JAN', 'FEB', 'MAR', ..., 'DEC'.

Команда XLAT транслирует содержимое одного байта в другое предопределенное значение. С помощью команды XLAT можно проверить корректность содержимого элементов данных. Команда XLAT предполагает адрес таблицы в регистре ВХ, а транслируемый байт (например, поля ASCHO) - в регистре AL. Следующие команды выполняют подготовку и трансляцию байта:

LEA ВХ, XLTBL

MOV AL, ASCHO

XLAT.

Команда XLAT использует значение в регистре AL в качестве относительного адреса в таблице, т.е. складывает адрес в ВХ и смещение в AL.

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

1.      Имеются следующие данные:

DATAX DW 0148H

DW 2316H

DATAY DW 0237H

DW 4052H

Закодируйте команды для сложения:

а) слово DATAX со словом DATAY;

б) двойного слова, начинающегося по адресу DATAX , на слово DATAY.

2. Поле UNPAK содержит 01040705 в распакованном десятичном формате. Напишите цикл, который преобразует это содержимое в ASCII - формат, т.е. 31343735.

3. Поле ASCA содержит значение 313733 в ASCII - формате, а другое поле ASCB содержит 35. Напишите программу, перемножающую эти числа в ASCII - формате и записывающую произведение в поле ASCPRO.

4. Определите 3 отдельные связанные таблицы, содержащие следующие данные:

а) числовые элементы - 06,10,14,21,24;

б) элементы наименований - видеокассеты, приемники, модемы, клавиатура, дискеты;

в) цены - 93.95, 82.25, 90.67, 85.80, 13.85.

Составьте программу, позволяющую вводить числовой элемент (ITEMIN) и количество (QTYIN) с клавиатуры. Разработайте программу табличного поиска элемента, равного ITEMIN. Выделите из таблиц наименование и цену. Рассчитайте стоимость (количество х цена) и выведите на экран наименование и стоимость.

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

Изучение свойств дисковой памяти

Цель работы: изучить основные требования к программированию функций DOS для обработки дисковых файлов; функций BIOS для записи и чтения дисковых файлов.

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

Обработка дисковых файлов в базовой DOS включает определение блока управления файлом (FCB - FILE CONTROL BLOCK), который описывает файл и его записи. Передача адреса блока FCB в DOS обязательна для всех дисковых операций ввода - вывода. Для выполнения операций ввода - вывода на диске в DOS необходимо определить блок FCB в области данных, который используется главным образом для обработки файлов в текущем каталоге. Блок FCB содержит описание файла и его записей в приведенном ниже формате. Пользователь должен инициализировать байты 0... 15 и 32...36, байты 16...31 устанавливаются DOS:

Байты                 назначение

0             Указывает дисковод: Код 01 - для дисковода А;

02- для В и т.д.

1...8        Имя файла

9...11     Тип файла для дополнительной идентификации

12...13   Номер текущего блока

14...15   Логический размер записи

16...19   Размер файла

20...21   Дата

22...31   Зарезервировано для DOS

32   Текущий номер записи в текущем блоке

33...36 Относительный номер записи

Для ссылки на каждый дисковый файл программа должна содержать правильно составленный блок управления файлом. Операции ввода - вывода на диск требуют установки адреса блока FCB в регистре DX. Доступ к полям блока FCB осуществляется по этому адресу с помощью регистровой пары DS:DX. Для создания нового файла программа использует функцию 16Н в прерывании DOS INT 21H следующим образом:

MOV АН, 16Н            ; создание

LEA DX, FCBNAME ; дискового файла

INT 21H                      ; вызов DOS

Система DOS осуществляет поиск по имени и типу файла, взятых из соответствующих полей FCB в оглавлении. Если элемент оглавления, содержащий необходимое имя (и тип) будет найден, то DOS очищает найденный элемент для нового использования, если такой элемент не будет найден, то DOS ищет свободный элемент. Затем операция устанавливает размер файла в 0 и открывает файл. На этапе открытия происходит проверка доступного дискового пространства, результат проверки устанавливается в регистре AL:

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. Постройте работающую программу и проверьте ее.