如何在保护模式下更新数据段选择器
How to update Data Segment Selector in Protected mode
我想更新数据段选择器以指向 GDT 中的其他条目。但是由于我对汇编很陌生,所以我不能在我的代码中这样做。但是我已经使用以下汇编指令更新了代码段选择器:
ljmp $(GDT_TABLE_INDEX), $(1f) //This instruction simply points code segment to some other entry in GDT and move to next label.
是否也有一些类似或替代的指令来更新数据段选择器?
您可以使用mov
指令更改数据段选择器。例如,如果要将 ds
设置为 0x1234
,请使用:
mov 34, %ax
mov %ax, %ds
请注意,没有 mov imm, sreg
指令,因此您首先必须将选择器的编号移动到通用寄存器中。您可能还会发现 pop
进入段寄存器很方便:
push 34
pop %ds
我想更新数据段选择器以指向 GDT 中的其他条目。但是由于我对汇编很陌生,所以我不能在我的代码中这样做。但是我已经使用以下汇编指令更新了代码段选择器:
ljmp $(GDT_TABLE_INDEX), $(1f) //This instruction simply points code segment to some other entry in GDT and move to next label.
是否也有一些类似或替代的指令来更新数据段选择器?
您可以使用mov
指令更改数据段选择器。例如,如果要将 ds
设置为 0x1234
,请使用:
mov 34, %ax
mov %ax, %ds
请注意,没有 mov imm, sreg
指令,因此您首先必须将选择器的编号移动到通用寄存器中。您可能还会发现 pop
进入段寄存器很方便:
push 34
pop %ds