如何在保护模式下更新数据段选择器

时间:2019-01-29 15:40:56

标签: assembly x86 intel gdt

我想更新数据段选择器以指向GDT中的其他条目。但是由于我对汇编语言很陌生,所以我无法在代码中做到这一点。但是,我已经使用以下汇编指令更新了代码段选择器:

ljmp $(GDT_TABLE_INDEX), $(1f)     //This instruction simply points code segment to some other entry in GDT and move to next label.

是否有一些类似或替代的指令来更新数据段选择器?

1 个答案:

答案 0 :(得分:3)

您可以使用data.table指令更改数据段选择器。例如,如果要将mov设置为ds,请使用:

0x1234

请注意,由于没有mov $1234, %ax mov %ax, %ds 指令,因此您首先必须将选择器的编号移到通用寄存器中。您可能还会发现将mov imm, sreg插入段寄存器很方便:

pop