ret
- инструкция для возврата из процедуры. Таким образом, в основном он вставляет адрес возврата из стека в регистр EIP.
префикс l
здесь, чтобы сказать, что это дальний возврат из процедуры. В этом случае инструкция сначала вставляет значение из стека в регистр EIP, а затем вставляет второе значение в регистр CS.
здесь указан суффикс w
, потому что на этом шаге мы работаем в реальном режиме, а операнды имеют ширину 16 бит.
Точный код:
pushw %ds
pushw $6f
lretw
6:
6:
очень важен здесь. Итак, что это делает: поместите значение ds в стек, вставьте адрес метки 6
в стек и затем вызовите эту инструкцию lretw
. Таким образом, в основном, он загрузит адрес метки 6
в регистр указателя инструкций и загрузит регистр cs
со значением регистра ds
. Так что это всего лишь прием для продолжения выполнения с меткой 6
с изменением значения регистра cs
.
Вы должны загрузить http://www.intel.com/design/intarch/manuals/243191.htm, который дает точные детали для всех инструкций, включая псевдокод, который подробно описывает, что делает каждая инструкция.