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

Задание. Замечания для всех вариантов:

Читайте также:
  1. Window(x1, y1, x2, y2); Задание окна на экране.
  2. Б) Задание на проверку и коррекцию исходного уровня.
  3. В основной части решается практическое задание.
  4. Второй блок. Количество баллов за задание – 3.
  5. Геоэкологическое задание
  6. Домашнее задание
  7. Домашнее задание
  8. Домашнее задание
  9. Домашнее задание
  10. Домашнее задание
  11. Домашнее задание
  12. Домашнее задание

Замечания для всех вариантов:

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

- термин – «слово» в заданиях определяет естественное слово в текстовой строке (фразе), а не двухбайтовое значение. В тех случаях, когда речь идет о данных длиною в слово (2-а байта), это оговаривается в задании (внимательно читайте свои варианты).

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

 

1.В сегменте данных описать текстовую строку и символ для поиска. Вычислить количество вхождений символа в строку.

 

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

 

3. Объединить две, описанные в сегменте данных строки в третью самостоятельную строку, расположив элементы строк навстречу друг другу, то есть порядок элементов первой строки не изменяется, а вторая строка – перевернута.

 

4. Вычислить количество знаков препинания в строке, описанной в сегменте данных.

 

5. Заменить в строке строчные буквы латинского алфавита на прописные. Напомним, что в кодовой таблице ASCII коды символов латинского алфавита располагаются так, что коды строчных букв отстоят от своих заглавных на 20h. Пример: код символа «A» = 41h, а символа «a» = 61h.

 

6. Включить одну строку в состав другой, то есть выполнить, так называемую, вставку строки в строку.

 

7. Выполните замену в тексте, описанном в сегменте данных, одной подстроки на другую по длине б о льшую первой.

 

8. Выполните выборку из строки слов, начинающихся с какого-либо, определенного Вами символа. При выполнении выборки исходная строка должна сжиматься.

9. Вставьте в строку - "QWERTY", описанную в сегменте данных, символ подчеркивания через каждый символ исходной строки.

 

10. В исходной строке текста найдите все вхождения в эту строку заданного символа и заполните результирующую строку этими символами.

 

11. Перепишите в сегмент данных программы из префикса программного сегмента 20 байтов, начиная со смещения 18h от начала префикса. Определите количество байтов со значением 00h.

 

12. Сравните две строки. Если они совпадают, объедините их навстречу друг другу. Если строки отличаются, скопируйте в третью строку символы отличия. Исходные и результирующие строки должны быть записаны в сегменте данных.

 

13. Вставьте в строку1 заданное слово с заданной позиции, но так, чтобы слово читалось в обратной последовательности.

 

14. Объедините две строки в третью, размещая символы каждой из исходных строк в результирующей строке поочередно.

 

15. Перепишите две строки в третью, чередуя слова из первых двух строк.

 

16. Используя исходную строку - «младший по младшему адресу, старший - по старшему», описанную в сегменте данных, программно сформируйте вторую строку изменив её на «младший по старшему адресу, старший - по младшему».

 

17. Преобразуйте исходную строку, разделив элементы строки кодами символа звездочки.

 

18. Сравните две строки, удаляя из них символы отличия и переписывая эти символы в третью строку.

 

19. Скопируйте две строки в третью, причем обе строки копируйте в обратном направлении.

 

20. В исходной строке, где все символы написаны слитно (без пробелов), вставьте пробелы через каждые пять символов.

 

21. Выполните поиск подстроки в строке с удалением подстроки из строки.

 

22. Перепишите в строку в сегменте данных 25 байтов из кодового сегмента, начиная с нулевого смещения, а затем выполните в подготовленной таким образом строке поиск кода заданной команды. И, если команда найдена, определите смещение к ней. Код искомой команды задайте самостоятельно.

 

23. Перепишите в строку в сегменте данных 35 байтов из кодового сегмента, начиная от конца кодового сегмента. Причем, пересылку выполните от старших к младшим адресам. В подготовленной таким образом строке выполните поиск кода заданной команды. И, если команда найдена, определите смещение к ней. Код искомой команды задайте самостоятельно.

 

24. Выполните обработку строки, состоящей из десяти слов, переворачивая четные слова в строке.

 

25. Скопируйте строку, заменяя в ней строчные буквы на заглавные и наоборот. Напомним, что в кодовой таблице ASCII коды символов латинского алфавита располагаются так, что коды строчных букв отстоят от своих заглавных на 20h. Пример: код символа «A» = 41h, а символа «a» = 61h.

 

26. Скопируйте из PSP Вашей программы 12 байтов в сегмент данных. При этом в нечетных байтах обнулите старшие тетрады, а в четных – младшие. Эту обработку выполните с использованием приема маскирования при помощи двоичной логики.

 

27. Из PSP в сегмент данных Вашей программы перепишите адреса обработчиков прерываний int 20h, int 23h и int 24h, разделяя значения адресов в новой строке (в сегменте данных) символами «////»

28. В PSP Вашей программы программно отыщите адрес PSP Турбоотладчика, запустившего Вашу программу (родительский процесс). В найденном PSP Турбоотладчика, из области DTA (смещение 80h от начала PSP) в сегмент данных Вашей программы перепишите находящиеся там значения. Практически в этой области должно быть имя Вашей программы, которое при запуске td.exe передавалось отладчику в командной строке.

 

29. Перепишите в сегмент данных Вашей программы код Вашей же программы, не затирая исходных данных, а затем, выполнив необходимую настройку сегментных регистров и соответствующих им регистров смещения, передайте управление программному коду, расположенному на новом месте для завершения программы. При этом используйте дальний вызов или переход.

 

30. Перепишите в сегмент данных программы по 24 байта из PSP Вашей программы и из PSP Турбоотладчика (адрес PSP Турбоотладчика находится в PSP Вашей программы – смотрите 2-ую лабораторную работу). Выполните сравнение сформированных таким образом строк для поиска места первого их отличия.


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

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



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