Перейти к основному содержанию
EDU-MMCS
  • Русский ‎(ru)‎
    Русский ‎(ru)‎ English ‎(en)‎
Вы используете гостевой доступ (Вход)

Архитектура компьютера и операционные системы

  1. В начало
  2. Курсы
  3. Осенний семестр
  4. Прикладная математика и информатика
  5. AM CA&OS
  6. Материалы лабораторных работ
  7. Лаб. Занятие 4. Обязательные задания

Лаб. Занятие 4. Обязательные задания

Требуемые условия завершения
Открыто с: понедельник, 23 сентября 2024, 08:00
Срок сдачи: пятница, 27 сентября 2024, 17:25

Лаб. Занятие 4.  Обязательная задача [3 балла]

Следует разместить в Moodle решение одной из перечисленных ниже задач (по выбору преподавателя).

Во всех заданиях следует в основной программе вызвать написанную функцию (или процедуру),  полученный результат (результаты) вывести на консоль и завершить основную программу соответствующим системным вызовом (аналогично тому, как было описано в Лаб3). Если не указано иначе, то все функции и процедуры следует писать, используя конвенции вызова  cdecl.

  1. [ 41.s] Создайте функцию   MIN(x, y) для определения наименьшего из двух аргументов, которая использует конвенции вызова pascal. Указание: по условиям конвенции pascal возвращаемое значение  передаётся через изменяемый параметр Result. Параметр Result является первым  неявным аргументом функции, т. е. аргументы следует передавать через стек, как если бы  функция имела вид   MIN(Result, x, y). Обратите внимание, что для выполнения конвенции pascal,  вам понадобится использовать форму инструкции ret с целочисленным операндом, указывающим количество снимаемых со стека байт для очистки стека от аргументов. В случае передачи трех параметров это будет команда

    RET      6             ! ~ SP+6 

  2. [42.s] Создайте функцию DIVIDES_2_TO_N, которая в качестве аргументов принимает два целых числа, X и N и возвращает 1, если X делится на 2N и 0 в противном случае. Указание: в цикле из максимум N шагов следует делать сдвиг вправо на одну позицию и если взведён флаг переноса (carry), то завершать цикл вместе со всей функцией, возвращая результат 0; если цикл пройдёт все N шагов и этот флаг ни разу не взведётся, то результат равен 1. В основной программе организуйте вызов написанной функции для массива из 5 значений, описанного в секции инициализированных данных {20, 64, 32, 11, 14} и  числа 3 вместо N. 
  3. [43.s] Создайте функцию COUNT_5_ENDED, которая подсчитывает число элементов заданного массива, оканчивающихся на 5 (последнюю цифру числа можно найти с помощью взятия остатка от деления на 10). В качестве параметров функции передаётся адрес начала массива и его длина.  В основной программе вызвать функцию для массива {5, 21, 15, 20, 35, 5, 10} и распечатать на консоль результат.

  4. [44.s] Создайте функцию MUL_5_ENDED, которая подсчитывает произведение элементов заданного массива, оканчивающихся на 5 (последнюю цифру числа можно найти с помощью взятия остатка от деления на 10). В качестве параметров функции передаётся адрес начала массива и его длина.  В основной программе вызвать функцию для массива {5, 21, 15, 20} и распечатать на консоль результат.
  5. [45.s] Создайте функцию MULTIPLES_3, которая подсчитывает количество элементов массива, кратных трём. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  6. [46.s] Создайте функцию PRINT_EVENS_THEN_ODDS, которая выводит на консоль элементы массива, сначала четные, потом нечетные (в порядке их следования в исходном массиве). В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {5, 10, 15, 20}.
  7. [47.s] Создайте функцию PRINT_REVERSE, которая выводит  на консоль элементы массива в обратном порядке. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12}.
  8. [48.s] Создайте функцию SUM_GREATER_10, которая подсчитывает сумму элементов массива,  значения которых больше 10. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  9. [49.s] Создайте функцию SUM_MOD_5, которая подсчитывает сумму остатков от деления элементов данного массива на 5. В качестве параметров функции передаётся адрес начала массива и его длина. Функция должна удовлетворять конвенциям cdecl. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  10. [4a.s] Создайте функцию   MAX(x, y) для определения наибольшего из двух аргументов, которая использует конвенции вызова pascal. Указание: по условиям конвенции pascal возвращаемое значение максимума передаётся через изменяемый параметр Result. Параметр Result является первым  неявным аргументом функции, т. е. аргументы следует передавать через стек, как если бы  функция имела вид   MAX(Result, x, y). Обратите внимание, что для выполнения конвенции pascal,  вам понадобится использовать форму инструкции ret с целочисленным операндом, указывающим количество снимаемых со стека байт для очистки стека от аргументов. В случае передачи трех параметров это будет команда
    RET   6     ! ~ SP+6 
  11. [4b.s] Создайте процедуру SWAP, которая меняет местами значения по двум данным ей адресам. В качестве параметров функции передаются два  адреса. В основной программе вызовите написанную процедуру для "переменных" N и M, объявленных в секции инициализированных данных и равных соответственно 20 и 30, Выведите на консоль значения этих  "переменных" до вызова процедуры SWAP и после вызова. 
  12. [4c.s] Тема - переменное число параметров. Создайте функцию PRINT_EVENS, которая выводит на консоль только четные  значения (в порядке их следования в стеке, начиная с вершины). В качестве параметров функции через стек передаётся количество значений N и за ним  значения. В основной программе загрузите на стек массив {5, 10, 15, 20, 18} и его размер и вызовите написанную функцию. 
  13. [4d.s] Тема - переменное число параметров. Создайте функцию PRINT_REVERSE, которая выводит  на консоль элементы стека в обратном порядке. В качестве параметров функции передаётся количество значений N и сами значения.  В основной программе загрузите на стек значения массива, описанного в секции инициализированных данных {9, 10, 11, 12} и размер массива.
  14. [4e.s] Тема - передача адресов подпрограмм. Создайте функцию SUM_DIG, которая подсчитывает сумму цифр составляющих число. В качестве параметра функции передаётся обрабатываемое число.  Создайте процедуру MAP, которая получает в качестве параметров через стек длину массива, адреса двух массивов одинаковой длины и функцию, которую она применяет к каждому элементу первого массива. Результат применения функции записывается в соответствующий элемент второго массива. В основной программе вызовите процедуру  MAP   для исходного массива {90, 120, 411, 172}, массива для результатов  и функции SUM_DIG. Массив для результатов такого же размера следует объявить в секции неинициализированных данных. После вызова процедуры следует распечатать на консоль массив результатов.
  15. [4f.s] Тема - передача адресов подпрограмм. Создайте функцию F, которая  вычисляет значение многочлена по формуле 3x4 / 8  + x - 12. В качестве параметра функции передаётся значение x.  Создайте процедуру MAP, которая получает в качестве параметров через стек длину массива, адреса двух массивов одинаковой длины и функцию, которую она применяет к каждому элементу первого массива. Результат применения функции записывается в соответствующий элемент второго массива. В основной программе вызовите процедуру  MAP   для исходного массива {3, 2, 1, 4}, массива для результатов  и функции F. Массив для результатов такого же размера следует объявить в секции неинициализированных данных. После вызова процедуры следует распечатать на консоль массив результатов.
  16. [4g.s] Тема - переменное число параметров. Создайте функцию PRINT_ODDS, которая выводит на консоль только нечетные значения (в порядке их следования в стеке, начиная с вершины). В качестве параметров функции через стек передаётся количество значений N и за ним  значения. В основной программе загрузите на стек массив {5, 10, 15, 20, 18} и его размер и вызовите написанную функцию. 
