• <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 閱讀(419) 評論(0)  編輯 收藏 引用 所屬分類: 操作系統&&內核

            东京热TOKYO综合久久精品| 久久99精品久久只有精品| 久久香蕉国产线看观看猫咪?v| 久久久久久A亚洲欧洲AV冫| 久久综合视频网| 久久久久人妻一区精品色 | 一本久久a久久精品亚洲| 亚洲熟妇无码另类久久久| 久久精品国产91久久综合麻豆自制| 国产福利电影一区二区三区,免费久久久久久久精 | 伊人久久无码精品中文字幕| 亚洲va久久久噜噜噜久久男同| 99久久免费国产特黄| 午夜精品久久久久久| 久久99国产精品一区二区| 狠狠色丁香久久婷婷综合| 精品无码久久久久久久动漫| 久久亚洲AV成人无码电影| 免费无码国产欧美久久18| 精品久久久久久久中文字幕 | 成人综合伊人五月婷久久| 2021国产精品久久精品| 久久久久亚洲AV成人网| 久久久久免费精品国产| 国产精品美女久久久久| 性欧美丰满熟妇XXXX性久久久 | 欧美喷潮久久久XXXXx| 伊人久久亚洲综合影院| 免费精品久久久久久中文字幕| 久久香蕉一级毛片| 久久99国产精品二区不卡| 97久久婷婷五月综合色d啪蜜芽| 四虎国产精品成人免费久久| 久久国产高清一区二区三区| 欧美伊香蕉久久综合类网站| 狠色狠色狠狠色综合久久| 97久久综合精品久久久综合| 97久久天天综合色天天综合色hd| 久久亚洲国产成人精品性色| 久久久久久九九99精品| 99热成人精品热久久669|