1. Напишите программу вывода на экран набора символов ASCII - кода.

2. Напишите программу, запрашивающую ввод имени, а затем отображающую в средине экрана введенное имя.


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

Изучение команд обработки строк

Цель работы: Объяснить назначение специальных цепочечных команд, используемых для обработки специальных символьных данных.

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

Для обработки строковых данных ассемблер имеет пять команд обработки строк:

MOVS - переслать один байт или одно слово из одной области памяти в другую;

LODS - загрузить из памяти один байт в регистр AL или одно слово в регистр АХ;

STOS - записать содержимое регистра AL или АХ в память;

CMPS - сравнить содержимое двух областей памяти размером в один байт или в одно слово;

SCAS - сравнить содержимое регистра AL или АХ с содержимым памяти.

Префикс REP позволяет этим командам обрабатывать строки любой длины. Префикс кодируется непосредственно перед цепочечной командой, например REP MOVS В. Для использования префикса REP необходимо установить начальное значение в регистре СХ. При выполнении цепочечной команды с префиксом REP происходит уменьшение на одно значение в регистре СХ до 0. Таким образом, можно обрабатывать строки любой длины. В следующем примере выполняется пересылка 20 байт из STRING1 в STRING2. Предположим, что оба регистра DS и ES инициализированы адресом сегмента данных:

STRING1 DB 20DUP('*')

STRING2 DB 20DUP (")

……

CLD ; сброс файла DF

MOV СХ, 20 ; счетчик на 20 байт

LEA DI, STRING2 ; адрес "куда"

LEA SI, STRING1 ; адрес "откуда"

REP MOVSB ; переслать данные

Для команды LODS адрес памяти определяется регистрами DS:SI. В зависимости от значения флага DF происходит увеличение или уменьшение значения в регистре SI. Поскольку одна команда STOS также увеличивает или уменьшает адрес в регистре DI на 1 для байта или на два для слова. Практическая польза команды STOS с префиксом REP- инициализация области данных конкретным значением. Длина области (в байтах или словах ) загружается в регистр СХ. Команда CMPS сравнивает содержимое одной области памяти ( адресуемой регистрами DS : SI ) с содержимым другой области ( адресуемой регистрами ES : DI ). В зависимости от флага DF команда CMPS также увеличивает или уменьшает адреса в регистрах SI и DI на 1 для байта или на два для слова. При использовании префикса REP в регистре СХ должно находится значение длины сравниваемых полей. Команда CMPS может сравнивать любое число байтов или слов.

Рассмотрим процесс сравнения двух строк содержащих их имена Jean и JOAN. Сравнение побайтово слева направо приводит к следующему

J : J равно

Е : 0 не равно ( Е<0 )

А : А равно

N : N равно

Сравнение всех четырех байтов заканчивается сравнением N:N - равно/нуль. Так как имена " не равны ", операция должна прекратиться, как только будет обнаружено условие " не равно". Для этих целей команда REP имеет модификацию. REPE, которая повторяет сравнение до тех пор, пока сравниваемые элементы равны или регистр СХ не равен нулю. Кодируется повторяющееся однобайтное сравнение следующим образом :

REPE CMPSB.

Команда SCAS отличается от команды CMPS тем, что сканирует строку на определенное значение байта или слова. Команда SCAS сравнивает содержимое области памяти (адресуемой регистрами ES:DI ) с содержимым регистра AL или АХ. В зависимости от значения флага DF команда SCAS также увеличивает или уменьшает адрес в регистре DI на 1 для байта или на 2 для слова. При использовании префикса REP и значения длины в регистре СХ команды SCAS может сканировать строки другой длины. Команда SCAS особенно полезна в текстовых редакторах, где программа должна сканировать строки, выполняя поиск знаков пунктуации. Так как команда SCAS В должна продолжать сканирование до тех пор, пока результат сканирования "не равно" или регистр СХ не равен нулю, то используется префикс REPNE:

REPNE SCAS В.

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

1.Замените в строке STRING символ & на символ пробела

STRLEN EQIU 15: длина поля STRING

STRING DB ‘THE TIVE & IS NOW’

2. Имеются следующие определения:

DATASG SEGMENT PARA

CONAME DB 'SPASE EXPLORES INS'

PRLINE DB20DUP(")

Используя команды обработки строк, выполнить:

а) пересылку данных из CONAME в PRLINE слева направо;

б) пересылку данных из CONAME в PRLINE справа налево;

