Информатика: Методические указания к лабораторным работам. Часть 2. Ассемблер, страница 3

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

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. Краткие теоретические сведения