Ассемблер для 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>