в) загрузку третьего и четвертого байтов области CONAME в регистр АХ;

г) сохранение содержимого регистра АХ в области по адресу PRLINE +5;

д) сравнение данных в области CONAME и PRLINE;

е) сканирование области CONAME и поиск в ней символа " пробел ".

Если символ будет найден, то переслать его в регистр ВН.


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

Изучение обработки двоичных данных, данных в форматах ASCII и BCD, таблиц.

Цель работы: Дать сведения об операциях сложения, вычитания, умножения и деления двоичных чисел, рассмотреть ASCII и BCD - форматы данных и дать сведения между этими форматами и двоичным форматом. Раскрыть требования для определения таблиц, организации поиска в таблице в таблицах и сортировки элементов таблицы.

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

Несмотря на то, что мы привыкли к десятичной арифметике, компьютер работает только с двоичной арифметикой. Команды ADD и SUB выполняют сложение и вычитание байтов или слов, содержащих двоичные данные. Вычитание осуществляется в компьютере по методу сложения с двоичным дополнением:

для второго операнда устанавливаются обратные значения битов и прибавляется 1, а затем происходит сложение с первым операндом.

Операция умножения для без знаковых данных выполняется командой MUL, a знаковых - IMUL. Существуют две основные операции умножения, умножение байта на байт. Множимое находится в регистре AL, а множитель в байте памяти или в однобайтовом регистре. После умножения произведение находится в регистре АХ.

Умножение слова на слово. Множимое находится в регистре АХ, а множитель - в слове памяти или в регистре. После умножения произведение образуется в двойном слове, левая часть произведения - в регистре DX, правая часть - в регистре АХ. В единственном операнде команд MUL и INMUL указывается множитель.

Операция деления для без знаковых данных выполняется командой DIV, а знаковых - INDIV. Существуют две основные операции деления:

Деление слова на байт. Делимое находится в регистре АХ, а делитель в байте памяти или однобайтном регистре. Для деления остаток получается в регистре АН, а частное - в AL.

Деление двойного слова на слово. Делимое находится в регистровой паре DX:AX, а делитель - в слове памяти или в регистре. После деления остаток получается в регистре DX, а частное в регистре - АХ.

Данные, вводимые с клавиатуры, имеют ASCII - формат, например, буквы SAM имеют в памяти шестнадцатеричное представление 53414DH. С помощью следующих ассемблерных команд можно выполнять арифметические операции непосредственно над числами в ASSCII - формате:

ААА - коррекция для сложения ASCII кода;

AAD - коррекция для деления ASCII кода;

ААМ - коррекция для умножения ASCII кода;

AAS - коррекция для вычитания ASCII кода.

Эти команды кодируются без операндов и выполняют автоматическую коррекцию в регистре АХ. Коррекция необходима, так как ASCII – код представляет так называемый распакованный десятичный формат, в то время как компьютер выполняет арифметические операции в двоичном формате.

Например, сложение и коррекция кодируются следующими командами:

ADD AL, BL ; сложить числа в регистрах AL и-BL

ААА ; коррекция для сложения ASCII- кодов.

Если сжать число в ASCII - формате, сохраняя только правые цифры каждого байта, то получим BCD - формат (двоично - десятичный формат). Можно выполнять сложение и вычитание в BCD - формате. Для этого служат две корректирующие команды:

DAA - десятичная коррекция для сложения;

DAS - десятичная коррекция для вычитания.

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

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:


Информация о работе «Лабораторные работы по системному ПО»
Раздел: Информатика, программирование
Количество знаков с пробелами: 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 комментариев


Наверх