乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      80386ASM程序設(shè)計(jì)基礎(chǔ)(一)

       壞壞 2006-12-09
         本期將連續(xù)推出若干篇有關(guān)80386ASM程序設(shè)計(jì)的基礎(chǔ),主要介紹80386ASM指令的詳細(xì)用法及如何在80386實(shí)模式下,保護(hù)模式下及虛擬8086模式編程以及80386下的段頁(yè)管理機(jī)制。   
         80386處理器是Intel公司80x86發(fā)展史上的里程碑,它不但兼容先前的8086/8088,80186,80286處理器,而且也為后來(lái)的486,Pentium(586),Pentium Pro(686)的發(fā)展打下了堅(jiān)實(shí)的基礎(chǔ),對(duì)于我們程序員來(lái)講更重要的是:我們關(guān)心80386在指令上到底有哪些擴(kuò)展呢?80386有哪些尋址方式呢?毫無(wú)疑問(wèn),它不但兼容了8086的所有指令,而且還對(duì)它們進(jìn)行增強(qiáng).
         有很多人問(wèn)CPU已經(jīng)發(fā)展到PentiumIIII,沒(méi)有必要學(xué)習(xí)80386的匯編。其實(shí)不然,80386處理器中的保護(hù)模式,虛擬8086模式以及地址的段頁(yè)管理機(jī)制,虛擬內(nèi)存這些都是以后處理器的核心。所以說(shuō)80386是后續(xù)發(fā)展處理器的基礎(chǔ),比如說(shuō)80486實(shí)質(zhì)上80386+80387協(xié)處理,這塊協(xié)處理器主要用于處理浮點(diǎn)運(yùn)算,Pentium處理器在80386指令的基礎(chǔ)上增加了57條指令,8個(gè)數(shù)據(jù)類(lèi)型,8個(gè)64位的寄存器來(lái)處理多媒體。從這一點(diǎn)來(lái)看,完全有必要了解80386ASM,這就好像學(xué)習(xí)80386,必須先要熟練掌握8086。
          1.80386的的寄存器:
          80386的寄存器可以分為8組:通用寄存器,段寄存器,指令指針寄存器,標(biāo)志寄存器,系統(tǒng)地址寄存器,控制寄存器,調(diào)試寄存器,測(cè)試寄存器,它們的寬度都是32位的。本篇主要介紹80386的寄存器。
          A1.General Register(通用寄存器)
          EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,它們的低16位就是8086的AX,BX,CX,DX,SI,DI,SP,BP,它們的含義如下:
          EAX:累加器
          EBX:基址寄存器
          ECX:計(jì)數(shù)器
          EDX:數(shù)據(jù)寄存器
          ESI:源地址指針寄存器
          EDI:目的地址指針寄存器
          EBP:基址指針寄存器
          ESP:堆棧指針寄存器
          這些寄存器可以將低16位單獨(dú)存取,也就是8086的AX,BX,CX,DX,SI,DI,SP,BP,在存取這些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP),它
      們的高16位不受影響,同時(shí)和8086一樣對(duì)于AX,BX,CX,DX這四個(gè)寄存器來(lái)講,可以單獨(dú)存取它們的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)
         
          A2:Segment Register(段寄存器)
          除了8086的4個(gè)段外(CS,DS,ES,SS),80386還增加了兩個(gè)段FS,GS,這些段寄存器都是16位的,它們的含義如下:
          CS:代碼段(Code Segment)
          DS:數(shù)據(jù)段(Data Segment)
          ES:附加數(shù)據(jù)段(Extra Segment)
          SS:堆棧段(Stack Segment)
          FS:附加段
          GS  附加段
         
          A3:Instruction Pointer(指令指針寄存器)
          EIP,它的低16位就是8086的IP,它存儲(chǔ)的是下一條要執(zhí)行指令的地址。
         
          A4:Flag Register(標(biāo)志寄存器)
          EFLAGS,和8086的16位標(biāo)志寄存器相比,增加了4個(gè)控制位,不過(guò)這4個(gè)控制位它們?cè)趯?shí)模下不起作,這四個(gè)控制位分別是:
          a.IOPL(I/O Privilege Level),I/O特權(quán)級(jí)字段,它的寬度為2bit,它指定了I/O指令的特權(quán)級(jí)。如果當(dāng)前的特權(quán)級(jí)別在數(shù)值上小于或等于IOPL,那么I/O指令可執(zhí)行。否則,將發(fā)生一個(gè)保護(hù)性異常。   
          b.NT(Nested Task):控制中斷返回指令I(lǐng)RET,它寬度為1位。NT=0,用堆棧中保存的值恢復(fù)EFLAGS,CS和EIP從而實(shí)現(xiàn)中斷返回;NT=1,則通過(guò)任務(wù)切換實(shí)現(xiàn)中斷返回。
          c.RF(Restart Flag):重啟標(biāo)志,它的寬度是1位。它主要控制是否接受調(diào)試故障。RF=0接受,RF=1忽略。如果你的程序每一條指令都被成功執(zhí)行,那么RF會(huì)被清0。而當(dāng)接受到一個(gè)非調(diào)試故障時(shí),處理器置RF=1。
          d.VM(Virtual Machine):虛擬8086模式(用軟件來(lái)模擬8086的模式,所以也稱(chēng)虛擬機(jī))。VM=0,處理器工作在一般的保護(hù)模式下;VM=1,工作在V8086模式下。
          其它16個(gè)標(biāo)志位的含義和8086一樣,在這里也重溫一遍:
          e.CF(Carry Flag):進(jìn)位標(biāo)志位,由CLC,STC兩標(biāo)志位來(lái)控制
          f.PF(Parity Flag):奇偶標(biāo)志位
          g.AF(Assistant Flag):輔助進(jìn)位標(biāo)志位
          h.ZF(Zero Flag):零標(biāo)志位
          i.SF(Singal Flag):符號(hào)標(biāo)志位
          j.IF(Interrupt Flag):中斷允許標(biāo)志位,由CLI,STI兩條指令來(lái)控制
          k.DF(Direction Flag):向量標(biāo)志位,由CLD,STD兩條指令來(lái)控制
          l.OF(Overflow Flag):溢出標(biāo)志位。
          控制寄存器,系統(tǒng)地址的寄存器,調(diào)試寄存器,測(cè)試寄存器將在介紹完80386分段,分頁(yè)管理機(jī)制后介紹,請(qǐng)繼續(xù)關(guān)注第二篇“80386存儲(chǔ)器的尋址方式”。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多