Контрольная работа по "Системному программному обеспечению"

Автор работы: Пользователь скрыл имя, 15 Февраля 2013 в 07:58, контрольная работа

Описание

1. Для чего каждая задача получает соответствующий дескриптор? Какие поля, как правило, содержатся в дескрипторе процесса (задачи)? Что такое «контекст задачи»?
2. Перечислите директивы резервирования и инициализации данных в ассемблере?
3. Составить программу на ассемблере для сложения чисел размером N байт без учета знака.
4. Привести пример на использование команды ввода-вывода в порт на языке ассемблер.
5. Приведите пример использования команды пересылки цепочек на языке ассемблер.

Работа состоит из  1 файл

Бегаришева СПО _Адил.doc

— 39.50 Кб (Скачать документ)

МИНИСТЕРСТВО  НАУКИ И ОБРАЗОВАНИЯ РЕСПУБЛИКИ КАЗАХСТАН

КАСПИЙСКИЙ  ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕХНОЛОГИЙ И ИНЖИНИРИНГА ИМ. Ш.ЕСЕНОВА

Институт морских  технологий

Кафедра Вычислительная техника и программное обеспечение

 

 

 

 

 

 

 

 

 

 

Контрольная работа

по дисциплине: Системное программное обеспечение

 

 

 

цит и до рег№00577 5.12.12г

Каф № 1292 от 7,12,12

 

 

 

Выполнил: студент гр. ВТиПО-11-5

                                                         Адил К.К.

Проверил: к.п.н., доцент

                                                         Бегаришева Г.Г.

                                       Номер зачетной книжки 5/11-0284

 Вариант 84

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Актау 2012 г.

Вариант 84

1. Для чего  каждая задача получает соответствующий  дескриптор?

Какие поля, как правило, содержатся в дескрипторе процесса

(задачи)? Что  такое «контекст задачи»?

1. Дескриптор  ОС реального времени

      В ОС  реального  времени   количество  процессов  фиксируется,  поэтому

полезно определить  количество  дескрипторов  процессов.  Каждый  дескриптор процессов постоянно располагается в оперативной  памяти,  с  целью  ускорить работу диспетчера задач, для более эффективной обработки данных. В  системах реального  времени  целесообразно  иметь   постоянные   дескрипторы   задач, полностью или всегда существующие в системе, независимо от  того,  поступают на них требования или  нет.  каждая  конкретная  задача  обладает  некоторой собственной областью оперативной  памяти,  независимо  от  того  исполняется задача или нет. Это так наз.  ОЗУ  резидентные задачи.  Эта область может использоваться для хранения данных полученных задачей  ранее.  Данные  могут хранится в ней тогда,  когда  задача  находится  в  состоянии  ожидания  или бездействия.

      Аппаратная поддержка  дескрипторов  задач.  Для  аппаратной  поддержки работы ОС с дескрипторами задач в процессорах реального времени  реализованы соответствующие механизмы.  Начиная  с  Intel  80286  в  котором  реализован регистр  наз:  TR  task  Register,  указывающий   местонахождение   сегмента состояния  задачи,  в  котором  при  переключении   с   задачи   на   задачу автоматически сохраняется содержание регистров процессора. В современных  ОС регистр задачи включает в себя  сегмент  состояния  задачи  TSS  task  state segment Дескриптор задачи больше по размерам  чем TSS  и включает  в себя такие общие поля, как идентификатор задачи, имя, приоритет, тип.

 

2. Перечислите  директивы резервирования и инициализации  данных в

ассемблере?

 

Эти директивы  используются для резервирования и  инициализации слов, байтов или битов. В абсолютном сегменте зарезервированное пространство начинается с текущего адреса. В перемещаемом сегменте зарезервированное пространство начинается с текущего смещения. Указатель расположения поддерживаетсяотдельно для каждого сегмента, к нему можно обращаться, используя символ ($).

 

3. Составить программу  на ассемблере для сложения  чисел размером N

байт без учета знака.

Сложение чисел размером N байт без учета знака

