Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
468028.rtf
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
701.39 Кб
Скачать

Практические задания.

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

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

2. Разработать подпрограмму, которая подсчитывает, сколько раз заданный символ встречается в строке. Разработать программу, которая вводит с клавиатуры строку, вводит число N и выдает список символов, которые встречаются в строке не менее чем N раз.

. Разработать две подпрограммы, одна из которых соединяет две строки в одну, а другая обрезает строку до заданной длины (или дополняет пробелами, если длина строки меньше заданной).

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

. Разработать две подпрограммы, одна из которых сравнивает две строки по лексикографическому порядку, а другая обменивает значения двух строк. Разработать программу, которая вводит с клавиатуры несколько строк (конец ввода - пустая строка) и сортирует их в лексикографическом порядке.

. Разработать подпрограмму, которая разбивает заданную строку на две части: первое слово строки (до первого пробела) и остаток строки (пробелы после первого слова отбрасываются). Разработать программу, которая вводит с клавиатуры строку и выводит каждое слово с новой строки.

. Разработать подпрограмму, которая переставляет символы заданной строки в обратном порядке. Разработать программу, которая вводит с клавиатуры строку и переставляет в обратном порядке символы в каждом слове (слова разделяются пробелами).

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

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

. Разработать две подпрограммы, одна из которых преобразует любую заданную букву в заглавную (в том числе для русских букв), а другая - преобразует букву в строчную.

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

12. Дано натуральное число п. Вывести на экран все простые числа из отрезка [1, п].

13. Вычислить b=53 +(а+1)-1. Для вычисления хn использовать процедуру возведения в степень через умножение.

. Описать процедуру sum (x, y, z), которая присваивает вектору z сумму векторов х и у. Использовать ее для вычисления d=a+b+c.

. Описать процедуру mах (х, у), которая присваивает х большее из целых чисел х и у, а у - меньшее.

. *Даны три натуральных числа. Определить их наибольший общий делитель.

3. Битовые операции

Цель: Рассмотреть приемы использования битовых операций при программировании на языке ассемблер.

Задачи:

 Изучить синтаксис и приемы использование логические команды: отрицания - NOT, конъюнкции - AND, дизъюнкции - OR, исключающая ИЛИ - XOR и проверки - TEST.

 Изучить синтаксис и использование команд:

o логических сдвигов влево и вправо - SHL и SHR;

o арифметических сдвигов влево и вправо - SAL и SAR;

o циклических сдвигов влево и вправо - ROL и ROR;

o циклических сдвигов влево и вправо через перенос - RCL и RCR;

 Научиться производить вычисления логических выражений.

Логические команды.

Наряду со средствами арифметических вычислений, система команд микропроцессора имеет также средства логического преобразования данных. Под логическими понимаются такие преобразования данных, в основе которых лежат правила формальной логики: отрицание (НЕ), конъюнкцию (И) и дизъюнкцию (ИЛИ).

Логическим командам присущ ряд общих черт:

1. Они реализуют поразрядные операции: i-й разряд результата зависит только от i-х разрядов операндов. При этом одна и та же операция выполняется сразу над всеми разрядами операндов одновременно, параллельно.

2. Формальная логика работает на уровне утверждений истинно и ложно. Во всех логических командах бит 1 трактуется как «истина», а бит 0 - как «ложь». Именно при такой трактовке эти команды и реализуют логические операции отрицания, конъюнкции и дизъюнкции.

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

. Операндами логических команд должны быть либо байты, либо слова, но не то и другое одновременно.

Логические команды:

NOT - меняет значение каждого бита операнда на противоположное. Результат записывается на место операнда;

AND - производит поразрядное логическое умножение двух операндов и помещает результат в первый операнд;

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

XOR - производит поразрядное логическую операцию исключающего ИЛИ над двумя операндами и помещает результат в первый операнд;

TEST - аналог команды AND, выполняет поразрядно логическую операцию AND над битами операндов. Состояние операндов остается прежним, изменяются только флаги нуля ZF, знака SF, и четности PF, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния. Результат логического умножения никуда не записывается.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]