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

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

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

Лаб. Занятие 4. Обязательные задания для решения в классе

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

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

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

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

  1. [ 41.s] Создайте функцию   MAX(x, y) для определения наибольшего из двух аргументов, которая использует конвенции вызова pascal. Указание: по условиям конвенции pascal возвращаемое значение максимума передаётся через изменяемый параметр Result. Параметр Result является первым  неявным аргументом функции, т. е. аргументы следует передавать через стек, как если бы  функция имела вид   MAX(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. В основной программе организуйте два вызова написанной функции для чисел 8 и 3,  и для чисел 8 и 4. 
  3. [43.s] Создайте функцию MUL_5_ENDED, которая подсчитывает произведение элементов заданного массива, оканчивающихся на 5 (последнюю цифру числа можно найти с помощью взятия остатка от деления на 10). В качестве параметров функции передаётся адрес начала массива и его длина.  В основной программе вызвать функцию для массива {5, 21, 15, 20} и распечатать на консоль результат.
  4. [44.s] Создайте функцию MULTIPLES_3, которая подсчитывает количество элементов массива, кратных трём. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  5. [45.s] Создайте функцию PRINT_EVENS_THEN_ODDS, которая выводит на консоль элементы массива, сначала четные, потом нечетные (в порядке их следования в исходном массиве). В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {5, 10, 15, 20}.
  6. [46.s] Создайте функцию PRINT_REVERSE, которая выводит  на консоль элементы массива в обратном порядке. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12}.
  7. [47.s] Создайте функцию SUM_GREATER_10, которая подсчитывает сумму элементов массива,  значения которых больше 10. В качестве параметров функции передаётся адрес начала массива и его длина. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  8. [48.s] Создайте функцию SUM_MOD_5, которая подсчитывает сумму остатков от деления элементов данного массива на 5. В качестве параметров функции передаётся адрес начала массива и его длина. Функция должна удовлетворять конвенциям cdecl. В основной программе вызвать функцию для массива {9, 10, 11, 12} и распечатать на консоль результат.
  9. [49.s] Создайте процедуру SWAP, которая меняет местами значения по двум данным ей адресам. В качестве параметров функции передаются два  адреса. В основной программе вызовите написанную процедуру для "переменных" N и M, объявленных в секции инициализированных данных и равных соответственно 20 и 30, Выведите на консоль значения этих  "переменных" до вызова процедуры SWAP и после вызова. 
  10. [4a.s]Создайте функцию   MIN(x, y) для определения наименьшего из двух аргументов, которая использует конвенции вызова pascal. Указание: по условиям конвенции pascal возвращаемое значение  передаётся через изменяемый параметр Result. Параметр Result является первым  неявным аргументом функции, т. е. аргументы следует передавать через стек, как если бы  функция имела вид   MIN(Result, x, y). Обратите внимание, что для выполнения конвенции pascal,  вам понадобится использовать форму инструкции ret с целочисленным операндом, указывающим количество снимаемых со стека байт для очистки стека от аргументов. В случае передачи трех параметров это будет команда

    RET      6             ! ~ SP+6 
  11. [4b.s] Тема - переменное число параметров. Создайте функцию PRINT_EVENS, которая выводит на консоль только четные  значения (в порядке их следования в стеке, начиная с вершины). В качестве параметров функции через стек передаётся количество значений N и за ним  значения. В основной программе загрузите на стек массив {5, 10, 15, 20, 18} и его размер и вызовите написанную функцию. 
  12. [4c.s] Тема - переменное число параметров. Создайте функцию PRINT_REVERSE, которая выводит  на консоль элементы стека в обратном порядке. В качестве параметров функции передаётся количество значений N и сами значения.  В основной программе загрузите на стек значения массива, описанного в секции инициализированных данных {9, 10, 11, 12} и размер массива.
  13. [4d.s] Тема - передача адресов подпрограмм. Создайте функцию SUM_DIG, которая подсчитывает сумму цифр составляющих число. В качестве параметра функции передаётся обрабатываемое число.  Создайте процедуру MAP, которая получает в качестве параметров через стек длину массива, адреса двух массивов одинаковой длины и функцию, которую она применяет к каждому элементу первого массива. Результат применения функции записывается в соответствующий элемент второго массива. В основной программе вызовите процедуру  MAP   для исходного массива {90, 120, 411, 172}, массива для результатов  и функции SUM_DIG. Массив для результатов такого же размера следует объявить в секции неинициализированных данных. После вызова процедуры следует распечатать на консоль массив результатов.
  14. [4e.s] Тема - передача адресов подпрограмм. Создайте функцию F, которая  вычисляет значение многочлена по формуле \(3x^4 / 8  + x - 12\). В качестве параметра функции передаётся значение x.  Создайте процедуру MAP, которая получает в качестве параметров через стек длину массива, адреса двух массивов одинаковой длины и функцию, которую она применяет к каждому элементу первого массива. Результат применения функции записывается в соответствующий элемент второго массива. В основной программе вызовите процедуру  MAP   для исходного массива {3, 2, 1, 4}, массива для результатов  и функции F. Массив для результатов такого же размера следует объявить в секции неинициализированных данных. После вызова процедуры следует распечатать на консоль массив результатов.
  15. [4f.s] Тема - переменное число параметров. Создайте функцию PRINT_ODDS, которая выводит на консоль только нечетные значения (в порядке их следования в стеке, начиная с вершины). В качестве параметров функции через стек передаётся количество значений N и за ним  значения. В основной программе загрузите на стек массив {5, 10, 15, 20, 18} и его размер и вызовите написанную функцию. 
◄ Лаб. Занятие 3. Обязательные задания для решения в классе.
Лаб. Занятие 5. Обязательные задания для решения в классе ►
Пропустить Навигация
Навигация
  • В начало

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

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

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

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

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

          • Compiler Development

          • CMVSM

          • АЗПК

          • Frontend

          • ТеорЯП

          • Ruby Eng

          • EngCA&OS

          • CS201e

          • Компиляторы - лекции

          • CS202

          • CS211 C++ ENG

          • CS221 CA&OS

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

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

              • ЗаданиеЛаб. Занятие 1. Введение. Арифметика. Циклы LOOP

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

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

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

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

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

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

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

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

              • СтраницаЛаб. Занятие 6. Подготовка. Цепочечные инструкции

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

              • СтраницаЛаб. Занятие 7. Подготовка. Микропрограммирование

              • ФайлIJVM Assembly Language Specification

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

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

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

              • СтраницаЛаб. Занятие 8. Подготовка. Основы работы в UNIX-п...

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

              • СтраницаЛаб. Занятие 9. Подготовка. Написание сценариев

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

              • СтраницаЛаб. Занятие 10. Подготовка. Многопоточность

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

              • СтраницаЛаб. Занятие 11. Подготовка. Разделяемая память

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

              • СтраницаЛаб. Занятие 12. Подготовка. Работа с каналами

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

              • СтраницаЛаб. Занятие 13. Подготовка. Синхронизация потоков

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

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

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

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

            • Доборы

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

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

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

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

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

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

        • Другое

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

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

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

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

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

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

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

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

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

        • Другое

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

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

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

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

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

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

        • Архив

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

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

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

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

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

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

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

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

        • ВМШ

          • ВМШ - 24

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

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

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

      • Олимпиады

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

      • Разное

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

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

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