• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Ay's Blog@CNSSUESTC

            老把寄存器弄混~~特此記下這些 From 百度百科

              80386的寄存器資料? 省的我看匯編的時候都不知道寄存器咋個用~
              寄存器都是32-bits寬。
              A、通用寄存器
              下面介紹通用寄存器及其習慣用法。顧名思義,通用寄存器是那些你可以根據自己的意愿使用的寄存器,修改他們的值通常不會對計算機的運行造成很大的影響。通用寄存器最多的用途是計算。
              EAX(accumulator):通用寄存器。相對其他寄存器,在進行運算方面比較常用。在保護模式中,也可以作為內存偏移指針(此時,DS作為段 寄存器或選擇器)
              EBX(base):通用寄存器。通常作為內存偏移指針使用(相對于EAX、ECX、EDX),DS是默認的段寄存器或選擇器。在保護模式中,同樣可以起這個作用。
              ECX(count):通用寄存器。通常用于特定指令的計數。在保護模式中,也可以作為內存偏移指針(此時,DS作為 寄存器或段選擇器)。
              EDX(data):通用寄存器。在某些運算中作為EAX的溢出寄存器(例如乘、除)。在保護模式中,也可以作為內存偏移指針(此時,DS作為段 寄存器或選擇器)。
              同AX分為AH&AL一樣,上述寄存器包括對應的16-bit分組和8-bit分組。
              B、用作內存指針的特殊寄存器
              ESI(Source Index):通常在內存操作指令中作為“源地址指針”使用。當然,ESI可以被裝入任意的數值,但通常沒有人把它當作通用寄存器來用。DS是默認段寄存器或選擇器。
              EDI(Destination Index):通常在內存操作指令中作為“目的地址指針”使用。當然,EDI也可以被裝入任意的數值,但通常沒有人把它當作通用寄存器來用。DS是默認段寄存器或選擇器。
              EBP(Base Pointer):這也是一個作為指針的寄存器。通常,它被高級語言編譯器用以建造‘堆棧幀'來保存函數或過程的局部變量,不過,還是那句話,你可以在其中保存你希望的任何數據。SS是它的默認段寄存器或選擇器。
              注意,這三個寄存器沒有對應的8-bit分組。換言之,你可以通過SI、DI、BP作為別名訪問他們的低16位,卻沒有辦法直接訪問他們的低8位。
              C、段選擇器:
              實模式下的段寄存器到保護模式下搖身一變就成了選擇器。不同的是,實模式下的“段寄存器”是16-bit的,而保護模式下的選擇器是32-bit的。
              CS(Code Segment) 代碼段,或代碼選擇器。同IP寄存器(稍后介紹)一同指向當前正在執行的那個地址。處理器執行時從這個寄存器指向的段(實模式)或內存(保護模式)中獲取指令。除了跳轉或其他分支指令之外,你無法修改這個寄存器的內容。
              DS(Data Segment) 數據段,或數據選擇器。這個寄存器的低16 bit連同ESI一同指向的指令將要處理的內存。同時,所有的內存操作指令 默認情況下都用它指定操作段(實模式)或內存(作為選擇器,在保護模式。這個寄存器可以被裝入任意數值,然而在這么做的時候需要小心一些。方法是,首先把 數據送給AX,然后再把它從AX傳送給DS(當然,也可以通過堆棧來做).
              ES(Extra Segment) 附加段,或附加選擇器。這個寄存器的低16 bit連同EDI一同指向的指令將要處理的內存。同樣的,這個寄存器可以被裝入任意數值,方法和DS類似。
              FS F段或F選擇器(推測F可能是Free?)。可以用這個寄存器作為默認段寄存器或選擇器的一個替代品。它可以被裝入任何數值,方法和DS類似。
              GS G段或G選擇器(G的意義和F一樣,沒有在Intel的文檔中解釋)。它和FS幾乎完全一樣。
              SS(Stack Segment) 堆棧段或堆棧選擇器。這個寄存器的低16 bit連同ESP一同指向下一次堆棧操作(push和pop)所要使用的堆棧地址。這個寄存器也可以被裝入任意數值,你可以通過入棧和出棧操作來給他賦 值,不過由于堆棧對于很多操作有很重要的意義,因此,不正確的修改有可能造成對堆棧的破壞。
              * 注意 一定不要在初學匯編的階段把這些寄存器弄混。他們非常重要,而一旦你掌握了他們,你就可以對他們做任意的操作了。段寄存器,或選擇器,在沒有指定的情況下都是使用默認的那個。這句話在現在看來可能有點稀里糊涂,不過你很快就會在后面知道如何去做。
              指令指針寄存器:
              EIP(Instruction Pointer) 這個寄存器非常的重要。這是一個32位寬的寄存器 ,同CS一同指向即將執行的那條指令的地址。不能夠直接修改這個寄存器的值,修改它的唯一方法是跳轉或分支指令。(CS是默認的段或選擇器)

              

            posted on 2009-02-01 16:39 __ay 閱讀(427) 評論(0)  編輯 收藏 引用 所屬分類: 操作系統&&內核

            亚洲国产成人久久综合野外| 久久精品亚洲一区二区三区浴池| www久久久天天com| 国产精品美女久久久久网| 美女久久久久久| 久久99国内精品自在现线| 青青青国产精品国产精品久久久久| 超级碰久久免费公开视频| 亚洲欧美精品一区久久中文字幕| 一本一道久久综合狠狠老| 色综合久久精品中文字幕首页| 欧美久久一级内射wwwwww.| 狠狠色丁香久久婷婷综合五月 | 久久99精品国产99久久6| 久久人人爽人人精品视频| 久久综合国产乱子伦精品免费| 国产精品99久久不卡| 色88久久久久高潮综合影院| 狠狠综合久久综合中文88| 69SEX久久精品国产麻豆| 漂亮人妻被中出中文字幕久久| 青青国产成人久久91网 | 91久久成人免费| 久久人爽人人爽人人片AV| 久久人与动人物a级毛片| 久久久久国色AV免费看图片| 精品国产VA久久久久久久冰 | 亚洲综合伊人久久大杳蕉| 久久精品无码免费不卡| 国产一区二区三区久久精品| 久久天天躁狠狠躁夜夜96流白浆 | 色欲av伊人久久大香线蕉影院| 久久久久亚洲精品男人的天堂| 青青草国产成人久久91网| 久久久91精品国产一区二区三区| 久久精品国产亚洲av日韩| 色欲久久久天天天综合网精品 | 狠狠色丁香久久婷婷综合蜜芽五月 | 日韩精品无码久久一区二区三| 精品久久综合1区2区3区激情| 精品国产热久久久福利|