Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка при установке TSS.

4.4K
04 июня 2007 года
erzik
47 / / 08.04.2006
Здраствуйте.
Подскажите, что не так.
Код:
set_TSS:
push eax
push bx
push di
push es

push eax
push ecx
push di


mov ax,TSS_area
;mov es,ax

xor eax,eax
mov cx,26h
cld
;rep stosd


pop di
pop ecx
pop eax

mov [es:di+28],eax
mov [es:di+32],ebx
mov [es:di+36],ecx
mov [es:di+56],edx

mov al,8
mov [es:di+76],al
add al,8
mov [es:di+80],al
add al,8
mov [es:di+84],al

pop es
pop di
pop bx
pop eax
ret

В коде закомментированы 2 команды. Если раскомментить хоть одну из них, то VMware выдает ошибку "... kernel stack fault..." =( Я в защищенном режиме, страничная адресация включена, сегмент стека не создан (т.к. ошибка вроде не из-за него).
Помогите плз.

P.S. Если у кого есть examp_9.zip из sasm.narod.ru-мультизадачность-реализация мультизадачности, выложите ссылочку.
261
04 июня 2007 года
ahilles
1.5K / / 03.11.2005
довольно таки непонятный код.
если оставить закоментаренной первую команду, то невозможна работа строк
mov [es:di+28],eax
mov [es:di+32],ebx
........
вторую команду можно раскоментарить только в том случае когда раскоментарена первая, потому что ты будешь обнулять не то что надо? (как я понял, она обнуляет первую часть TSS)
если сегмент стека не создан, тогда как ты собираешься использовать команды push/pop
4.4K
04 июня 2007 года
erzik
47 / / 08.04.2006
Непонятно, почему эти команды вызывают ошибку. Пока ошибка есть, даже не очень волнует смысл функции, главное, понять, что не так. Этот код взят из sasm.narod.ru-мультизадачность-реализация мультизадачности (кстати, для лучшего понимания темы я и ищу от туда пример, который куда-то от туда делся...). Как ни странно, push & pop видимо работают, раз не вызывают ошибки, правда, непонятно как. Кстати, если сделать сегмент стека, то push & pop должны его определять и использовать автоматически?
252
05 июня 2007 года
koderAlex
1.4K / / 07.09.2005
Цитата: erzik
Здраствуйте.
Подскажите, что не так.
В коде закомментированы 2 команды. Если раскомментить хоть одну из них, то VMware выдает ошибку "... kernel stack fault..." =( Я в защищенном режиме, страничная адресация включена, сегмент стека не создан (т.к. ошибка вроде не из-за него).
Помогите плз.
P.S. Если у кого есть examp_9.zip из sasm.narod.ru-мультизадачность-реализация мультизадачности, выложите ссылочку.



как определена TSS_area ?

4.4K
05 июня 2007 года
erzik
47 / / 08.04.2006
т.к. в статье об этом особо ничего не писалось, то определил так:
 
Код:
...весь код...
...всякие строки для вывода на экран
TSS_area:
дальше ничего нету
252
05 июня 2007 года
koderAlex
1.4K / / 07.09.2005
Цитата: erzik
т.к. в статье об этом особо ничего не писалось, то определил так:
 
Код:
...весь код...
...всякие строки для вывода на экран
TSS_area:
дальше ничего нету



в том то и дело :)
"TSS_area:" - это вообще определение метки .

4.4K
05 июня 2007 года
erzik
47 / / 08.04.2006
хм... а как тогда её определить? я подумал, что раз после нее никакой нужной информации (кода, данных) нету, то и портиться нечему.
1.6K
05 июня 2007 года
Vov4ick
476 / / 01.02.2007
Почему ничего не кладётся в DI перед STOSB?
261
05 июня 2007 года
ahilles
1.5K / / 03.11.2005
если TSS_area просто метка тогда:
 
Код:
mov ax,TSS_area
;mov es,ax

в корне неверный код!
в сегментный регистр, надо поместить селектор а не смещение!
а общем всю процедуру set_TSS можно выкинуть :)
4.4K
05 июня 2007 года
erzik
47 / / 08.04.2006
to Vov4ick
вместо mov es,ax написал mov di,ax и ошибка пропала, пасиб.
to ahilles
Я пытаюсь многозадачность включить и нашел куски кода в выше данной мною сылке. Там была такая функция set_TSS, ну ctrl+C & ctrl+V... только вот приходится додумывать, что где не так и почему не работает.

!!! Если у кого-нибудь есть пример examp_9.zip из sasm.narod.ru-мультизадачность-реализация мультизадачности, выложите ссылочку пожалуйста !!!
252
06 июня 2007 года
koderAlex
1.4K / / 07.09.2005
Цитата: erzik
to Vov4ick
вместо mov es,ax написал mov di,ax и ошибка пропала, пасиб.
to ahilles
Я пытаюсь многозадачность включить и нашел куски кода в выше данной мною сылке. Там была такая функция set_TSS, ну ctrl+C & ctrl+V... только вот приходится додумывать, что где не так и почему не работает.

!!! Если у кого-нибудь есть пример examp_9.zip из sasm.narod.ru-мультизадачность-реализация мультизадачности, выложите ссылочку пожалуйста !!!


ТСС - структура данных описывающих некоторый процесс .
прежде чем писать что нить , стоило бы почитать книжки и понять что к чему . а копируя куски чужого кода нифига не поймёш .

4.4K
06 июня 2007 года
erzik
47 / / 08.04.2006
Теорию я читал, но еще не дошел до того уровня, чтобы по теории сразу писать код, тяжело пока без примеров...
261
06 июня 2007 года
ahilles
1.5K / / 03.11.2005
Цитата: koderAlex
ТСС - структура данных описывающих некоторый процесс .


небольшая поправка:
ТСС - структура данных описывающих некоторый ПОТОК!

252
06 июня 2007 года
koderAlex
1.4K / / 07.09.2005
необязательно .
260
06 июня 2007 года
Ramon
1.1K / / 16.08.2003
Task State Segment(Сегмент Состояния Задачи)

PS: Сие в контексте и терминологии аппаратного преключения задач процов IA-32
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог