Файл: Операционные системы и среды.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.12.2023

Просмотров: 99

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»Учебная дисциплинаОперационные системы и среды.Лабораторная работаВыполнила: Драчева КристинаПроверила: Андриянова Марина АлександровнаТула 2023

  1. Задание на контрольную работу.
Вывести на дисплей в цикле числа 10, 20, 30, 40, 50, 60, 70, 80, 90.

  1. Схема алгоритма командного файла
Начало Вывод запроса на ввод параметров программы Ожидание ввода параметров Подготовка к циклу Вывод на консоль значения Увеличение на шаг Пороверка на невыход за пределда Вывод параметров на консоль нет
Завершение работы

  1. Листинг командного файла
format PE consoleentry startinclude 'win32a.inc'section '.data' data readable writableNch db 10,13,'Vvedite startovoe chislo : ',0Shg db 10,13,'Vvedite shag cikla : ',0Prdl db 10,13,'Vvedite predel cikla : ',0zadacha db 10,13,'Nachalo - %d, Shag - %d, Predel %d',10,13,0resStr db 10,13, ' : %d',0formatStr db '%d',0Shag dd ?Nach dd ?Predel dd ?NULL = 0section '.code' code readable executablestart:push Nchcall [printf]push Nachpush formatStrcall [scanf]push Shgcall [printf]push Shagpush formatStrcall [scanf]push Prdlcall [printf]push Predelpush formatStrcall [scanf]mov ebx, [Nach]nach_cikl :push ebxpush resStrcall [printf]mov eax, ebxadd eax, [Shag]mov ebx, eaxcmp ebx, [Predel]jna nach_ciklpush [Predel]push [Shag]push [Nach]push zadachacall [printf]call [getch]push NULLcall [ExitProcess]section '.idata' import data readablelibrary kernel, 'kernel32.dll',\msvcrt, 'msvcrt.dll'import kernel,\ExitProcess, 'ExitProcess'import msvcrt,\printf, 'printf',\getch, '_getch',\scanf, 'scanf'

  1. Описание алгоритма и программы.
Выполнение задания выполнено в собственной оболочке компилятора FASM. Для взаимодействия с клавиатурой и вывода на консоль использованы функции printf, _getch и scanf из библиотеки msvcrt.dll. Для корректного завершения использована функция ExitProcess из библиотеки kernel32.dll.Программа состоит из трёх секций:.data.code.idataСекция .data используется для задания строк приглашений и строк выводла, а также резервирования места под параметры.Секция .code содержит сам код программы.Секция .idata описывает подключаемые библиотеки и импортируемые функции.В начале программы задан формат файла (консольное приложение). Затем заданна точка входа. Далее подключается модуль win32a.inc содержащий константы и макросы для работы с Windows. Работа программы начинается с вывода запроса на ввод параметров цикла. Для этого в стек инструкцией push помещается адрес нужной строки и инструкцией call вызываем функцию printf которая в качестве аргумента берёт из стека адрес и выводит на консоль строку хранящуюся по этому адресу.Получение ответа на запрос производится с помощью функции scanf. Для этого в стек помещается адрес зарезервированный под этот параметр и строка формата получаемых данных. Для инициализации адреса используются метки.После получения параметров устанавливается начальное число с которого будет начат счёт. Для этого используется регистр ebx. И начинается выполнение самого цикла. Начинается с установки метки начала цикла.Затем выводится на экран содержимое регистра ebx.

Командой mov копируется содержимое регистра ebx в eax.К содержимому регистра eax инструкцией add прибавляется значение шага хранящееся по адресу инициализированному меткой Shag.Значение регистра eax переносится в регистр ebx.Содержимое ebx командой cmp сравнивается с содержимым памяти по адресу метки Predel.Дальше командой jna проверяются флаги c и z, и если условие перехода выполнено (меньше или равно) то происходит переход на метку начала цикла. В противном случае происходит выход из цикла.На экран выводятся параметры циклаВызывается функция корректного завершения программы ExitProcess с параметром 0.

  1. Результат выполнения.

  1. Контрольные вопросы.


    1. Какова область применения языка программирования Ассемблер?
Язык ассемблер отлично подходит для написания программ, где важными критериями является:скорость работы (игры, драйверы);объём доступной для использования памяти (вирусные и защитные программы, встраиваемое ПО, программы для микроконтроллеров и микропроцессоров, загрузочные сектора).


    1. Почему Ассемблер называется машинно–ориентированным языком программирования?
Язык ассемблер называется машинно-ориентированным по той причине, что для каждой команды процессора существует свой аналог команды на ассемблере.

    1. Какими особенностями характеризуются программы, разработанные на языке Ассемблер, относительно программ, разработанных на языках программирования высокого уровня?
