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

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

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

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

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

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

Следует разместить в Moodle решение одной из перечисленных ниже задач (по выбору преподавателя)
  1. [31.s] Добавление символа перехода на новую строку в подпрограмме из задачи 5 (см. материалы для подготовки) можно реализовать без помощи printf, а используя более простой системный вызов 122, который моделирует работу функции putchar. Она имеет единственный аргумент: символ, который необходимо вывести. Нужный символ можно класть на стек примерно так:

    PUSH 'a'

    (для размещения на стеке символа a). Организуйте  процедуру печать символа перехода на новую строку с помощью системного вызова 122. Объявите для 122 именованную константу по аналогии с _EXIT и _PRINTF. В основной программе напечатайте все числа от n (n - положительное целое, объявленное в секции инициализированных данных) до нуля через запятую и пробел, по окончании печати используйте вызов написанной Вами процедуры для перевода курсора на следующую строку. 

  2. [32.s] Создайте процедуру печати всех  отрицательных элементов  массива (адрес массива и его длина в словах передаются как параметры через стек). В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от друга пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  3. [33.s] Создайте функцию суммирования всех элементов массива (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции сумма должна остаться в регистре AX. В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте найденную сумму и переведите курсор  в начало следующей строки.  

  4. [34.s] Создайте процедуру печати квадратов элементов  массива (адрес массива и его длина в словах передаются как параметры через стек). В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от друга точкой и  пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  5. [35.s] Создайте функцию, которая для отрицательных чисел возвращает модуль числа, а для положительных - квадрат исходного числа. Само число передаётся функции как параметр, через стек.  Возвращаемое значение должно оставаться в регистре AX. В основной  программе вызовите написанную Вами функцию для всех элементов массива,  объявленного в секции инициализированных данных. В основной программе  распечатайте новые значения для всех элементов массива и переведите курсор  в начало следующей строки.  Указание - для  перехода от отрицательного числа к его модулю можно использовать инструкцию NEG <аргумент> (подробнее см. стр. 744 в книге Таненбаума). 

  6. [36.s] Создайте процедуру печати элементов  массива  в обратном порядке (адрес массива и его длина в словах передаются как параметры через стек). В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от  друга пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  7. [37.s] Создайте функцию, которая подсчитывает количество отрицательных элементов в массиве (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции найденное количество должно остаться в регистре AX. В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте количество  и переведите курсор  в начало следующей строки.  

  8. [38.s] Создайте процедуру печати элементов  массива, сначала следует напечатать все четные элементы, а затем все нечетные.Четность и нечетность определяется для самих элементов, а не для их номеров. Адрес массива и его длина в словах передаются как параметры через стек. В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от  друга запятой и пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  9. [39.s] Создайте функцию, которая подсчитывает количество нечетных элементов в массиве (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции найденное количество должно остаться в регистре AX. В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте количество  и переведите курсор  в начало следующей строки.  
     

  10. [3a.s] Добавление символа перехода на новую строку в подпрограмме из задачи 5 (см. материалы для подготовки) можно реализовать без помощи printf, а используя более простой системный вызов 122, который моделирует работу функции putchar. Она имеет единственный аргумент: символ, который необходимо вывести. Нужный символ можно класть на стек примерно так:

    PUSH 'a'

    (для размещения на стеке символа a). Организуйте  процедуру печати в одну строку  сорока символов "тире" ('-') и символа перехода на новую строку с помощью системного вызова 122. Объявите для 122 именованную константу по аналогии с _EXIT и _PRINTF. В основной программе напечатайте два любых числа, разделенные пробелом,  по окончании печати чисел  используйте вызов написанной Вами процедуры для печати "линии" и перевода курсора на следующую строку. 

  11. [3b.s] Создайте процедуру печати противоположных элементов массива (адрес массива и его длина в словах передаются как параметры через стек). Сам массив меняться не должен. В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от друга запятой  и пробелом. По завершению печати курсор должен быть в начале следующей строки. Пример, для массива 1, -2, 3, -4, 0, -6  на печать должен быть выдан набор -1, 2, -3, 4, 0, 6. 

  12. [3c.s] Создайте процедуру печати элементов  массива, сначала следует напечатать все положительные элементы, а затем все отрицательные. Нулевые элементы, если таковые имеются, на печать выводить не следует.  Адрес массива и его длина в словах передаются как параметры через стек. В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от  друга запятой и пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  13. [3d.s] Создайте процедуру печати всех  элементов  массива, кратных семи (адрес массива и его длина в словах передаются как параметры через стек). В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от  пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  14. [3e.s] Создайте функцию вычисления произведения всех элементов массива (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции произведение должно остаться в регистре AX.  Если произведение будет выходить за пределы регистра AX (т. е. после умножения регистр DX будет отличен от 0), следует выдать сообщение "Переполнение регистра AX". В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте найденное произведение и переведите курсор  в начало следующей строки. 

  15.  [3f.s] Создайте процедуру печати элементов  массива, смещения которых четны (адрес массива и его длина в словах передаются как параметры через стек). В основной программе вызовите написанную Вами процедуру для массива,  объявленного в секции инициализированных данных. При печати элементы должны отделяться друг от  друга пробелом. По завершению печати курсор должен быть в начале следующей строки.  

  16. [3g.s] Создайте функцию, которая для четных чисел возвращает половину исходного числа, а для нечетных - квадрат исходного числа. Само число передаётся функции как параметр, через стек.  Возвращаемое значение должно оставаться в регистре AX. В основной  программе вызовите написанную Вами функцию для всех элементов массива,  объявленного в секции инициализированных данных. В основной программе  распечатайте новые значения для всех элементов массива и переведите курсор  в начало следующей строки.   

  17. [3h.s] Создайте функцию, которая подсчитывает количество положительных элементов в массиве (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции найденное количество должно остаться в регистре AX. В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте количество  и переведите курсор  в начало следующей строки.  

  18. [3i.s] Создайте функцию, которая подсчитывает количество ненулевых элементов в массиве (адрес массива и его длина в словах передаются функции как параметры, через стек). После вызова функции найденное количество должно остаться в регистре AX. В основной  программе вызовите написанную Вами функцию для массива,  объявленного в секции инициализированных данных. По завершению работы функции распечатайте количество  и переведите курсор  в начало следующей строки.  

◄ Лаб. Занятие 2. Обязательные задания для решения в классе.
Лаб. Занятие 4. Обязательные задания для решения в классе ►
Пропустить Навигация
Навигация
  • В начало

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

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

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

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

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

          • 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
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика