Uploaded by Велес В

Защищенный режим assembler

advertisement
МИНОБРНАУКИ РОССИИ
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Чувашский государственный университет имени И.Н. Ульянова»
Факультет информатики и вычислительной техники
Кафедра вычислительной техники
Отчет по лабораторной работе №2
по дисциплине: «ЭВМ и периферийные устройства»
«ЗАЩИЩЕННЫЙ РЕЖИМ МИКРОПРОЦЕССОРОВ INTEL X86»
Вариант № 20
Выполнила: студентка гр.ИВТ-42-19
Сабитов Илназ Маратович
Проверила: доцент
Андреева Антонина Аркадьевна
Чебоксары 2021
Цель работы: изучить и закрепить на практике теоретические сведения по
защищенному режиму микропроцессоров intel x86, написать обработчик ошибки
переполнения.
Текст задания: 6. Написать обработчик прерывания INT 18d, выводящий на экран
байт прав доступа заданного дескриптора в двоичной форме. Селектор дескриптора
задается в качестве параметра при вызове этой функции. Для получения байта прав
доступа можно воспользоваться командой LAR.
Граф-схема:
Текст программы:
...
Mess
MessError
MessAr
...
Int18_proc
db 'Protected Mode$'
db 'Error ZF = 0$'
db 'AR = 00000000b$'
Proc Near
lar
di,si
jnz
mov
lea
add
mov
cx,
bx,
bx,
ax,
outError
8
MessAr
5
15
; обработчик прерывания
; загрузить байт прав доступа
; дескриптора(устанавливает zf)
; проверить zf
; счетчик байт = 8 бит
; исходное сообщение
; смещение для изменения
; байт прав доступа с 15 по 7 бит
start1:
bt di, ax
mov dl,'0'
рандомного значения
adc dl, 0
mov [bx],dl
next1:
dec ax
inc bx
loop start1
дескриптора
; проверка бита( установка cf)
; заносим символ 0 чтобы не было
; прибавляем флаг cf
; заменяем символ на символ dl
;
;
; повторять с 15 по 7 бит
lea bx, MessAr
jmp Print
; загрузить измененную строку
outError:
lea bx,MessError
; загрузить сообщение об ошибке
Print:
mov dx,200Ch
int 39d
iret
Int18_proc endp
; Координаты вывода
; вывод
; возврат
...
MY_PROC
PROC
pusha
push
push
pop
es
Video_Desc
es
mov
dh,0fh
call
Paint_Screen
mov
ax,Cs_Data
mov
ds,ax
lea
bx,Mess
mov
dx,200Bh
int
39d
mov
si, Cs_Code
;mov si, 50*8
нельзя получить прав доступа
int
18d
pop
es
popa
ret
MY_PROC ENDP
...
;
;
;
;
В регистр ES заносим селектор сегмента видеопамяти
Очищаем экран
; DS - сегмент данных
; Адрес сообщения
; Координаты вывода
; Вывод строки на экран
;
; error адрес кода, откуда
Результаты выполнения программы:
Выводы по работе: в процессе выполнения лабораторной работы были изучены и
закреплены на практике теоретические сведения по защищенному режиму
микропроцессоров intel x86, написан обработчик ошибки переполнения.
1 байт прав доступа
Ответил
2 побитно расшифровать байт прав доступа Cs_Code
AR=1001011b
AR=10011011
P
DPL
1
0
0
Бит
Уровень
присутствия привелегий
1
1
1
1
Признак
дескр сегм
кода
C
0
Бит
подчинения
R
1
Бит
считываемого
сегмента
A
1
Бит
обращения
Download