Программный модуль на ассемблере обладает, как правило, более высоким быстродействием и меньшим размером, чем написанный на языке высокого уровня.


    1. Какие группы команд по функциональному назначению имеют микропроцессоры типа 80х86?
азовую систему команд микропроцессора можно условно разделить на несколько групп по функциональному назначению:команды передачи данныхкоманды установки единичного битакоманды работы со стекомкоманды ввода-выводаарифметические командылогические командысдвиговые командыкоманды коррекции двоично-десятичных чиселкоманды преобразования типовкоманды управления флагами
команды прерыванийкоманды передачи управлениякоманды синхронизации работы процессоракоманды побитового сканированиястроковые команды


    1. Какие форматы представления чисел используются в арифметических командах микропроцессоров типа 80х86?
Система команд І80х86 поддерживает только числа размером в байт и слово и частично — размером в двойное слово.


    1. Какие регистры микропроцессоров типа 80х86 являются доступными для программиста?
Регистры общего назначения. AL, AH, AX, BL, BH, BX, CL, CH, CX, DL, DH, DX.


    1. Какие способы адресации используются в командах микро–процессоров типа 80х86?
В командах микро–процессоров типа 80х86 применяется егментная адресация памяти.


    1. Каковы основные принципы организации системы прерываний в микропроцессорах типа 80х86?
Семейство микропроцессоров Intel 80x86 поддерживает 256 уровней приоритетных прерываний организованных в таблицу векторов прерываний


    1. Какова структура программы на языке Ассемблер для микро–процессоров типа 80х86?
Программа, написанная на языке ассемблера, может состоять из нескольких частей, называемых модулями. В каждом модуле могут быть определены один или несколько сегментов данных, стека и кода. Любая законченная программа на ассемблере должна включать один главный, или основной, модуль, с которого начинается ее выполнение.


    1. Что такое "модель памяти"? Какие модели памяти предусматриваются в программах для микропроцессоров типа 80х86?
«Модель памяти» это форма её организации. Микропроцессор аппаратно поддерживает несколько моделей использования оперативной памяти:сегментированную модель, страничную модель,плоскую модель.


    1. Чем различаются друг от друга модели памяти Tiny и Small?
TINY — код, данные и стек размещаются в одном и том же сегменте размером до 64 Кб. Эта модель памяти чаще всего используется при написании на ассемблере небольших программ; SMALL — код размещается в одном сегменте, а данные и стек — в другом (для их описания могут применяться разные сегменты, но объединенные в одну группу).


    1. Что такое "система программирования"?
Система программирования — это система для разработки новых программ на конкретном языке программирования.


    1. Какие компоненты входят в систему программирования Microsoft Assembler?
Система программирования Microsoft Assembler представляет собой набор программного и методического обеспечения, предназначенный для разработки и отладки программ на языке Ассемблер. Система содержит следующие основные программные компоненты:MASM.EXE – транслятор–компилятор, осуществляющий преобразование исходной программы на языке Ассемблер (файл типа *.ASM) в объектную программу (файл типа *.OBJ);LINK.EXE – компоновщик (редактор связей), осуществляющий преобразование объектной программы в исполняемую программу (файл типа *.COM или *.EXE);LIB.EXE – программу (библиотекарь), позволяющую создавать и обслуживать библиотеки объектных программ (файлы типа *.LIB);ML.EXE – программу, которая интегрирует функции транслятора и компоновщика;ML.ERR – файл, который содержит тексты информационных сообщений программы ML.EXE;EXE2BIN.EXE – программу преобразования исполняемого файла из формата EXE в исполняемый файл формата COM;CODEVIEW.EXE – программу–отладчик, предназначенную для облегчения поиска и локализации семантических ошибок в исходной программе на языке Ассемблер.


    1. Какие компоненты входят в систему программирования Turbo Assembler?
Система программирования Turbo Assembler является практически полным функциональным аналогом системы программирования Microsoft Assembler. Основными программными компонентами системы программирования Turbo Assembler являются следующие:TASM.EXE – транслятор–компилятор, осуществляющий преобразование исходной программы на языке Ассемблер (файл типа *.ASM) в объектную программу (файл типа *.OBJ);TLINK.EXE – компоновщик (редактор связей), осуществляющий преобразование объектной программы в исполняемую программу (файл типа *.COM или *.EXE);TLIB.EXE – программа–библиотекарь, позволяющая создавать и обслуживать библиотеки пользовательских программ (файлы типа *.LIB);TDEBUG.EXE – программа–отладчик, предназначенная для облегчения поиска и локализации семантических ошибок в исходной программе на языке Ассемблер.


    1. Какие функции выполняет транслятор с языка программирования?
Транслятор выполняет следующие основные задачи: - анализирует транслируемую программу, в частности определяет, содержит ли она синтаксические ошибки; - генерирует выходную программу (ее часто называют объектной) на языке машинных команд