2012-01-01 10 views

ответ

2

Ваш сегмент стека лучше иметь действительное значение, когда вы вызываете программное прерывание (или сделать какой-либо вызов,), так как int (или call) инструкция необходим действительный стек, в котором хранится обратный адрес вашего кода. Кроме того, вызываемая подпрограмма обычно ожидает, что существует действительный стек, в котором он может push некоторых регистров для выполнения своей работы.

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

+0

Спасибо ~ Я понимаю важность инициализации сегмента стека. И что такое «первое периодическое прерывание»? – sam

+0

Если у меня нет начального сегмента стека, сколько я могу использовать стек? Сколько я могу установить для сегмента стека? – sam

+1

IBM PC имеет микросхему периодического прерывания, которая периодически генерирует аппаратные прерывания. (Около 50 раз в секунду.) Когда происходит один из этих прерываний, должен быть допустимый стек, иначе у вас есть сбой. Вот почему мы всегда отключаем прерывания ('cli'), прежде чем манипулируем регистром сегмента стека или регистром указателя стека и снова включаем их (' sti'). –