hovahyuan
驱动牛犊
驱动牛犊
  • 注册日期2006-05-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1041回复:0

PB编译16位汇编 出现问题

楼主#
更多 发布于:2008-04-21 15:32
最近在弄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, 这是什么原因呢?

游客

返回顶部