ЗАД НА ЛАБ РАБ СПС (Задания на лабораторные работы и домашнюю работу по СПО)

2018-01-12СтудИзба

Описание файла

Файл "ЗАД НА ЛАБ РАБ СПС" внутри архива находится в следующих папках: Задания на лабораторные работы и домашнюю работу по СПО, sistPO. Документ из архива "Задания на лабораторные работы и домашнюю работу по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "ЗАД НА ЛАБ РАБ СПС"

Текст из документа "ЗАД НА ЛАБ РАБ СПС"

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ПРИБОРОСТРОЕНИЯ И ИНФОРМАТИКИ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ ОБРАБОТКИ

ИНФОРМАЦИИ И УПРАВЛЕНИЯ ИТ-7

ДИСЦИПЛИНА «Системное программное обеспечение»

Методические указания по выполнению лабораторных работ.

Специальность 22.02.03

«Автоматизированные системы обработки информации и управления»

Москва 2007

УТВЕРЖДАЮ

Проректор по учебной работе

Соколов В.В.

«_ _ »____ _ __ _ 2007 г.

АННОТАЦИЯ

Настоящие методические указания предназначены для ока­зания методической помощи студентам при изучении курса «Системное программное обеспечение ».

Автор: доц. Матюхин Б.Н.,

Рассмотрено и одобрено на заседании кафедры И Т-7

«____»_________2007г.

Зав. кафедры. ИТ-7 Петров О.М.

Ответственный от кафедры за выпуск

учебно-методических материалов Лихойда Н.Н.

Язык Ассемблера для IBM PC относится к машинно-ориентированным языкам. Для того чтобы написать программу на языке Ассемблера для конкретного компьютера, важно знать его архитектуру. В данном пособии рассматривается базовая версия языка Ассемблера для IBM PC/XT. Лабораторные работы проводятся для студентов 3 курса.

Лабораторная работа №1.

СТРУКТУРА АССЕМБЛЕРА.

Комментарии.

Комментарий может занимать всю строку или следовать за командой на той же строке, как показано в двух следующих примерах:

1. ;Эта строка полностью является комментарием

2. ADD АХ,ВХ; Комментарий вместе с командой

Комментарии появляются только в листингах ассемблирования исходного модуля и не приводят к генерации машинных кодов, поэтому можно включать любое количество комментариев, не влияя на эффективность выполнения программы,

ФОРМАТ КОДИРОВАНИЯ

Основной формат кодирования команд Ассемблера имеет

следующий вид:

[метка] команда [операнд(ы)]

Метка (если имеется), команда и операнд (если имеется) разделяются по крайней мере одним пробелом или символом табуляции. Максимальная длина строки - 132 символа, однако большинство специалистов предпочитают работать со строками в 80 символов (соответственно ширине экрана). Примеры кодирования:

Метка Команда Операнд

COUNT DB 1 ;Имя, команда, один операнд

MOV АХ, 0 ;Команда, два операнда

Метки

Метка в языке Ассемблер может содержать следующие символы:

Буквы: от А до Z и от а до z

Цифры: от 0 до 9

Специальные символы: знак вопроса (?)

точка (.) (только первый символ) знак "коммерческое эт" (@) подчеркивание (_) доллар ($)

Первым символом в метке должна быть буква или специальный символ. Ассемблер не делает различия между заглавными и строчными буквами. Максимальная длина метки - 31 символ. Примеры меток: COUNT, PAGE25, $Е10. Рекомендуется использовать описательные и смысловые метки. Все имена регистров, например, АХ, DI или AL, являются зарезервированными и используются только для указания соответствующих регистров. Например, в команде

ADD AX,BX

ассемблер автоматически знает, что АХ и ВХ относятся к регистрам. Однако, в команде

MOV REGSAVE,AX

ассемблер воспримет имя REGSAVE только в случае, если оно будет определено в сегменте данных.

Мнемоническая команда указывает ассемблеру, какое действие должен выполнить данный оператор, В сегменте данных команда определяет поле, рабочую область или константу. В сегменте кода команда определяет действие, например, пересылка (MOV) или сложение (ADD).

Операнд

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

Метка Команда Операнд

CNTR DВ 0 ; Определить байт с нулевым значением

Команда может иметь один или два операнда, или вообще быть без операндов. Рассмотрим следующие три примера:

Команда Операнд Комментарий

Нет операндов: RET ;Вернуться

Один операнд: INC СХ ;Увеличить СХ

Два операнда: ADD АХ,12 ;Прибавить 12 к АХ

Метка, команда и операнд не обязательно должны начинаться с какой-либо определенной позиции в строке. Однако, рекомендуется записывать их в колонку для большего удобства при чтении программы. Для этого, например, редактор DOS EDLIN обеспечивает табуляцию через каждые восемь позиций.

