<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 8086指令系統(tǒng)---數(shù)據(jù)傳送指令

          8086指令系統(tǒng)---數(shù)據(jù)傳送指令

          作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
            8086指令系統(tǒng)分為以下6組:
           ?、?數(shù)據(jù)傳送指令
           ?、?算術(shù)指令
           ?、?邏輯指令
           ?、?串處理指令
           ?、?控制轉(zhuǎn)移指令
           ?、?處理機(jī)控制指令

          數(shù)據(jù)傳送指令

            數(shù)據(jù)傳送指令的功能是把數(shù)據(jù)、地址傳送到寄存器或存儲(chǔ)器單元中。它分為4類(lèi)。

            ⑴ 通用數(shù)據(jù)傳送指令    ?、?累加器專(zhuān)用傳送指令
             MOV  傳送           IN   輸入
             PUSH 進(jìn)棧           OUT  輸出
             POP  出棧           XLAT 換碼
             XCHG 交換

           ?、?地址傳送指令       ⑷ 標(biāo)志寄存器傳送指令
             LEA  有效地址送寄存器     LAHF 標(biāo)志送AH
             LDS  指針?biāo)图拇嫫骱虳S     SAHF AH送標(biāo)志寄存器
             LES  指針?biāo)图拇嫫骱虴S     PUSHF 標(biāo)志進(jìn)棧
                             POPF 標(biāo)志出棧

          1 通用數(shù)據(jù)傳送指令 

            MOV dst, src;傳送指令(move)
            執(zhí)行操作:(dst) ← (src)
            功能: 將源操作數(shù)(字節(jié)或字)傳送到目的地址。

            注意:
             ● 目的操作數(shù)dst和源操作數(shù)src不能同時(shí)用存儲(chǔ)器尋址方式,這個(gè)限制適用于所有指令;
             ● 目的操作數(shù)dst不能是CS,也不能用立即數(shù)方式;
             ● 目的操作數(shù)dst和源操作數(shù)src不允許同時(shí)為段寄存器;
             ● MOV指令不影響標(biāo)志位。

            PUSH   src ; 進(jìn)棧指令(push onto the stack)
            執(zhí)行操作: (SP) ← (SP)-2
                  ((SP)) ← (src)

            POP    dst ; 出棧指令(pop from the stack)
            執(zhí)行操作: (dst) ← ((SP))
                  (SP) ← (SP)+2

            PUSH和POP指令分別將數(shù)據(jù)存入堆?;虬讯褩V械臄?shù)據(jù)取出。堆棧是以L(fǎng)IFO(后進(jìn)先出)方式工作的一個(gè)存儲(chǔ)區(qū),程序中定義的堆棧段就是這樣一個(gè)LIFO存儲(chǔ)區(qū)。數(shù)據(jù)存入堆棧單元或從堆棧單元中取出都由堆棧指針SP指示,而SP總是指向棧頂,所以進(jìn)棧和出棧指令都會(huì)自動(dòng)修改SP。

            PUSH指令執(zhí)行時(shí),SP的內(nèi)容先減2,然后將數(shù)據(jù)壓入SP所指示的字單元,存儲(chǔ)的方法同樣是高8位存入高地址字節(jié),低8位存入低地址字節(jié)。POP指令執(zhí)行時(shí),將SP所指示的棧頂?shù)刂返膬?nèi)容取出放入目的地址,然后SP增2,指向新的棧頂?shù)刂贰?br />
            注意:
             ● PUSH和POP指令只能是字操作,因此存取字?jǐn)?shù)據(jù)后,SP的修改必須是+2或-2;
             ● PUSH和POP指令不能使用立即數(shù)方式;
             ● POP指令的dst不允許是CS寄存器;
             ● PUSH和POP指令都不影響標(biāo)志位。
             PUSH指令在程序中常用來(lái)暫存某些數(shù)據(jù),而POP指令又可將這些數(shù)據(jù)恢復(fù)。

            XCHG  opr1, opr2 ; 交換指令(exchange)
            執(zhí)行操作:(opr1) ←→ (opr2)
            XCHG指令使兩個(gè)操作數(shù)opr1,和opr2互相交換,其中一個(gè)操作數(shù)必須在寄存器中,另一個(gè)操作數(shù)可以在寄存器或存儲(chǔ)器中。

            注意:
             ● 不允許使用段寄存器
             ● 不影響標(biāo)志位

            例 假設(shè)(DS)=1000H, (SS)=4000H, (SP)=100H, (BX)=2100H, (12100)=00A8H, 指出連續(xù)執(zhí)行下列各條指令后,有關(guān)寄存器、存儲(chǔ)單元以及堆棧的情況。

               PUSH   DS
               PUSH   BX
               PUSH   [BX]
               POP    DI
               POP    WORD PTR [DI+2]
               POP    DS

            
          執(zhí)行結(jié)果: (SP)=100H-2=0FEH    (SP)=0FE-2=0FCH   (SP)=0FC-2=0FAH
                (400FEH)=1000H      (400FCH)=2100H    (400FAH)=00A8H

            
          執(zhí)行結(jié)果: (SP)=0FA+2=0FCH    (SP)=0FC+2=0FEH     (SP)=0FE+2=100H
                (DI)=00A8H       (100AAH)=2100H      (DS)=1000H

            例 已知(AX)=6634H, (BX)=0F24H, (SI)=0012H, (DS)=1200H, (12F36H)=2500H, 寫(xiě)出下列指令執(zhí)行的結(jié)果。

                XCHG  AH,AL    ; 執(zhí)行前: (AH)=66H, (AL)=34H
                         ; 執(zhí)行后: (AH)=34H, (AL)=66H
                XCHG  AX,[BX+SI] ; 執(zhí)行前: (AX)=6634H, (12F36H)=2500H
                         ; 執(zhí)行后: (AX)=2500H, (12F36H)=6634HH

           2 累加器專(zhuān)用傳送指令

            這組指令只限于使用累加器(ac:AX 或AL)傳送信息。
            IN  ac, port ; 輸入指令(input), port≤0FFH
            執(zhí)行操作: (AL) ← (port) 傳送字節(jié)
             或 (AX) ← (port+1,port) 傳送字

            IN  ac, DX  ; 輸入指令, DX中的port>0FFH
            執(zhí)行操作: (AL) ← ((DX)) 傳送字節(jié)
             或 (AX) ← ((DX)+1,(DX)) 傳送字

            OUT  port, ac  ; 輸出指令(output), port≤0FFH
            執(zhí)行操作: (port) ← (AL) 傳送字節(jié)
             或 (port+1,port) ← (AX) 傳送字

            OUT  DX, ac   ; 輸出指令(output), DX中的 port>0FFH
            執(zhí)行操作: ((DX)) ← (AL) 傳送字節(jié)
             或 ((DX)+1,(DX)) ← (AX) 傳送字

            對(duì)8086及其后繼機(jī)型的微處理機(jī),所有I/O端口與CPU之間的通信都由輸入輸出指令I(lǐng)N和OUT來(lái)完成。IN指令將信息從I/O輸入到CPU,OUT指令將信息從CPU輸出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。微處理機(jī)分配給外部設(shè)備最多有64K個(gè)端口,其中前256個(gè)端口(0~FFH)稱(chēng)為固定端口,可以直接在指令中指定。當(dāng)端口地址超過(guò)8位(≥256),稱(chēng)為可變端口,它必須先送到DX寄存器,然后再用IN或OUT指令傳送信息。CPU與I/O端口傳送信息的寄存器只限于累加器ac (AX或AL),傳送16位信息用AX,傳送8位信息用AL,這取決于外設(shè)端口的寬度。

          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();