Я пытаюсь инициализировать регистры ss
, sp
и bp
в реальном режиме x86. Учитывая, что стек растет от физического адреса B
до максимального размера S
байтов, правильна ли следующая процедура инициализации?
- Установить
ss
в (B - S) / 16
. - Установите
bp
на S
, чтобы ss:bp
было B
. - Установите
sp
на bp
, инициализируя пустой стек.
Выше я предположил, что B - S
оказывается физическим адресом, выровненным по абзацу, и что B
и S
делятся на 2, поэтому выравнивание слов гарантировано.