阅读:1041回复:0
PB编译16位汇编 出现问题
最近在弄wince下的ACPI S3,
在bios跳转到我写的wakeup routine时,是real-mode,我自建了GDT,进入protect-mode,far jmp后出现问题,贴上一小段code, 是由pb 5.0编译 _TEXT SEGMENT PAGE PUBLIC USE16 'CODE' ... mov eax, cr0 ; cr0:00000010h or eax, 1h mov cr0, eax jmp Flush Flush: //far jump to wakeup_pmode_return OpPrefix db 0EAh ; Far jump forces a selector lookup PModeLbl: dd 0 ; will be OFFSET wakeup_pmode_return dw CODE_LINEAR_IDX wakeup_pmode_return: mov ax, ETBIOS_DATA_LINEAR_IDX mov ds, ax mov es, ax mov eax, 54321h 此时,读出来eax的值不是54321h, 如果我将上面一行code改为: mov eax, 4321h, 读出来的值是4321h, 这是什么原因呢? |
|