<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 8.2 I/O 指令(I/O Instructions) 80386的I/O指令使得處理器可以訪問I/O端口,以便從外設輸入數據,或者向外設發送數據。這些指令有一個指定I/O空間端口地址的操作數。有兩類的I/O指令: 1、? 在寄存器指定的地址傳送一個數據(字節、字、雙字)。 2、? 傳送指定內存中的一串數據(字節串、字串、雙字串)。這些被稱作為“串 I/O指令”或者說“塊I/O指令”。 ### 8.2.1 寄存器I/O指令(Register I/O Instructions) I/O指令IN和OUT是用來在I/O端口和EAX(32位)或AX(16位)或AL(8位)通用寄存器間傳送數據的。IN和OUT指令可以是直接尋址(0~255端口地址),也可以通過DX寄存器間接尋址(0~64K端口地址)。 IN(Input from Port)從I/O端口傳送一個字節、字、雙字到AL、AX、或EAX寄存器。如果程序指定了AL寄存器,處理器從端口傳送8位到AL寄存器。如果指定了AX寄存器,則傳送16位到AX寄存器。如果指定了EAX寄存器,則傳送32位到EAX寄存器。 OUT(Output to Port)從AL、AX、或EAX傳送一個字節、字、雙字到端口。程序可以指定不同的寄存器(AL、AX、EAX)來傳送不同數量的字節。 ![](https://box.kancloud.cn/2016-03-06_56dbfdae027fd.gif) ### 8.2.2 塊I/O指令(Block I/O Intructions) 塊I/O指令INS和OUTS用來在內存和端口間傳送數據。塊I/O指令使用DX來指定I/O端口地址。INS和OUTS用DX來指定: + 8位端口,編號從0~65535 + 16位端口,編號從0,2,4,……,65532,65534 + 32位端口,編號從0,4,8,……,65528,65532 塊I/O指令使用SI或DI來指定源或目標內存地址。對每次傳送,SI或DI通過標志寄存器里的方向位會自動增加或減少。 INS和OUTS,當使用 repeat 前綴時,會將一塊數據輸入或輸出。REP,重復前綴,修飾INS或OUTS來指示他們在內存和端口間傳送一塊數據。這些塊I/O指令是基于串原語的(參看第3章,關于串原語)。他們使得編程簡化了,還能過消除了用單寄存器來保存數數的循環從而增加了數據傳輸速度。 基于串的指令可以傳送字節、字、或是雙字串。每一次傳送結束后,ESI或EDI的內存地址將更新1個字節(字節操作數),或2個字節(字操作數),或4個字節(雙字操作數)。標志寄存器里的DF標志將決定是增加還是減少ESI、EDI(DF=0 增加,DF=1 減少)。 INS(Input String from Port)從一個輸入端口傳送一串字節、字、或者雙字到內存中。INSB、INSW、INSD是這條指令的變種,分別指定了操作傳送單元的大小。如果一個程序指定INSB,處理器從輸入端口傳送8位到ES:EDI指定的內存處。如果程序指定了INSW則傳送16位數據單元,INSD則傳送32位數據單元。目的地的段寄存器ES不能被更改。和REP前綴一起使用,INS從輸入端口傳送一塊數據信息到連續的內存地址處。 OUTS(Output String to Port)從內存傳送一個字節、字、或雙字串到輸出端口。OUTSB,OUTSW,OUTSD是這條指令的變種,指定的數據單元的大小。如果程序指定了OUTSB,處理器從ES:EDI指定的內存處傳8-位到輸出端口。如果指定了OUTSW,則傳送16位數據單元。如果指定了OUTSD,則傳送32位數據單元。混合REP前綴,OUTS從內存的連續地址處傳送一塊數據到指定的端口。
                  <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>

                              哎呀哎呀视频在线观看