Методические указания к лабораторным работам по курсу "Информатика", страница 3

a EQU <WORD PTR [bp+6]>

...

Поэтому в  тексте программы в качестве операндов можно ис­пользоватьимена локальных переменных и  передаваемых  парамет­ров.  По команде RET автоматически генерируются команды восста­новления регистров SI,  DI,  ВР,  SP и затем только выполняется возврат в вызывающую программу.

В ассемблерной  Процедуре  можно свободно использовать ре­гистры AX, BX, CX, DX. Остальные регистры должны быть сохранены и затеи восстановлены.

3. Методические указания

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

При написании процедуры обратите внимание на выбор методов адресации и  правильное использование  команд  условной передачи управления. Для организации циклов  рекомендуется  использовать команду LOOP.

Для возможности совместной пошаговой отладки оба программ­ных модуля должны быть включены в один файл проекта -  это можно сделать с помощью последовательности команд:

Make - Set program list - Add

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

Options - Make - Compiler flags - Memory model - Small

Options - Make - Linker flags - Stack Size - 4096

4. Порядок выполнения работы

1. Написать  головную  программу  на Си для вызова функции обработки строк, содержащую:

- прототип ассемблерной функции

- ввод исходных данных с подсказками

- вызов ассемблерной функции

- вывод результата работы функции

2. Написать  ассемблерную  функцию,  выполняющую обработку строк в соответствии с вариантами, приведенными ниже.

3. Выполнить компиляцию и компоновку программы и произвес­ти ее пошаговую отладку.

Задания к лабораторной работе. Исходные данные:

Ассемблерная функция имеет прототип                                                         int func(char *strl, char *str2, int n);

Здесь strl и str2 - две строки символов произвольной  дли­ны,  содержащие алфавитно-цифровые символы. Значение, возвращаемое функцией в параметр n, зависят от варианта задания.

Вариант 1.

1. Определить длины строк.

2. В конец первой строки дописать вторую строку.

3. В результирующей строке пять символов, начиная с символа n, заменить на пробелы.

4. Вернуть в вызывающую программу сумму длин строк

Вариант 2.

1. Определить длины строк

2. Переставить элементы первой строки в обратном порядке.

3. Во второй строке первые n символов Заменить на пробелы.

4. Вернуть в вызывающую программу разность длин строк

Вариант 3.

1. Определить длины строк

2. В  конец  первой  строки  дописать первые n символов из второй строки

3. Поменять местами второй и четвертый байты второй строки

4. Вернуть в вызывающую программу длину второй строки.

Вариант 4.

1. Определить длины строк

2. Поменять местами соответствующие элементы первой и вто­рой строк, до n-го включительно

3. Поменять местами второй и третий элементы второй строки

4. Вернуть в вызывающую программу длину первой строки

Вариант 5.

1. Определить длины строк

2. Первые n символов первой строки заменить на пробелы

3. Во второй строке поменять местами  первую  и  четвертую пары символов

4. Вернуть в вызывающую программу разность длин строк

Вариант 6.

1. Определить длины строк

2. Каждый  n-й  элемент  первой  строки заменить на первый элемент второй строки

3. Во  второй  строке  поменять местами первый и последний элементы.

4. Вернуть  в  вызывающую  программу первый элемент второй строки

5. Контрольные вопросы

1. Сравнить режимы адресации:  прямой с индексированием  и по базе

2. Команды условной передачи управления

3. Команды вызова подпрограммы и возврата

4. Соглашения о связях "Си-Ассемблер"

Лабораторная работа N 3

ПРЕРЫВАНИЯ. ИНТЕРФЕЙС С БАЗОВОЙ СИСТЕМОЙ ВВОДА - ВЫВОДА

1. Цель работы

Ознакомиться с основными функциями базовой системы ввода-вывода (BIOS).

2. Краткие теоретические сведения

Базовая система ввода - вывода включает в себя набор подпрограмм низкого уровня, предназначенных в основном для работы с внешними устройствами ЭВМ.  Интерфейс с BIOS организован  через несколько векторов прерывания.  В лабораторной работе использу­ются подпрограммы работы с дисплеем (вектор 10h).