ДИРЕКТИВЫ

Ассемблер имеет ряд операторов, которые позволяют управлять процессом ассемблирования и формирования листинга. Эти операторы называются псевдокомандами или директивами. Они действуют только в процессе ассемблирования программы и не генерируют машинных кодов.

Директивы управления листингом: PAGE и TITLE

Ассемблер содержит ряд директив, управляющих форматом печати (или листинга). Обе директивы PAGE и TITLE можно использовать в любой программе.

Директива PAGE. В начале программы можно указать количество строк, распечатываемых на одной странице, и максимальное количество символов на одной строке. Для этой цели служит директива PAGE. Следующей директивой устанавливается формат 60 строк на страницу и 132 символа в строке:

PAGE 60,132

Количество строк на странице может быть в пределах от 10 до 255, а символов в строке - от 60 до 132. По умолчанию в ассемблере установлено PAGE 66,80.

Предположим, что счетчик строк установлен на 60. В этом случае ассемблер, распечатав 60 строк, выполняет прогон листа на начало следующей страницы и увеличивает номер страницы на единицу. Кроме того, можно заставить ассемблер сделать прогон листа на конкретной строке, например в конце сегмента. Для этого необходимо записать директиву PAGE без операндов. Ассемблер автоматически делает прогон листа при обработке директивы PAGE.

Директива TITLE. Для того, чтобы вверху каждой страницы листинга печатался заголовок (титул) программы, используется директива TITLE s следующем формате:

TITLE текст

В качестве текста рекомендуется использовать имя программы, под которым она находится в каталоге на диске. Например, если программа называется ASMSORT, то можно использовать это имя и описательный комментарий общей длиной до 60 символов:

TITLE ASMSORT - ассемблерная программа сортировки имен

В ассемблере также имеется директива подзаголовка SUBTTL, которая может оказаться полезной для очень больших программ, содержащих много подпрограмм.

Директива SEGMENT

Любые ассемблерные программы содержат по крайней мере один сегмент - сегмент кода. В некоторых программах используются сегмент для стековой памяти и сегмент данных для определения данных. Ассемблерная директива для описания сегмента SEGMENT имеет следующий формат:

Имя Директива Операнд

имя SEGMENT [ параметры]

…………….

имя ENDS

Имя сегмента должно обязательно присутствовать, быть , уникальным и соответствовать соглашениям для имен в Ассемблере. Директива ENDS означает конец сегмента. Обе директивы SEGMENT и ENDS должны иметь одинаковые имена.

Директива SEGMENT может содержать три типа параметров: выравнивание, объединение и класс.

1. Выравнивание, Данный параметр определяет границу начала сегмента. Обычным значением является PARA, по которому сегмент устанавливается на границу параграфа. В этом случае начальный адрес кратен 16, т.е. имеет шестнадцатеричный адрес nnn0. В случае отсутствия этого операнда ассемблер принимает по умолчанию PARA.

2. Объединение. Этот элемент определяет, объединяется ли данный сегмент с другими сегментами в процессе компоновки после ассемблирования (пояснения даны в следующем разделе "Компоновка программы"). Возможны следующие типы объединений: STACK, COMMON, PUBLIC, AT-выражение и MEMORY. Сегмент стека определяется следующим образом:

имя SEGMENT PARA STACK

Если отдельно ассемблированные программы должны объединяться компоновщиком, то можно использовать типы объединений: PUBLIC, COMMON и MEMORY. В случае, если программа не должна объединяться с другими программами, то указание этих типов должно быть опущено.

3. Класс. Данный элемент, заключенный в апострофы, используется для группирования относительных сегментов при компоновке:

имя SEGMENT PARA STACK 'Stack'

фрагмент программы на рис.3.1 в следующем разделе иллюстрирует директиву SEGMENT и ее различные параметры.

Директива PROС

Сегмент кода содержит выполняемые команды программы. Кроме того, этот сегмент также включает в себя одну или несколько процедур, определенных директивой PROC. Сегмент, содержащий только одну процедуру, имеет следующий вид:

имя _ сегмента SEGMENT PARA

имя _ процедуры PROC FAR Сегмент

кода

с одной процедурой

…….

RET
имя_процедуры ENDP
имя_ сегмента ENDS

Имя процедуры должно обязательно присутствовать, быть уникальным и удовлетворять соглашениям по именам в Ассемблере. Операнд FAR указывает загрузчику DOS, что начало данной процедуры является точкой входа для выполнения программы.

Директива ENDP определяет конец процедуры и имеет имя, аналогичное имени в директиве PROC. Команда RET завершает выполнение программы и в данном случае возвращает управление в DOS.

Сегмент может содержать несколько процедур.

Директива ASSUME

