Ассемблер для IBM PC
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
ает, содержится ли одна из них в другой и сколько раз.
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, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния. Результат логического умножения никуда не записывается.
Синтаксис:
NOT dst; (dst) < not (dst)
AND dst, src; (dst) < (dst) and (src)dst, src; (dst) < (dst) or (src)dst, src; (dst) < (dst) xor (src)dst, src; (dst) test (src)
В этих командах допустимы следующие комбинации операндов:
dstsrcr8i8, r8, m8m8i8, r8r16il6, rl6, ml6m16il6, rl6
В таблице 6.2. приведены значения ?/p>