АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Что нужно знать для защиты отчета

Читайте также:
  1. I. Отчисления в Государственный Фонд социальной защиты населения Минтруда и социальной защиты РБ (Фонд соц. защиты).
  2. II. Техника защиты.
  3. III. Порядок защиты дипломной работы
  4. III. ПОЯВЛЯЮЩИЙСЯ В НУЖНОМ МЕСТЕ АЛЛЕН ВУДКОРТ
  5. IV.1. Общие начала частной правозащиты и судебного порядка
  6. Public void тестОтчетаНесколькихПосещений()
  7. VII. По степени завершенности процесса воздействия на объекты защиты
  8. А. Средства защиты информации в информационных сетях
  9. Автоматическая блокировка защиты
  10. Алчность не может превратиться в не-алчность; через алчность нужно переступить. Вы не можете изменить ее.
  11. Анализ деловой активности (на основе данных бухгалтерского баланса и отчета о прибылях и убытках)
  12. Анализ отечественного рынка средств защиты информации

Для защиты отчета по лабораторной работе необходимо внимательно изучить тему «Команды обработки строковых последовательностей». Вопросы для защиты лабораторной работы индивидуальны и задаются в форме небольших примеров – задач. Кроме того, необходимо четко понимать правила настройки регистров, которые по умолчанию используются этими командами, а также работу всех других команд, перечисленных в «Общих сведениях». При защите лабораторной работы Вы должны уметь отвечать на любые вопросы о работе Вашей программы.

Рекомендуемая литература

1. Юров В. Assembler / В. Юров. – СПб.: Питер, 2001.- 624с.:ил.

2. Чекатков А.А. Использование TA при разработке программ / АА. Чекатков. – К.: Диалектика, 1995.

3. Сван Т. Освоение Turbo Assembler./ Т. Сван. – К.: Диалектика, 1996.

 

Лабораторная работа № 7

 

Тема: Обработка одномерных и двухмерных массивов в ассемблер-программах.

Цель работы: Получить навыки организации и обработки одно- и двухмерных массивов на ассемблере.

Общие сведения

Для реализации задач обработки одно и двухмерных массивов на языке ассемблер необходимо помнить, что в этом языке не существует таких типов данных как массив. Организация работы с памятью, в которой располагаются обрабатываемые данные, как с массивом одно или двух- мерным – задача программиста. При этом активно используется такой вид адресации, как косвенная адресация. Причем, если мы работаем с одномерным массивом, то в качестве индекса элемента массива может выступать один из индексных или базовых регистров. Если работаем с двухмерным массивом, то логично использовать базово-индексную адресацию. Причем, удобно какой-либо из базовых регистров использовать для индексации строки, а какой-либо индексный регистр – для индексации столбца. При этом, во время перехода от строки к строке для формирования индекса новой строки достаточно изменить значение базового регистра содержащего номер текущей строки на длину строки в байтах.

Варианты заданий

 

1. В сегменте данных продекларировать массив из семи однобайтных элементов. Программно заполнить элементы массива значениями из PSP (0-ой … 6-ой байты PSP). Определить значение суммы элементов массива, его минимальный и максимальный элемент.

 

2. В сегменте данных зарезервировать область памяти под двухмерный массив (5х5) однобайтовых элементов. Программно инициировать его значениями, вычисленными по формуле i х j, где i и j – номер строки и столбца в разделе данных. Определить максимальный элемент главной диагонали.

 

3. В сегменте данных описать массив из 5-ти однобайтовых элементов. В сегменте кода объявить шесть меток. Значения элементов массива инициировать значениями длин фрагментов программы между соседними метками. Определить самый короткий и самый длинный фрагменты программы между метками.

 

4. В сегменте данных организовать два массива каждый по семь элементов. Одновременно декларировать семь областей памяти, объявляя их как DB, DW, DD, DB, DW, DD, DB, причем в каждой области предусмотреть какое-либо количество данных (инициированных или нет). Каждый элемент первого массива заполнить значением смещения к последовательным декларированным областям памяти в сегменте данных. Каждый элемент второго массива заполнить длинами декларированных областей в байтах, используя для формирования второго массива значения первого. Определить самую минимальную по длине объявленную область памяти.

 