◄ Лаб. Занятие 3. Обязательные задания.
Лаб. Занятие 5. Обязательные задания ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Осенний семестр

        • Прикладная математика и информатика

          • P2K

          • GraphAlgo(BI)

          • ИИ (4 курс)

          • ЧМ-2022 (ПМИ-3 4 и 5)

          • GrAlg

          • МО (бак)

          • ANSYS

          • Численные методы -1,3

          • МСС 2022

          • УМФ III (1-2)

          • VPD

          • AM CA&OS

            • Общая информация

            • Материалы лекций

            • Материалы лабораторных работ

              • ЗаданиеЛаб. Занятие 1. Подготовка и обязательные задания....

              • ЗаданиеПодготовка к лаб.2. Массивы. Условные и безусловны...

              • ЗаданиеЛаб. Занятие 2. Обязательные задания.

              • ЗаданиеПодготовка к лаб.3. Интерфейс системных вызовов. П...

              • ЗаданиеЛаб. Занятие 3. Обязательные задания.

              • ЗаданиеПодготовка к лаб.4. Подпрограммы (продолжение)

              • ЗаданиеЛаб. Занятие 4. Обязательные задания

              • ЗаданиеПодготовка к лаб.5. Работа с файлами

              • ЗаданиеЛаб. Занятие 5. Обязательные задания

              • ЗаданиеПодготовка к лаб.6. Микропрограммирование

              • ФайлIJVM Assembly Language Specification

              • ФайлСправочник ассемблерных инструкций Java-машины

              • ЗаданиеЛаб. Занятие 6. Обязательные задания

              • ЗаданиеЛаб. Занятие 7. Обязательные задания

              • ЗаданиеПодготовка к лабораторной №8: утилиты POSIX

              • ЗаданиеЛаб. Занятие 8. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №9: написание сценариев

              • ЗаданиеЛаб. Занятие 9. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №10: создание процессов

              • ЗаданиеЛаб. Занятие 10. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №11: создание потоков

              • ЗаданиеЛаб. Занятие 11. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №12: разделяемая память

              • ЗаданиеЛаб. Занятие 12. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №13: работа с каналами

              • ЗаданиеЛаб. Занятие 13. Обязательные задания.

              • ЗаданиеПодготовка к лабораторной №14: синхронизация потоков

              • ЗаданиеЛаб. Занятие 14. Обязательные задания.

            • Тестирование

            • Контрольные работы

            • Доборы

            • Дистрибутивы и справочная информация

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
AM CA&OS
  • Русский ‎(ru)‎
    • Русский ‎(ru)‎
    • English ‎(en)‎
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика