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

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

    • 分享

      80386ASM程序設(shè)計基礎(chǔ)(六)

       壞壞 2006-12-09

      高級語言支持,條件字節(jié)設(shè)置指令
        AA.高級語言支持指令,開始于80186,主要是用來簡化高級語言的某些特征,總共有3條指令:ENTER,LEAVE,BOUND
        a.ENTER,LEAVE,建立與釋放堆棧框架命令。在C語言中,棧不僅用來向函數(shù)傳遞入口參數(shù),而且在函數(shù)內(nèi)部的局部變量也存放在棧中。為了準(zhǔn)確地存取這些這些局變量和準(zhǔn)確地獲得入口參數(shù),就需要建立堆??蚣?,先看一個小程序:
        //C Programming-Language
        int sum(int x,int y)
        {
          int sum;
          sum=x+y;
          return sum;
        }
        //The corresponding ASM codes lists below
        _sum proc near;注意C語言中函數(shù)參數(shù)的入棧方式是從右向左,即先是參數(shù)y入棧,再是x入棧,再是函數(shù)的返回地址入棧
          push bp
          mov bp,sp;建立堆棧框架
          sub sp,2
       
          mov ax,word ptr [bp+4];取參數(shù)x
          add ax,word ptr [bp+6];加參數(shù)y
          mov word ptr [bp-2],ax
          mov ax,word ptr [bp-2]
          mov sp,bp;釋放??蚣?br>    pop bp
          ret
        _sum endp
       此時棧頂?shù)氖疽鈭D是:
       |----------------------|
       |         BP           |<====SP
       |----------------------|    
       |     函數(shù)返回地址     |<====BP+2
       |----------------------|
       |        參數(shù)x         |<====BP+4
       |----------------------|
       |        參數(shù)y         |<====BP+6
       |----------------------|
       |       ......         |<====BP+8
       |----------------------|
       |       ........       |<====BP+n,n是一能被2整除的數(shù)
       |----------------------|
       如果用建立和釋放堆??蚣苤噶?,那么對應(yīng)的匯編程序應(yīng)該是:
       _sum proc near
          enter 2,0;建立??蚣?br>    mov ax,word ptr [bp+4];取參數(shù)x
          add ax,word ptr [bp+6];加參數(shù)y
          mov word ptr [bp-2],ax
          mov ax,word ptr [bp-2]
          leave;釋放??蚣?br>    ret
       _sum endp
       b.建立棧框架指令ENTER,格式如下:ENTER  CNT1,CNT2。其中CNT1表示框架的大小,即子程序中需要放在棧中局部變量的字節(jié)數(shù);CNT2是立即數(shù),表示子程序嵌套級別,即從調(diào)用框架復(fù)制到當(dāng)前框架的指針數(shù)。在立即數(shù)CNT2為0時,ENTER指令的實過程是:
       PUSH BP
       SP=>BP
       SP<=SP-CNT1
       c.釋放??蚣苤噶頛EAVE,其具體實現(xiàn)過程:
       8086:
       BP=>SP
       POP BP
       80386:
       EBP=>ESP
       POP EBP
       d.ENTER和LEAVE指令均不影響標(biāo)志寄存器中的各標(biāo)志位,同時LEAVE指令只負(fù)責(zé)釋放??蚣埽⒉回?fù)責(zé)函數(shù)返回。因此,要在LEAVE指令后安排一條返回指令。

       BB.條件字節(jié)設(shè)置指令
       這是80386新增的一組指令集,將會在后面全部列表出來。條件字節(jié)設(shè)置指令的格式:
       SETxx OPRD
       xx是助記符的一部分,OPRD只能是8位的寄存器或存儲單元。
       eg:
       SETO AL;表示當(dāng)溢出標(biāo)志位為1時,即OF=1,將AL置1,否則AL清0
       SETNC CH;表示當(dāng)CF=0時,將CH置1,否則將CH清0
       SETNA BYTE PTR [100];表示當(dāng)AF=0,將DS:[100]這一個字置1,否則將它清0
       a.SETZ OPRD;等于0時(ZF=1),置OPRD為1,否則清0
       b.SETE OPRD;同a
       c.SETNZ OPRD;不等于0時(ZF=0),置OPRD為1,否則清0
       d.SETNE OPRD;同c
       e.SETS  OPRD;為負(fù)數(shù)時(SF=1)置OPRD為1,否則清0
       f.SETNS OPRD;同e正好相反(SF=0)
       g.SETO  OPRD;OF=1,置OPRD為1,否則清0
       h.SETNO OPRD;同g正好相反
       i.SETP  OPRD;偶(PF=1)置1
       j.SETPE OPRD;同i
       k.SETNP OPRD;奇(PF=0)置1
       l.SETPO OPRD;同k
       m.SETB OPRD;低于置OPRD為1,否則清0,這是針對無符號數(shù)的
       n.SETNAE OPRD;不高于即低于或等于時置OPRD為1,否則清0,這是針對無符號數(shù)的
       o.SETC OPRD;CF=1,置OPRD為1,否則清0
       p.SETNB OPRD;高于或等于時,置OPRD為1,否則清0,這是針對無符號數(shù)的
       q.SETAE OPRD;高于時置OPRD為1,否則清0,這是針對無符號數(shù)的
       r.SETNC OPRD;CF=0時,置OPRD為1,否則清0,這是針對無符號數(shù)的
       s.SETBE OPRD;低于或等于時,置OPRD為1,否則清0,這是針對無符號數(shù)的,CF|ZF=1
       t.SETNA OPRD;同s,這是針對無符號數(shù)的,CF|ZF=1
       u.SETNBE OPRD;高于時置OPRD為1,否則清0,這是針對無符號數(shù)的,CF OR ZF=0
       v.SETA OPRD;同u,這是針對無符號數(shù)的,CF OR ZF=0
       w.SETL OPRD;小于時,置OPRD為1,否則清0,這是針對有符號數(shù)的
       x.SETNGE OPRD;同w,這是針對有符號數(shù)的
       y.SETNL OPRD;大于或等于時,置OPR為1,否則清0,這是針對有符號數(shù)的
       z.SETGE OPRD;同y,這是針對有符號數(shù)的
       a1.SETLE OPRD;小于或等于時,置OPRD為1,否則清0,這是針對有符號數(shù)的
       a2.SETNG OPRD;同a1,這是針對有符號數(shù)的
       a3.SETNLE;大于時,置OPRD為1,否則清0,這是針對有符號數(shù)的
       a4.SETG;同a3,這是針對有符號數(shù)的

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

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多