5. Декларировать в сегменте данных двухмерный массив (3х7), однобайтовые элементы которого программно инициировать значениями, вычисленными в соответствии с выражением i or j, где i и j номера строк и столбцов. Определить произведение элементов нечетных столбцов. Значения произведений записать в отдельный массив.

 

6. Объявить в сегменте данных массив из пяти слов. Элементы этого массива програмно заполнить значениями полей длиною в слово, прочитанных из PSP. Причем, читать требуется на подряд данные в два байта (слово) из PSP, а именно те поля, которые имеют длину – слово по структуре PSP (см. структуру PSP во второй лабораторной работе). Найти сумму значений этих полей и минимальное их значение.

 

7. Описать в сегменте данных одномерный массив длиною в 10 байт. Программно инициировать элементы массива значениями, вычисленными по формуле not(i or i+1), где i – индекс элемента массива. Выполнить сортировку элементов массива по возрастанию методом «пузырька».

 

8. Зарезервировать в сегменте данных одномерный массив длиною в 12 байт. Программно инициировать массив значениями, вычисленными по формуле (i хor i+1), где i – индекс элемента массива. Выполнить сортировку элементов массива по убыванию методом перебора.

 

9. Продекларировать в сегменте данных одномерный массив из 7 элементов длиною в слово. Программно инициировать элементы массива значениями по следующей схеме:

нулевой элемент = 5,

а последующие ai = ai-1*2i.

 

10. Выполнить сортировку элементов массива по убыванию методом «пузырька». Описать в сегменте данных одномерный массив из 5-ти слов, элементы которого программно инициировать следующими значениями:

нулевой = FFh,

а последующие ai = ai-1 / 2i.

Выполнить сортировку элементов массива по возрастанию методом перебора.

 

11. Описать в сегменте данных двухмерный массив (4х4) из элементов длиною в слово. Программно заполнить его значениями по следующей схеме - элемент a0,0 = ABCDh, каждый последующий элемент определяется так: к предыдущему прибавляется 1 и выполняется обмен значений младшего и старшего байтов. Выполнить сортировку элементов главной диагонали по убыванию методом перебора.

 

12. Описать в сегменте данных двухмерный массив (7х7) слов. Программно заполнить его значениями по следующей схеме - элемент a0,0 = 5277h, каждый последующий элемент определяется так: из предыдущего вычитается 1 и выполняется обмен значений младшего и старшего байтов. Выполнить сортировку элементов нечетных строк по возрастанию методом «пузырька».

 

13. Продекларировать в сегменте данных двухмерный массив для формирования таблицы истинности логической функции F

.

Выполнить программную инициализацию таблицы истинности её значениями.

 

14. Зарезервировать с сегменте данных область байтовых данных, длину которой необходимо будет уточнить в программе после первого ассемблирования, так как эта область должна иметь длину сегмента кода Вашей программы. Организовать программную инициализацию этой области значениями из сегмента кода программы. Учитывая то, что коды команды mov могут принимать одно из следующих значений: 88h, 89h, 8Ah, 8Bh, 8Ch, 8Eh, A0h, A2h, A3h, A8h, B0h…BFh, C6h

15. и C7h, определить количество использований данной команды в программе, то есть поиск кодов этой команды с подсчетом их количества.

 

16. Продекларировать в сегменте данных двухмерный массив для формирования таблицы истинности логической функции F

Выполнить программную инициализацию таблицы истинности её значениями.

 

17. В сегменте данных описать одномерный массив длиною 10 однобайтовых элементов. Программно инициировать эти элементы значениями чисел Фибоначчи, начиная от числа 3. Определить сумму четных элементов и произведение нечетных.

 

