Assembly 如何在保护模式下更新数据段选择器
我想更新数据段选择器以指向GDT中的其他条目。但由于我对汇编非常陌生,我无法在代码中完成它。但是,我使用以下汇编指令更新了代码段选择器:Assembly 如何在保护模式下更新数据段选择器,assembly,x86,intel,gdt,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. 是否也有类似或替代的指令来更新数据段选择器?您可以使用mov指令更改数据段选择器。例如,如果要将
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 $1234, %ax
mov %ax, %ds
请注意,没有mov imm,sreg
指令,因此首先必须将选择器的编号移动到通用寄存器中。您可能还发现将弹出到段寄存器中非常方便:
push $1234
pop %ds
谢谢。真的很有帮助。