首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用LIDT创建IDT我在Intel-Atom 32位上工作(汇编AT&T)

如何使用LIDT创建IDT我在Intel-Atom 32位上工作(汇编AT&T)
EN

Stack Overflow用户
提问于 2011-09-30 05:36:21
回答 1查看 608关注 0票数 0

如何使用LIDT创建IDT我在Intel-Atom 32位上工作(汇编AT&T)。我使用MocroC操作系统作为操作系统,我这样做了,但它不工作:

代码语言:javascript
复制
    Load_IDT:
push    %ebp    //save the context to swith back
mov     %esp,%ebp

movw    $256*8, -6(%esp) //256 ISR possible
movl    $IDT, -4(%esp)   //IDT is a table of 256*8bytes
lidt    -6(%esp)

pop     %ebp //Return to the calling function
ret



    static void fill_interrupt(unsigned char num, unsigned int base, unsigned short sel, unsigned char flags)
{
    unsigned short *Interrupt_Address;

    /*address = idt_ptr.base + num * 8 byte*/
    Interrupt_Address = (unsigned short *)(idt_ptr.base + num*8);

    *(Interrupt_Address) = base&0xFFFF;
    *(Interrupt_Address+1) = sel;
    *(Interrupt_Address+1) = (flags>>4)&0xFF00;
    *(Interrupt_Address+1) = (base>>16)&0xFFFF;

}


/*Change the address of idt_entries table */
fill_interrupt(ISR_Nbr,(unsigned int) isr33, 0x08, 0x8E);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-28 21:52:20

Resolved :),因为有BIOS,所以它已经构建了GDT/IDT。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7603667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档