INT 31h, AX = 0 — Выделить локальные дескрипторы
Ввод: | АХ = 0 СХ = количество необходимых дескрипторов |
Вывод: | если CF = 0, АХ = селектор для первого из заказанных дескрипторов |
Эта функция только выделяет место в таблице LDT, создавая в ней дескриптор сегмента данных с нулевыми базой и лимитом, так что пользоваться им пока нельзя.
INT 31h, AX = 1 — Удалить локальный дескриптор
Ввод: | АХ = 1 ВХ = селектор |
Вывод: | CF = 0, если не было ошибки |
Эта функция действует на дескрипторы, созданные при переключении в защищенный режим, и на дескрипторы, созданные функцией 0, но не на дескрипторы, созданные функцией 2.
INT 31h, АХ = 2 — Преобразовать сегмент в дескриптор
Ввод: | АХ = 2 ВХ = сегментный адрес (A000h — для видеопамяти, 0040h — для данных BIOS) |
Вывод: | если CF = 0, АХ = готовый селектор на сегмент, начинающийся с указанного адреса, и с лимитом 64 Кб |
Так, программы в защищенном режиме могут обращаться к различным областям памяти ниже границы 1 Мб, например для прямого вывода на экран.
INT 31h, AX = 6 — Определить базу сегмента
Ввод: | АХ = 6 ВХ = селектор |
Вывод: | если CF = 0, CX:DX = 32-битный линейный адрес начала сегмента |
INT 31h, AX = 7 — Сменить базу сегмента
Ввод: | АХ = 7 ВХ = селектор CX:DX = 32-битная база |
Вывод: | CF = 0, если не было ошибок |
INT 31h, AX = 8 — Сменить лимит сегмента
Ввод: | АХ = 8 ВХ = селектор CX:DX = 32-битный лимит (длина сегмента минус 1) |
Вывод: | CF = 0, если не было ошибок (чтобы определить лимит сегмента, можно пользоваться командой LSL) |
INT 31h, AX = 9 — Сменить права доступа сегмента
Ввод: | АХ = 9 ВХ = селектор CL = права доступа/тип (биты 15 – 8 слова 2 дескриптора) СН = дополнительные права (биты 7 – 4 соответствуют битам 7 – 4 слова 3 дескриптора, биты 3 – 0 игнорируются) |
Вывод: | CF = 0, если не было ошибок (чтобы определить права доступа сегмента, можно пользоваться командой LAR) |
Ввод: | АХ = 000Ah ВХ = селектор (сегмента кода или данных) |
Вывод: | если CF = 0, АХ = селектор на сегмент данных с теми же базой и лимитом |
Ввод: | АХ = 000Bh ВХ = селектор ES:EDI = селектор:смещение 8-байтного буфера |
Вывод: | если CF = 0, в буфер помещен дескриптор |
Ввод: | АХ = 000Ch ВХ = селектор ES:EDI = адрес 8-байтного дескриптора |
Вывод: | CF = 0, если не было ошибок |
Ввод: | АХ = 000Dh ВХ = селектор на один из первых 16 дескрипторов (значения селектора 04h – 7Ch) |
Вывод: | CF = 0, если нет ошибок (CF = 1 и АХ = 8011h, если этот дескриптор занят) |