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

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

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

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

Добавлен: 04.12.2023

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

Учебная дисциплина

Операционные системы и среды.

Лабораторная работа

Выполнила: Драчева Кристина

Проверила: Андриянова Марина Александровна

Тула 2023

  1. Задание на контрольную работу.

Вывести на дисплей в цикле числа 10, 20, 30, 40, 50, 60, 70, 80, 90.

  1. Схема алгоритма командного файла


Начало





Вывод запроса на ввод параметров программы





Ожидание ввода параметров



Подготовка к циклу







Вывод на консоль значения





Увеличение на шаг





Пороверка на невыход за предел


да






Вывод параметров на консоль
нет





Завершение работы


  1. Листинг командного файла

format PE console

entry start

include 'win32a.inc'

section '.data' data readable writable

Nch db 10,13,'Vvedite startovoe chislo : ',0

Shg db 10,13,'Vvedite shag cikla : ',0

Prdl db 10,13,'Vvedite predel cikla : ',0

zadacha db 10,13,'Nachalo - %d, Shag - %d, Predel %d',10,13,0

resStr db 10,13, ' : %d',0

formatStr db '%d',0


Shag dd ?


Nach dd ?


Predel dd ?

NULL = 0

section '.code' code readable executable

start:

push Nch

call [printf]

push Nach

push formatStr

call [scanf]

push Shg

call [printf]

push Shag

push formatStr

call [scanf]

push Prdl

call [printf]

push Predel

push formatStr

call [scanf]

mov ebx, [Nach]

nach_cikl :

push ebx

push resStr

call [printf]

mov eax, ebx

add eax, [Shag]

mov ebx, eax

cmp ebx, [Predel]

jna nach_cikl

push [Predel]

push [Shag]

push [Nach]

push zadacha

call [printf]

call [getch]

push NULL

call [ExitProcess]

section '.idata' import data readable

library 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. Какие функции выполняет транслятор с языка программирования?

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