日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書(shū)頻道 > 電子 > 《計(jì)算機(jī)組成原理與匯編語(yǔ)言》 > 第3章 指令系統(tǒng)與匯編語(yǔ)言設(shè)計(jì)

第2節(jié) 8088數(shù)據(jù)傳送指令

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

 1. MOVOPRD1,OPRD2

    MOV是操作碼,OPRD1和OPRD2分別是目的操作數(shù)和源操作數(shù)。該指令可把一個(gè)字節(jié)或一個(gè)字操作數(shù)從源地址傳送到目的地址。
              
    源操作數(shù)可以是累加器、寄存器、存貯器以及立即操作數(shù),而目的操作數(shù)可以是累加器、寄存器和存貯器。數(shù)據(jù)傳送方向的示意圖,如圖3.13所示。

 
               各種數(shù)據(jù)傳送指令例舉如下:

             (1)在CPU各內(nèi)部寄存器之間傳送數(shù)據(jù)(除代碼段寄存器CS和指令指針I(yè)P以外)。

               MOV AL,BL
               MOV DL,CH 8位數(shù)據(jù)傳送指令(1個(gè)字節(jié))
               MOV AX,DX
               MOV CX,BX
               MOV DX,BX } 16位數(shù)據(jù)傳送指令(1個(gè)字)
               MOV DX,ES
               MOV BX,DI
               MOV SI,BP

             (2)立即數(shù)傳送至CPU的內(nèi)部通用寄存器(即AX、BX、CX、DX、BP、SP、SI、DI),給這些寄存器賦值。

               MOV CL, 4;8位數(shù)據(jù)傳送(1個(gè)字節(jié))
                MOV AX,03FFH;16位數(shù)據(jù)傳送
               MOV S1,057BH; 16位數(shù)據(jù)傳送(1個(gè)字)

             (3)CPU內(nèi)部寄存器(除了CS和IP以外)與存貯器(所有尋址方式)之間的數(shù)據(jù)傳送,與前述一樣可以傳送一個(gè)字節(jié)也可以傳送一個(gè)字。

             ·在CPU的通用寄存器與存貯器之間傳送數(shù)據(jù):

               MOV AL, BUFFER
                MOV AX,[SI]
               MOV,[DI] CX
                MOV SI, BLOCK[BP]

             ·在CPU寄存器與存貯器之間傳送數(shù)據(jù):

               MOV DS,DATA[SI+BX]
               MOV DEST[BP+DI],ES

             例如,為了將在同一個(gè)段內(nèi)的偏移地址為AREA1的數(shù)據(jù)傳送到偏移地址為AREA2單元中去,就需要執(zhí)行以下兩條傳送指令:

              MOV AL,AREA1
               MOV AREA2,AL

             如果要求將內(nèi)存中一個(gè)數(shù)據(jù)塊搬移到另一個(gè)內(nèi)存數(shù)據(jù)區(qū)中時(shí),例如要將以AREA1為首地址的100個(gè)字節(jié)數(shù)據(jù)搬移到以AREA2為首地址的內(nèi)存中去,可以
 

            用有循環(huán)控制的數(shù)據(jù)傳送程序來(lái)實(shí)現(xiàn)。為此采用間接尋址方法,用SI存放源數(shù)據(jù)地址,DI存放目的數(shù)據(jù)地址,用CX作為循環(huán)計(jì)數(shù)控制單元。

           其程序如下:

             MOV SI,OFFSETAREA1
             MOV DI,OFFSETAREA2
             MOV CX,100
             AGAIN: MOV AL,[SI]
             MOV,[DI] AL
             INC SI
             INC DI
             DEC CX
             JNZ AGAIN

          2. 交換指令

              XCHG OPRD1,OPRD2
                    目的    源

              交換指令把一個(gè)字節(jié)或一個(gè)字的源操作數(shù)與目的操作數(shù)相交換。這種交換能在通用寄存器與累加器之間、通用寄存器之間、通用寄存器與存貯器之 間進(jìn)行,

              但是段寄存器不能作為一個(gè)操作數(shù),例如:  

                XCHG AL,CL
                XCHG AX,DI
                XCHG BX,SI
                XCHG AX,BUFFER
                XCHG BX,DATA[SI]

         3. 地址傳送指令

                8088有3條地址傳送指令。

               (1)LEA指令
                   例如:
                        LEA OPRD1,OPRD2

               該指令把源操作數(shù)OPRD2的地址偏移量傳送至目的操作 數(shù)OPRD1中。源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)必須是一個(gè)16位的通用寄存器。

              這條指令通常用來(lái)建立串指令操作所需的寄存器指針。
                    

                         例如:LEA BX,BUFR是把變量BUFR的地址偏移量送到BX中。

                (2) LDS指令

                該指令完成一個(gè)地址指針的傳送。地址指針包括段地址和地址偏移量。指令執(zhí)行時(shí),將段地址送入DS,地址偏移量送入一個(gè)16位的指針寄存器或變址寄存器。

                       例如:LDS SI,[BX]是把BX所指的32位地址指針的段地址送入DS,偏移地址送入SI。

                (3) LES指令

                這條指令除將地址指針的段地址送入ES外,其他操作與LDS的類似。

                       例如: LES DI,[BX+CONT]是把BX+CONT所指的32位地址指針的段地址送入ES,偏移地址送入DI4.堆棧操作指令
      

                堆棧是內(nèi)存中的一個(gè)特定區(qū)域,由SS的內(nèi)容和SP的內(nèi)容來(lái)決定。對(duì)堆棧的操作具有先入后出的特點(diǎn)。用于堆棧操作的指令主要是:
                          

                           PUSH OPRD(壓入堆棧指令)                                                  POP  OPRD(彈出堆棧指令)

                 堆棧操作指令中的操作數(shù)可以是段寄存器(除CS)的內(nèi)容、16位的通用寄存器(標(biāo)志寄存器有專門(mén)的出入棧指令)以及內(nèi)存的16位字,例如,
                               

                                MOV  AX,8000H
                                MOV  SS,AX
                                MOV  SP,2000H
                                MOV  DX,3E4AH
                                PUSH DX
                                PUSH AX

                   當(dāng)執(zhí)行完兩條壓入堆棧的指令時(shí),堆棧中的內(nèi)容如圖3.14所示。
                     

                   由圖3.14可以解釋壓入堆棧的過(guò)程:

                         ①SP-1→SP
                         ②DH→(SP)
                         ③SP-1→SP
                         ④DL→(SP)

                     這就是把DX壓入堆棧的過(guò)程。AX的壓棧過(guò)程是一樣的。

                     出堆棧的過(guò)程與此剛好相反,例如POPAX:

                         ①(SP)→AL
                         ②SP+1→SP
                         ③(SP)→AH
                         ④SP+1→SP

                    可見(jiàn),SP的內(nèi)容總是指向堆棧的頂。

 
       4. 字節(jié)、字轉(zhuǎn)換指令

            有一條指令能將AL的符號(hào)位(bit7)擴(kuò)展到整個(gè)AH中,它就是CBW,即將字節(jié)轉(zhuǎn)換成一個(gè)字。

              例如,

                MOV AL,4FH
                CBW
           

            在執(zhí)行完CBW之后,AX=004FH。另一條指令是將AX的符號(hào)位(bit15)擴(kuò)展到整個(gè)DX,它就是CWD,即將字轉(zhuǎn)換成雙字。
           

               例如,

                MOV AX,834EH
                CWD
           

            執(zhí)行完CWD之后,DX=FFFFH,DXAX=FFFF834EH

 

?
乌苏市| 阳春市| 潜江市| 教育| 盐山县| 西青区| 名山县| 雷州市| 南和县| 丰顺县| 奎屯市| 青州市| 滦平县| 武平县| 保靖县| 洛宁县| 红安县| 景泰县| 瑞安市| 平远县| 汕尾市| 廉江市| 尉氏县| 肥西县| 大同市| 米脂县| 阳山县| 绥宁县| 淅川县| 神农架林区| 高邮市| 奎屯市| 光泽县| 佛学| 莱西市| 河源市| 石门县| 渑池县| 平和县| 安岳县| 甘洛县|