Процессор использует регистр SS для адресации стека, регистр DS для адресации сегмента данных и регистр CS для адресации сегмента кода. Ассемблеру необходимо сообщить назначение каждого сегмента. Для этого служит директива ASSUME, кодируемая в сегменте кода следующим образом:

Директива Операнд

ASSUME SS:им _ стек, DS:им _ дан, CS:им_ код

Например, SS:им_стек указывает, что ассемблер должен ассоциировать имя сегмента стека с регистром SS. Операнды могут записываться в любой последовательности. Регистр ES также может присутствовать среди операндов. Если программа не использует регистр ES, то его можно опустить или указать ES:NOTHING.

Директива END

Как уже показано, директива ENDS завершает сегмент, а директива ENDP завершает процедуру. Директива END в свою очередь полностью завершает всю программу:

Директива Операнд

END [имя_процедуры]

Операнд может быть опущен, если программа не предназначена для выполнения, например, если ассемблируются только для определения данных, или эта программа должна быть скомпонована с другим (главным) модулем. Для обычной программы с одним модулем операнд содержит имя, указанное в директиве PROC, которое было обозначено как FAR.

ПАМЯТЬ И РЕГИСТРЫ

Рассмотрим особенности использования в командах имен, имен в квадратных скобках и чисел: В следующих примерах положим, что WORD А определяет слово в памяти:

MOV АХ,ВХ ;Переслать содержимое ВХ в регистр АХ
MOV AX,WORDA ;Переслать WORDA в регистр АХ
MOV АХ, [ВХ] ;Переслать содержимое памяти по

;адресу в регистре ВХ в регистр АХ

MOV АХ,25 ;Переслать значение 25 в регистр АХ
MOV АХ, [25] ;Переслать содержимое по смещению 25

Новым здесь является использование квадратных скобок, что потребуется в следующих главах.

ИНИЦИАЛИЗАЦИЯ ПРОГРАММЫ

Существует два основных типа загрузочных программ: ЕХЕ и СОМ. Рассмотрим требования к ЕХЕ-программам, а СОМ-программы будут представлены дальше. Система DOS имеет четыре требования для инициализации ассемблерной ЕХЕ-программы. Для этого необходимо:

1} указать ассемблеру, какие сегментные регистры должны соответствовать сегментам,

2) сохранить в стеке адрес находящийся в регистре DS, когда программа начнет выполнение,
3) записать в стек нулевой адрес и

4) загрузить в регистр OS
адрес сегмента данных.

Выход из программы и возврат в DOS сводится к использованию команды RET. На рис.1 проиллюстрированы требования к инициализации и выходу из программы:

1. ASSUME - это ассемблерная директива, которая устанавливает для ассемблера соответствие между конкретными сегментами и сегментными регистрами; в данном случае соответствует CS, DATASG - DS и STACKSG - SS. DATASG и STACKSG не определены в этом примере, но они могли быть представлены следующим образом:

STACKSG SEGMENT PARA STACK Stack 'Stack'
DATASG SEGMENT PARA 'Data'

Ассоциируя сегменты с сегментными регистрами, ассемблер сможет определить смещения к отдельным областям в каждом сегменте. Например, каждая команда в сегменте кодов имеет определенную длину: первая имеет смещение 0, и если это двухбайтовая команде, вторая команда будет иметь смещение 2 и т.д.

Загрузочному модулю в памяти непосредственно
предшествует 256-байтовая (100Н) область, называемая
префиксом программного сегмента PSP. Программа
загрузчика использует регистр DS для установки адреса
начальной точки PSP. Пользовательская программа должна
сохранить этот адрес, поместив его в стек. Позже команда
RET возьмет этот адрес из стека для возврата в DOS.
В системе требуется, чтобы следующее значение в стеке
являлось нулевым адресом (точнее, смещением). Для этого
команда SUB очищает регистр АХ, вычитая его из этого же
регистра АХ, а команда PUSH заносит это значение в стек.
Загрузчик DOS устанавливает правильные адреса стека в
регистре SS и сегмента кодов в регистре CS. Поскольку
программа загрузчика использует регистр DS для других
целей, необходимо инициализировать регистр DS двумя
командами MOV, как показано на рис.1. В следующем
разделе этой главы "Пример исходной программы" детально
поясняется инициализация регистра DS.

Команда RET обеспечивает выход из пользовательской программы и возврат в DOS, используя для этого адрес, записанный в стек в начале программы командой PUSH DS. Другим часто используемым способом завершения программы является команда INT 20H.

CODESG SEGMENT PARA ‘CODE’

BEGIN PRОC FAR

1. ASSUME CS:CODESG,DS:DATASG,SS:STACKG

2. PUSH DS ;3аписать DS в стек

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5232
Авторов
на СтудИзбе
423
Средний доход
с одного платного файла
Обучение Подробнее