18. Зарезервировать в сегменте данных область под двухмерный массив (5х5), элементы которого имеют длину - слово. Программно заполнить его значениями, прочитанными из кодового сегмента начиная с нулевого смещения. Выполнить сортировку элементов вспомогательной диагонали по возрастанию методом “пузырька”.

 

19. Продекларировать в сегменте данных двухмерный массив для формирования таблицы истинности логической функции F

.

Выполнить программную инициализацию таблицы истинности её значениями.

 

19. В сегменте данных сформировать два матричных массива однобайтовых элементов: один массив - (3 х 4), а другой – (4 х 3). При декларации массивов инициировать их произвольными значениями. Выполнить программное умножение этих массивов (по правилу умножения матриц). Результаты умножения записать в третий, заранее зарезервированный в сегменте данных матричный массив.

 

20. Описать в сегменте данных двухмерный массив (7х7) байт. Программно заполнить его значениями, прочитанными из PSP, начиная с нулевого байта. Вычислить суммы элементов четных столбцов. Результаты записать в отдельный, зарезервированный в сегменте данных, массив.

 

21. Продекларировать в сегменте данных двухмерный массив для формирования таблицы истинности логической функции F

.

Выполнить программную инициализацию таблицы истинности её значениями.

 

22. Продекларировать в сегменте данных массив длиною в 10 слов. Программно инициировать элементы массива значениями из полей PSP, имеющих длину – 4-е байта (см. структуру PSP во второй лабораторной работе). Учесть тот факт, что эти поля PSP содержат четырех байтовые полные (сегмент и смещение) адреса программ обработчиков прерываний, а значит, полученный массив будет в словах попеременно содержать значение сегментного адреса и соответствующее ему значение смещения. Определить, на каких местах в Вашем массиве будут значения сегментных адресов, а на каких – значения смещений, учитывая принцип расположения данных в памяти –«младший по младшему, старший по старшему адресу». Выполнить следующую обработку полученного массива - определить минимальный сегментный адрес и максимальное из значений всех смещений.

 

23. Описать в сегменте данных матрицу (5х4) однобайтовых элементов инициированных произвольными значениями. Вычислить произведения элементов нечетных строк. Результаты записать в отдельный зарезервированный массив, при декларации которого продумать необходимую для сохранения произведений длину элементов массива (слова или двойные слова).

 

24. Описать в сегменте данных матричный массив (4х4) однобайтовых элементов. Программно инициировать его значениями, вычисленными по формуле (i + j), где i и j – индексы элементов матрицы. Вычислить произведение элементов вспомогательной диагонали матричного массива.

 

25. Описать в сегменте данных матричный массив (5х4) однобайтовых элементов инициированных произвольными значениями. Определить количество отрицательных, положительных и нулевых элементов полученного матричного массива.

 

26. Описать в сегменте данных матричный массив (5х5) однобайтовых элементов инициированных произвольными значениями. Выполнить программное транспонирование матрицы.

 

27. Продекларировать в сегменте данных двухмерный массив для формирования таблицы истинности логической функции F

.

Выполнить программную инициализацию таблицы истинности её значениями.

 

28. Сформировать в сегменте данных массив из 26 однобайтовых элементов, который инициировать значениями символов нижней и верхней частей клавиш верхнего ряда алфавитно-цифровой части клавиатуры. Выполнить сортировку полученного массива по возрастанию методом «пузырька».

 

29. Описать в сегменте данных массив длиною 49 байтовых элементов, инициированных произвольными значениями. Одновременно зарезервировать в сегменте данных область под матричный массив (7 х 7) однобайтовых элементов. Выполнить программное формирование матричного массива путем заполнения его по спирали значениями из одномерного массива.

 

30. Зарезервировать в сегменте данных массив из 256 байтовых элементов. Программно скопировать в него содержимое PSP Вашей программы. Определить количество элементов полученного массива = 0h, количество элементов = FFh, количество элементов <= 0Ah и количество элементов > 0Ah.

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.007 сек.)