:add_unsign_N - процедура сложения  чисел размером N байт без учета знака 
:Вход: summand_1 и summand_2 - слагаемые. N - длина в байтах. 
:Выход: summand_1или carry+summandj. - значение суммы с учетом переполнения.

.data 
summand_1db ? ;первое слагаемое 
N=$-surranand_1;длина в байтах значений summand_1и summand_2 
carry db 0 :перенос сложения последних байтов 
summand_2 db ? :второе слагаемое 
.code 
add_unsign_N proc 
mov cl. N 
хог si.si cycl: mov al ,summand_2[si] 
adc summand_l[si].al 
inc si 
loop cycl 
jnc end_p ;проверка на переполнение 
adc carry. 0 
end_p: ret  
add_unsign_N endp

Программа учитывает  возможное переполнение результата.

 

4. Привести пример  на использование команды ввода-вывода  в порт на

языке ассемблер.

Сложение неупакованных BCD-чисел (макрокоманда)

add_bcdmacro summand_i.1en_l,summand_2.1 en_2,sum local ml.m2.m3 
:add_bcd summand_1.1en_l,summand_2.1en_2.sum - макрокоманда 
:сложения неупакованных BCD-чисел размером 1еп_1 и len_2 
:байт и помещение результата в sum. 
:Вход: summand_i и summand_2 - адреса младших байтов 
хлагаемых; 1еп_1 и 1еп__2 - длины слагаемых в байтах. 
;Выход: sum - адрес младшего байта поля суммы. Желательно. 
:чтобы это поле имело длину на единицу больше, чем длина 
:самого длинного слагаемого. 
;Порядок следования байт - младший байт по младшему адресу (Intel). 
push si 
push bx 
mov ax.len_l 
cmp ax.len_2 
jna m2 
mov cx,len_l ;длина большего для сложения (см. ниже) 
push ex 
mov cx,len_2 ;длина меньшего для сложения (см. ниже) 
push ex 
mov cx.ax 
lea bx.summand_l :адрес большего источника для сложения 
lea si,summand_2 :адрес меньшего источника для movsb 
jmp m3 
т2: mov сх.1еп_2 :длина большего для сложения (см. ниже) 
push ex 
mov cx.len_l ;длина меньшего для сложения (см. ниже) 
push ex 
mov cx.len_2 
lea bx.summand_2 ;адрес большего источника для сложения 
lea si.summand_l :адрес меньшего источника для movsb m3: заполняем sum нулями - длина определена выше: 
eld 
хог al.al 
lea di. sum rep stosb ;пересылка меньшего (по длине) BCD-числа в sum: 
eld 
push ds 
pop es 
lea di. sum :адрес источника см. выше

 

5. Приведите пример использования команды пересылки цепочек на

языке ассемблер.

sub_bcdmacro minuend.lenjn. deduction.len_d. difference local temp.ml.m2.exit_m 
:sub_bcd minuend".len_m.deduction,len_d.difference -макрокоманда вычитания неупакованных BCD-чисел размером ;len_m и len_d байт и помещение результата в difference. ;Вход: minuend и deduction - адреса младших байтов уменьшаемого и вычитаемого: len_m и len_d - длины уменьшаемого и вычитаемого в байтах. 
;Выход: difference - адрес младшего байта поля разности. :Длина поля difference должна быть не меньше длины :уменьшаемого. 
;Порядок следования байт - младший байт по младшему адресу (Intel). 
push si 
.¦копируем уменьшаемое в difference: 
push ds 
pop es 
eld 
lea si.minuend 
lea di.difference 
mov cx.lenjn 
push ex rep movsb 
jmp ml ;копируем вычитаемое во врем, область temp: 
temp db len_m dup (0) 
ml: lea si .deduction 
lea di,cs:temp 
mov cx.len_d 
push cs 
pop es rep movsb 
xor si.si 
pop ex 
m2: mov al,minuend[si] 
sbb al,cs:temp[si] 
aas 
mov difference[si].al 
inc si 
1oop m2 
jc m3 :на обработку заема из старшего разряда 
jmp exit_m m3: пор exitjn: 
pop si 
end


Информация о работе Контрольная работа по "Системному программному обеспечению"