<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] ## 寄存器用途 1. 可將寄存器內的數據執行算術及邏輯運算; 2. 存于寄存器內的地址可用來指向內存的某個位置,即尋址; 3. 可以用來讀寫數據到電腦的周邊設備。 ## 數據寄存器 8086 8086 有14個16位寄存器,這14個寄存器按其用途可分為:**通用寄存器**、**指令指針**、**標志寄存器**、**段寄存器**等4類 ### 通用寄存器有8個 又可以分成2組,一組是數據寄存器(4個),另一組是指針寄存器及變址寄存器(4個)。 數據寄存器分為: | 數據寄存器 | 說明 | | --- | --- | | AH&AL=AX(accumulator)|累加寄存器: 常用于運算;在乘除等指令中指定用來存放操作數,另外, 所有的I/O指令都使用這一寄存器與外界設備傳送數據. | | BH&BL=BX(base)|基址寄存器: 常用于地址索引; | | CH&CL=CX(count)|計數寄存器: 常用于計數; 常用于保存計算值,如在移位指令,循環(loop) 和串處理指令中用作隱含的計數器. | | DH&DL=DX(data)|數據寄存器: 常用于數據傳遞。 | >他們的特點是,這4個16位的寄存器可以分為高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。 這2組8位寄存器可以分別尋址,并單獨使用。 EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元 另一組是指針寄存器和變址寄存器,包括: | 指針寄存器和變址寄存器 | 說明 | | --- | --- | |SP(Stack Pointer):堆棧指針 |與段寄存器SS配合使用, 可指向目前的堆棧位置; | |BP(Base Pointer):基址指針寄存器 | 可用作段寄存器SS的一個相對基址位置; | |SI(Source Index):源變址寄存器 |可用來存放相對于段寄存器DS段之源變址指針 ; | |DI(Destination Index):目的變址寄存器 |可用來存放相對于 段寄存器ES 段之目的變址指針。 | > 這4個16位寄存器只能按16位進行存取操作, 主要用來形成操作數的地址, 用于堆棧操作和變址運算中計算操作數的有效地址。 ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元 16位寄存器前面加個E表示80386及以后的32位IA-32微處理器采用的32位寄存器。 總結一下: | 寄存器 | 16位 | 32位 | 64位 | | --- | --- | --- | --- | | 累加寄存器 | AX | EAX | RAX | | 基址寄存器 | BX | EBX | RBX | | 計數寄存器 | CX | ECX | RCX | | 數據寄存器 | DX | EDX | RDX | | 堆棧基指針 | BP | EBP | RBP | | 變址寄存器 | SI | ESI | RSI | | 堆棧頂指針 | SP | ESP | RSP | | 指令寄存器 | IP | EIP | RIP | ### 指令指針IP(Instruction Pointer) 指令指針IP是一個16位專用寄存器, 它指向當前需要取出的指令字節, 當BIU從內存中取出一個指令字節后,IP就自動加1, 指向下一個指令字節。注意, IP指向的是指令地址的段內地址偏移量,又稱偏移地址( Offset Address)或有效地址(EA,Effective Address)。 ### 標志寄存器FR(Flag Register) 8086有一個18位的標志寄存器FR, 在FR中有意義的有9位,其中6位是狀態位,3位是控制位。 | 標志寄存器 | 說明 | | --- | --- | | OF?|溢出標志位OF用于反映有符號數加減運算所得結果是否溢出。 如果運算結果超過當前運算位數所能表示的范圍,則稱為溢出, OF的值被置為1,否則,OF的值被清為0。 | |DF|方向標志DF位用來決定在串操作指令執行時有關指針寄存器 發生調整的方向。? | | IF|中斷允許標志IF位用來決定CPU是否響應CPU外部的可 屏蔽中斷發出的中斷請求。但不管該標志為何值, CPU都必須響應CPU外部的不可屏蔽中斷所發出的中斷請求, 以及CPU內部產生的中斷請求。具體規定如下:?   (1)、當IF=1時, CPU可以響應CPU外部的可屏蔽中斷發出的中斷請求;?   (2)、當IF=0時, CPU不響應CPU外部的可屏蔽中斷發出的中斷請求。? | | TF|跟蹤標志TF。該標志可用于程序調試。 TF標志沒有專門的指令來設置或清楚。   (1)如果TF=1,則CPU處于單步執行指令的工作方式, 此時每執行完一條指令, 就顯示CPU內各個寄存器的當前值及CPU將要執行的下一條指令 。   (2)如果TF=0,則處于連續工作模式。 | |SF|符號標志SF用來反映運算結果的符號位, 它與運算結果的最高位相同。在微機系統中, 有符號數采用補碼表示法,所以,SF也就反映運算結果的正負號。 運算結果為正數時,SF的值為0,否則其值為1。? | |ZF|?零標志ZF用來反映運算結果是否為0。如果運算結果為0, 則其值為1,否則其值為0。在判斷運算結果是否為0時, 可使用此標志位。? | | AF|下列情況下,輔助進位標志AF的值被置為1, 否則其值為0:   (1)、在字操作時,發生低字節向高字節進位或借位時;?   (2)、在字節操作時,發生低4位向高4位進位或借位時。? | | PF|奇偶標志PF用于反映運算結果中“1”的個數的奇偶性。 如果“1”的個數為偶數,則PF的值為1,否則其值為0。? | | CF|進位標志CF主要用來反映運算是否產生進位或借位。 如果運算結果的最高位產生了一個進位或借位,那么,其值為1, 否則其值為0。| ### 段寄存器 為了運用所有的內存空間,8086設定了四個段寄存器, 專門用來保存段地址: | 段寄存器 | 說明 | | --- | --- | | CS(Code Segment)|代碼段寄存器 | | DS(Data Segment)| 數據段寄存器 | | SS(Stack Segment)| 堆棧段寄存器 | | ES(Extra Segment)| 附加段寄存器 |    **當一個程序要執行時,就要決定程序代碼、數據和堆棧各要用到內存的哪些位置,通過設定段寄存器 CS,DS,SS 來指向這些起始位置**。通常是將DS固定,而根據需要修改CS。 所以,程序可以在可尋址空間小于64K的情況下被寫成任意大小。 所以,程序和其數據組合起來的大小,限制在DS 所指的64K內,這就是COM文件不得大于64K的原因。 8086以內存做為戰場,用寄存器做為軍事基地,以加速工作。 以上是8086寄存器的整體概況。 自80386開始,PC進入32bit時代,其尋址方式, 寄存器大小, 功能等都發生了變化。 ## x64 在x64匯編中調用函數時,以下寄存器用作參數。 嘗試將它們提交到內存中,因為將來您會經常使用它們 ``` 第一個參數:RDI 第二個參數:RSI 第三個參數:RDX 第四個參數:RCX 第五個參數:R8 第六個參數:R9 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看