- •Методические указания
- •«Моделирование программы гипотетической машины с помощью макросредств»
- •1.Введение.
- •2.Пример выполнения курсовой работы.
- •2.1.Задание.
- •2.2.Анализ задачи и разработка алгоритма.
- •2.3.Разработка программы для гм.
- •2.3.1. Определение данных.
- •2.3.2.Определие команд гм.
- •2.4.Моделирование программы гм на реальной эвм.
- •2.4.1.Выборка и запиь слов гм.
- •2.4.2. Макроопрделения для команд гм.
- •2.5.Технология подготовки программы к выполнению и ее отладка.
- •2.6. Результаты работы программы
- •3. Варианты курсовой работы
- •4.Приложения
- •2. Блоки повторения
- •2.1. Rept-блоки
- •Irpc-блоки
- •2.4 Макрооператоры
- •3. Макросы
- •113.1. Макроопределения
- •3.1. Макрокоманды
- •3. 3. Макроподстановки и макрорасширения
- •3. 5. Макросы и процедуры
- •3. 6. Определение макроса через макрос
- •3.7. Директива local
- •113.8. Директива ехiтм
- •3. 9. Переопределение и отмена макросов
- •4. Условное ассемблирование
- •4. 1. Директивы if и ife
- •4.2. Операторы отношения. Логические операторы
- •4.3. Директивы ifidn ,ifdif , ifb и ifnb
3. Варианты курсовой работы
В предлагаемых вариантах курсовой работы значения fw кратны 4 или 8. Это обстоятельство должно учитываться студентом при разработке стрктуры данных и алгоритмов команд с целью адаптации программы к конкретному значению fw и получения более эффективной ее реализации на реальной ЭВМ. Кратность fw особенно сильно может повлиять на алгоритмы чтения и записи слов ГМ в память!!!
Перечень тем курсовой работы.
1. fw=56 бит; Nr=3; Fk={ S1,S2; S,R1,R2 }; Nop=1,2,3. k1: команда сравнения; k2: команда пересылки; k3: команда условного перехода (ОР S1,S2,S3).
Задача. Отсортировать массив данных методом выбора.
2. fw=64 бит; Nr=4; Fk={ S1; S1,S2; }; Nop=1,2. k1: логическая команда AND; k2: логическая команда OR; k3: логическая команда NOT; k4: логическая команда XOR .
Задача. 1.Для k1,k2,k3,k4 провести тестирование
2. Пример побитовой обработки с массивом данных.
3. fw=32 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда создания нового узла; к2: команда удаления узла списка; к3: команда перехода к следующему узлу списка;
Задача. Создать линейный список целых чисел и удалить из него все отрицательные числа.
4. fw=40 бит; Nr=3; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда суммирования двух слов;
Задача. В матрице А(n,n) две ее диагонали образуют 4 сектора. Вычислить суммы злементов в каждом секторе без учета диагональных элементов матрицы.
5. fw=56 бит; Nr=2; Fk={R1,R2; S1,S2; R,S}; Nop=2.
k1: команда чтения элемента массива приращений по заданному номеру; k2: команда записи элемента массива приращений по заданному номеру; k3: команда сравнения 2-х слов.
Задача. Пусть значения некоторой табличной функции F закодированы в массиве А: a1=f(1); a(i)=f(i)-f(i-1), i=2,3,...,k. Отсортировать массив А по возрастанию.
6. fw=24 бит; Nr=2; Fk={S1,S2; R,S}; Nop=2,3. k1: команда обмена n элементов массива; k2; команда условного перехода вида: OP S1,S2,S3; k3: команда вычисления суммы n элементов.
Задача. Задан массив А из r элементов, причем каждый элемент массива А в свою очередь является массивом из n элементов. Отсортировать массив А по возрастанию сумм элементов подмассивов.
7. fw=40 бит; Nr=3; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда суммирования двух слов;
Задача. В матрице A[1..5,1..7] переставить столбцы по возрастанию сумм столбцов матрицы.
8. fw=56 бит; Nr=3; Fk={R1,R2; S1,S2; R,S}; Nop=2. k1: команда условного перехода вида: OP S1,S2,S3; k2: команда чтения-записи слова; k3: команда нахождения минимального из 2-х слов.
Задача. Выполнить слияние 2-х отсортированных списков в третий отсортированный список.
9. fw=40 бит; Nr=4; Fk={S1,S2; R,S}; Nop=2. k1: команда слияния 2-х символьных строк, использующая их длины; k2: команда сравнения 2-х символьных строк на >,=,<; k3: команда вычисления длины символьной строки, огрантченной пробелами или знаками препинания.
Задача. Из 2-х предложений, в которых слова расставлены по возрастанию их длин, составить третье с таким же свойством. Удалять знаки препинания, оставлять по одному пробелу. Сортировкой не пользоваться.
10. fw=24 бит; Nr=3; Fk={ S1,S2,s3; S,I }; Nop=2,3. k1: команда удаления символа из строки; k2: команда поиска подстроки; k3: команда записи символа в строку.
Задача. В символьной строке удалить все вхождения заданной подстроки. Все операции удаления осуществить в рамках исходной строки.
11. fw=48 бит; Nr=4; Fk={S1; S1,S2 }; Nop=1,2. k1: циклический сдвиг вправо на n разрядов; k2: циклический сдвиг влево на n разрядов; k3: арифметический сдвиг вправо на один разряд; k4: арифметический сдвиг влево на один разряд.
Задача. 1. Для k1,k2,k3,k4 всех форматов провести тестирование с фиксацией всех особых случаев.
2. Пример побитовой обработки с массивом данных.
12. fw=48 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда сравнения двух элементов матрицы;
Задача. В матрице A[1..8,1..6] в строках, содержащих нуль,расположить элементы по убыванию.
13. fw=40 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда сравнения двух элементов матрицы;
Задача. В матрице А(n,m) отсортировать столбец с максимальным элементом.
14. fw=24 бит; Nr=4; Fk={S1; S1,S2; S1,S2,S3}; Nop=1,2,3. k1: команда чтения слова; k2; команда записи слова; k3: команда преобразования в дополнительный код; k4: команда преобразования в форму с плавающей запятой.
Задача. 1. Для k1,k2,k3,k4 провести тестирование.
2. Пример обработки массива данных.
15. fw=48 бит; Nr=3; Fk={ S1,S2; R,S }; Nop=1,2,3. k1: команда нахождения из 2-х символьных строк большей по длине; k2: команда проверки 2-х символьных строк на равенство; k3: команда вычисления длины символьной строки, ограниченной пробелами или знаками препинания.
Задача. Найти самое длинное слово первого предложения, которое встречается в остальных предложениях символьного массива.
16. fw=24 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда сравнения двух элементов матрицы;
Задача. В матрице А(6,6) обменять строку и столбец, на пересечении которых находится максимальный элемент матрицы.
17. fw=40 бит; Nr=2; Fk={R1,R2; R,S}; Nop=2,3. k1: команда удаления элемента из двусвязного списка по значению элемента (=,>,<); k2; команда замыкания двусвязного списка в кольцо; k3: команда чтения слова памяти.
Задача. 1. Получить из списка несколько подсписков-колец с разными
порогами значений элементов.
18. fw=24 бит; Nr=3; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символьных строк на >,=,<; k2: команда обмена символьными строками; k3: команда подсчета количества символов в символьной строке, ограниченной пробелами или знаками препинания.
Задача. Расставить слова в символьном массиве в алфавитном порядке, убрав знаки препинания и разделив слова запятыми. После каждого слова поместить в скобках его длину. Сортировку производить в исходном массиве
19. fw=32 бит; Nr=3; Fk={S1,S2; R,S}; Nop=1,2. k1: команда извлечения элемента из стека; k2: команда выполнения арифметических операций +, -, *, / для любых целых аргументов; k3: команда чтения слова памяти.
Задача. Вычислить значение выражения, записанного в стеке польской записью.
20. fw=48 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда создания нового узла; к2: команда удаления узла списка; к3: команда перехода к следующему узлу списка;
Задача. Создать линейный список целых чисел и удалить из него все нечетные числа.
21. fw=40 бит; Nr=4; Fk={ S1; S1,S2; S1,S2,S3 }; Nop=1,2,3. k1: команда сравнения; k2: команда пересылки; k3: команда условного перехода (ОР S1,S2,S3).
Задача. Отсортировать массив данных методом вставок.
22. fw=24 бит; Nr=4; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда циклического сложения; k2; команда суммирования единичных бит в слове; k3: команда перехода по условию четности (нечетности) числа единичных бит в слове.
Задача. Подготовить файл к записи проверить его после чтения.
23. fw=40 бит; Nr=2; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда нахождения адреса последнего элемента списка; k2: команда поворота кольца на один элемент; k3: команда чтения слова памяти.
Задача. Объединить 2 списка в кольцо и повернуть его на заданное число элементов.
24. fw=24 бит; Nr=4; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символов; k2: команда вставки символа в слово; k3: команда удаления слова из символьной строки.
Задача. Удалить слова со сдвоенными буквами («анна», «класс» и т. п.) в символьном массиве. В оставшихся словах в середину каждого слова вставить букву «а».
25. fw=40 бит; Nr=3; Fk={ R,S }; Nop=2. k1: команда чтения элемента 2-мерного массива по значениям его индексов I,J; k2: команда записи элемента 2-мерного массива по значениям его индексов I,J; k3: команда сравнения 2-х слов.
Задача. В заданном 2-мерном массиве определить номер строки и номер
столбца MAX и MIN элементов.
26. fw=64 бит; Nr=3; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда нахождения минимального элемента в строке матрицы;
k2: команда нахождения максимального элемента в столбце матрицы;
k3: команда чтения слова памяти.
Задача. Найти седловое число в матрице и его индексы.
27. fw=8 бит; Nr=2; Fk={ R1,R2; R,S }; Nop=2. k1: команда включения элемента в список в соответствии с его упорядоченностью; k2: команда удаления элемента из списка по номеру; k3: команда чтения слова памяти.
Задача. Заполнить список, исключить несколько элементов и собрать “мусор”.
28. fw=24 бит; Nr=3; Fk={ S1,S2,s3; S,I }; Nop=2,3. k1: команда чтения символа по его индексу; k2: команда поиска подстроки; k3: команда записи символа в строку.
Задача. В символьной строке подсчитать количество вхождений заданной подстроки. Заменить первую найденную подстроку на подстроку большей длины.
29. fw=32 бит; Nr=1; Fk={R,S}; Nop=1,2. k1: команда добавления и извлечения элемента из стека; k2: команда добавления и извлечения элемента из очереди; k3: команда чтения слова памяти.
Задача. Заполнить очередь и стек и поменять их содержимое местами через дополнительный стек.
30. fw=24 бит; Nr=3; Fk={ S1,S2; R,S; S,I }; Nop=1,2. k1: команда добавления элемента в стек(1 операнд); k2: команда формирования польской записи выражения во внутренних скобках; k3: команда чтения слова памяти.
Задача. Записать выражение в стек в формате польской записи.
31. fw=24 бит; Nr=4; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символов; k2: команда вставки символа в слово; k3: команда удаления слова из символьной строки.
Задача. Удалить слова со сдвоенными буквами («анна», «класс» и т. п.) в символьном массиве. В оставшихся словах в середину каждого слова вставить букву «а».
32. fw=40 бит; Nr=3; Fk={S1; S1,S2; S1,S2,S3}; Nop=1,2,3. k1: сложение; k2: вычитание; k3: умножение; k4: деление; - для всех форматов с плавающей точкой;
Задача. 1. Для k1,k2,k3,k4 провести тестирование с фиксацией всех особых случаев для данных с плавающей точкой.
2. Пример формульных вычислений с массивом данных.
33. fw=56 бит; Nr=4; Fk={ S1; S1,S2; S1,S2,S3 }; Nop=1,2,3. k1: команда сравнения; k2: команда пересылки; k3: команда условного перехода (ОР S1,S2,S3).
Задача. Отсортировать массив данных методом “пузырька”.
34. fw=40 бит; Nr=3; Fk={ R,S }; Nop=2. k1: команда чтения элемента 2-мерного массива по значениям его индексов I,J; k2: команда записи элемента 2-мерного массива по значениям его индексов I,J; k3: команда сложения 2-х слов. K4: команда вычитания 2-х слов.
Задача. В матрице A[1..8,1..8] сумму элементов над главной диагональю поделить на сумму элементов под побочной диагональю.
35. fw=40 бит; Nr=2; Fk={ S1; S1,S2; S1,S2,S3 }; Nop=1,2,3. k1: команда сложения; k2: команда вычитания; k3: команда умножения; k4: команда деления (для всех форматов с фиксированной точкой).
Задача. 1. Для k1,k2,k3,k4 провести тестирование с фиксацией всех
особых случаев.
2. Пример формульных вычислений с массивом данных.
36. fw=24 бит; Nr=4; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символов; k2: команда вставки символа в слово; k3: команда удаления слова из символьной строки.
Задача. Удалить слова со сдвоенными буквами («анна», «класс» и т. п.) в символьном массиве. В оставшихся словах в середину каждого слова вставить букву «а».
37. fw=16 бит; Nr=3; Fk={ S1,S2; R,S }; Nop=1,2,3. k1: команда нахождения начала слова; k2: команда нахождения конца слова; команда вычисления длины слова; k3: команда удаления символа из слова.
Задача. В тексте найти слово максимальной длины и уменьшить его удалением гласных букв.
38. fw=28 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда чтения элемента матрицы А[I,j]; к2: команда записи элемента матрицы А[I,j]; к3: команда сравнения двух элементов матрицы;
Задача. В матрице А(6,6) обменять строку и столбец, на пересечении которых находится максимальный элемент матрицы.
39. fw=48 бит; Nr=2; Fk={R1,R2; R,S}; Nop=2,3. k1: команда удаления элемента из двусвязного списка по значению элемента (=,>,<); k2; команда замыкания двусвязного списка в кольцо; k3: команда чтения слова памяти.
Задача. Получить из списка несколько подсписков-колец с разными порогами значений элементов.
40. fw=64 бит; Nr=3; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символьных строк на >,=,<; k2: команда обмена символьными строками; k3: команда подсчета количества символов в символьной строке, ограниченной пробелами или знаками препинания.
Задача. Расставить слова в символьном массиве в алфавитном порядке, убрав знаки препинания и разделив слова запятыми. После каждого слова поместить в скобках его длину. Сортировку производить в исходном массиве
41. fw=48 бит; Nr=3; Fk={S1,S2; R,S}; Nop=1,2. k1: команда извлечения элемента из стека; k2: команда выполнения арифметических операций +, -, *, / для любых целых аргументов; k3: команда чтения слова памяти.
Задача. Вычислить значение выражения, записанного в стеке польской записью.
42. fw=56 бит; Nr=4; Fk={ S1,S2; S,R }; Nop=2. k1: команда создания нового узла; к2: команда удаления узла списка; к3: команда перехода к следующему узлу списка;
Задача. Создать линейный список целых чисел и удалить из него все нечетные числа.
43. fw=40 бит; Nr=4; Fk={ S1; S1,S2; S1,S2,S3 }; Nop=1,2,3. k1: команда сравнения; k2: команда пересылки; k3: команда условного перехода (ОР S1,S2,S3).
Задача. Вычеркнуть k строку и m столбец, содержащие минимальное значение матрицы A[1..7,1..5], записав в новую матрицу B[1..6,1..4].
44. fw=24 бит; Nr=4; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда циклического сложения; k2; команда суммирования единичных бит в слове; k3: команда перехода по условию четности (нечетности) числа единичных бит в слове.
Задача. Подготовить файл к записи проверить его после чтения.
45. fw=48 бит; Nr=2; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда нахождения адреса последнего элемента списка; k2: команда поворота кольца на один элемент; k3: команда чтения слова памяти.
Задача. Объединить 2 списка в кольцо и повернуть его на заданное число элементов.
46. fw=64 бит; Nr=4; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символов; k2: команда вставки символа в слово; k3: команда удаления слова из символьной строки.
Задача. Удалить слова со сдвоенными буквами («анна», «класс» и т. п.) в символьном массиве. В оставшихся словах в середину каждого слова вставить букву «а».
47. fw=64 бит; Nr=3; Fk={ R,S }; Nop=2. k1: команда чтения элемента 2-мерного массива по значениям его индексов I,J; k2: команда записи элемента 2-мерного массива по значениям его индексов I,J; k3: команда сравнения 2-х слов.
Задача. В созданном двумерном массиве A[1..m,1..n] заменить нулями элементы, стоящие в строках или столбцах, где имеются нули.
48. fw=48 бит; Nr=3; Fk={ R1,R2; R,S; S1,S2 }; Nop=2. k1: команда выборки элемента матрицы A[i,j];
k2: команда записи элемента матрицы A[i,j];
k3: команда чтения слова памяти.
Задача. Создать массив A[1..7,1..5]. Известно, что среди его элементов два и только два равны между собой. Напечатать их индексы.
49. fw=24 бит; Nr=2; Fk={ R1,R2; R,S }; Nop=2. k1: команда включения элемента в список в соответствии с его упорядоченностью; k2: команда удаления элемента из списка по номеру; k3: команда чтения слова памяти.
Задача. Заполнить список, исключить несколько элементов и собрать “мусор”.
50. fw=32 бит; Nr=3; Fk={ S1,S2,s3; S,I }; Nop=2,3. k1: команда чтения символа по его индексу; k2: команда поиска подстроки; k3: команда записи символа в строку.
Задача. В символьной строке подсчитать количество вхождений заданной подстроки. Заменить первую найденную подстроку на подстроку большей длины.
51. fw=64 бит; Nr=1; Fk={R,S}; Nop=1,2. k1: команда добавления и извлечения элемента из стека; k2: команда добавления и извлечения элемента из очереди; k3: команда чтения слова памяти.
Задача. Заполнить очередь и стек и поменять их содержимое местами через дополнительный стек.
52. fw=40 бит; Nr=3; Fk={ S1,S2; R,S; S,I }; Nop=1,2. k1: команда добавления элемента в стек(1 операнд); k2: команда формирования польской записи выражения во внутренних скобках; k3: команда чтения слова памяти.
Задача. Записать выражение в стек в формате польской записи.
53. fw=24 бит; Nr=3; Fk={ S1,S2; S,I }; Nop=2. k1: команда сравнения 2-х символьных строк на >,=,<; k2: команда обмена символьными строками; k3: команда подсчета количества символов в символьной строке, ограниченной пробелами или знаками препинания.
Задача. Расставить слова в символьном массиве в алфавитном порядке, убрав знаки препинания и разделив слова запятыми. После каждого слова поместить в скобках его длину. Сортировку производить в исходном массиве
54. fw=32 бит; Nr=3; Fk={ S1,S2; R,S }; Nop=1,2,3. k1: команда нахождения начала слова; k2: команда нахождения конца слова; команда вычисления длины слова; k3: команда удаления символа из слова.
Задача. В тексте найти слово максимальной длины и уменьшить его удалением гласных букв.
55. fw=48 бит; Nr=3; Fk={ R,S }; Nop=2. k1: команда чтения элемента 2-мерного массива по значениям его индексов I,J; k2: команда записи элемента 2-мерного массива по значениям его индексов I,J; k3: команда сравнения 2-х слов.
Задача. В заданном 2-мерном массиве определить номер строки и номер
столбца MAX и MIN элементов.