Автор работы: Пользователь скрыл имя, 15 Февраля 2013 в 07:58, контрольная работа
1. Для чего каждая задача получает соответствующий дескриптор? Какие поля, как правило, содержатся в дескрипторе процесса (задачи)? Что такое «контекст задачи»?
2. Перечислите директивы резервирования и инициализации данных в ассемблере?
3. Составить программу на ассемблере для сложения чисел размером N байт без учета знака.
4. Привести пример на использование команды ввода-вывода в порт на языке ассемблер.
5. Приведите пример использования команды пересылки цепочек на языке ассемблер.
МИНИСТЕРСТВО НАУКИ И ОБРАЗОВАНИЯ РЕСПУБЛИКИ КАЗАХСТАН
КАСПИЙСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Институт морских технологий
Кафедра Вычислительная
техника и программное
Контрольная работа
по дисциплине: Системное программное обеспечение
цит и до рег№00577 5.12.12г
Каф № 1292 от 7,12,12
Выполнил: студент гр. ВТиПО-11-5
Проверил: к.п.н., доцент
Номер зачетной книжки 5/11-0284
Вариант 84
Актау 2012 г.
Вариант 84
1. Для чего
каждая задача получает
Какие поля, как правило, содержатся в дескрипторе процесса
(задачи)? Что такое «контекст задачи»?
1. Дескриптор ОС реального времени
В ОС реального времени количество процессов фиксируется, поэтому
полезно определить количество дескрипторов процессов. Каждый дескриптор процессов постоянно располагается в оперативной памяти, с целью ускорить работу диспетчера задач, для более эффективной обработки данных. В системах реального времени целесообразно иметь постоянные дескрипторы задач, полностью или всегда существующие в системе, независимо от того, поступают на них требования или нет. каждая конкретная задача обладает некоторой собственной областью оперативной памяти, независимо от того исполняется задача или нет. Это так наз. ОЗУ резидентные задачи. Эта область может использоваться для хранения данных полученных задачей ранее. Данные могут хранится в ней тогда, когда задача находится в состоянии ожидания или бездействия.
Аппаратная поддержка
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_
:сложения неупакованных 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_
;Выход: 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
Информация о работе Контрольная работа по "Системному программному обеспечению"