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

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

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

第6節(jié) 程序控制指令

3.6.1 程序控制指令

 
  1. 無條件轉(zhuǎn)移、調(diào)用和返回指令

          (1)無條件轉(zhuǎn)移指令JMP

該指令分直接轉(zhuǎn)移和間接轉(zhuǎn)移兩種。直接轉(zhuǎn)移又可分短程(SHORT)、近程(NEAR)和遠(yuǎn)程(FAR)3種形式。當(dāng)程序執(zhí)行到JMP指令時(shí),就無條件地轉(zhuǎn)移到所指示的目的地址。

                該指令的一般格式為

                       JMP OPRD ;OPRD是轉(zhuǎn)移的目的地址

               直接轉(zhuǎn)移的3種形式為:

                  ·短程轉(zhuǎn)移JM PSHORTNEXT
                         
         在短程轉(zhuǎn)移中目的地址與JMP指令所處地址的距離應(yīng)在-128~127范圍之內(nèi)。
                  
                ·近程轉(zhuǎn)移JMP NEARPTRLOOP1  或JMP LOOP1 ;NEAR可省略
          
         近程轉(zhuǎn)移的目的地址與JMP指令應(yīng)處于同一地址段范圍之內(nèi)。近程轉(zhuǎn)移的NEAR往往予以省略。
                  
                 ·遠(yuǎn)程轉(zhuǎn)移JMP FAR PTR LOOP2
                        
         遠(yuǎn)程轉(zhuǎn)移是段間的轉(zhuǎn)移,目的地址與JMP指令所在地址不在同一段內(nèi)。執(zhí)行該指令時(shí)要修改CS和IP的內(nèi)容。

                間接轉(zhuǎn)移指令的目的地址可以由存貯器或寄存器給出。

                  ·段內(nèi)間接轉(zhuǎn)移JMP CX
                                
                          JMP WORDPTR
                  
               ·段間間接轉(zhuǎn)移JMPDWORDPTR
                         
    該指令指定的雙字指針的第一個(gè)字單元內(nèi)容送入IP,第二個(gè)字單元內(nèi)容送入CS,所定義的單元必定是雙字單元。

            (2)調(diào)用和返回指令

CALL指令用來調(diào)用一個(gè)過程或子程序。當(dāng)調(diào)用的過程或子程序結(jié)束后,可使用返回指令RET,使程序從調(diào)用的過程或子程序返回。

由于過程或子程序有段間(即遠(yuǎn)程FAR)和段內(nèi)調(diào)用(即近程N(yùn)EAR)之分。所以CALL也有FAR和NEAR之分。這由被調(diào)用過程的定義所決定。因此RET也分段間和段內(nèi)返回兩種。

                 調(diào)用指令一般格式為

                    CALL NEARPTROPRD;段內(nèi)調(diào)用
                    CALL FARPTROPRD;段間調(diào)用

            下面我們舉兩個(gè)使用近程調(diào)用指令和遠(yuǎn)程調(diào)用指令的實(shí)例。

              主程序(近程調(diào)用)
                  … CALL NEAR PTR PROAD … ;過程PROAD定義
                       PROAD PROC NEAR
                       PUSH AX
                       PUSH CX
                       PUSH SI
                       LEA SI,ARY MOV CX,COUNT
                       XOR AX,AX
                       NEXT:ADD AX,[SI]
                       ADD SI,2
                       LOOP NEXT
                       MOV SUM,AX
                       POP SI
                       POP CX
                       POP AX
                       RET
                       PROAD ENDP;主程序(遠(yuǎn)程調(diào)用)
                   … CALL FARPTR PROADD… ;

             過程PROADD定義(遠(yuǎn)程調(diào)用過程)

                       PROADD PROC FAR
                       PUSH AX
                       PUSH CX
                       PUSH SI
                       PUSH DI
                       MOV SI,[BX]MOV DI,[BX+2]
                       MOV CX,
                       MOV DI,[BX+4]
                       XOR AX,AX
                       NEXT1:ADD AX,[SI]
                       ADD SI,2
                       LOOP NEXT1
                       MOV [DI],AX
                       POP DI
                       POP SI
                       POP CX
                       POP AX
                       RET

           PROADD ENDP2. 條件轉(zhuǎn)移指令

8088有18條不同的條件轉(zhuǎn)移指令。它們根據(jù)標(biāo)志寄存器中各標(biāo)志位的狀態(tài),決定程序是否進(jìn)行轉(zhuǎn)移。條件轉(zhuǎn)移指令的目的地址必須在現(xiàn)行的代碼段(CS)內(nèi),

并且以當(dāng)前指針寄存器IP內(nèi)容為基準(zhǔn),其位移必須在+127~-128的范圍之內(nèi)。因此條件轉(zhuǎn)移指令的范圍是有限的,不像JMP指令那樣可以轉(zhuǎn)移到內(nèi)存的任何一個(gè)位置上。

轉(zhuǎn)移指令格式比較簡單,如表3.1所示。
 

   
 

       3. 循環(huán)控制指令

這類指令用于控制程序的循環(huán),其控制轉(zhuǎn)向的目的地址是在以當(dāng)前IP內(nèi)容為中心的-128~+127的范圍內(nèi)。這類指令用CX作計(jì)數(shù)器,每執(zhí)行一次指令,CX內(nèi)容減1,直到減

為0,循環(huán)才結(jié)束。

              該類指令的一般格式為

                   LOOP OPRD ;CX≠0循環(huán)
                   LOOPNE OPRD ;CX≠0且ZF=0循環(huán)
                   LOOPE OPRD ;CX≠0且ZF=1循環(huán)
            

在LOOPE和LOOPNE兩條指令中,只要兩個(gè)條件中任一個(gè)不滿足,循環(huán)就結(jié)束。

              例:
                 SUB DI,BX
                 INC DI
                 MOV CX,DI
                 DEC BX
                 NEXT:INCBX
                 CMP BYTEPTR,0
                 LOOPE NEXT…

     4. 軟中斷指令及中斷返回指令
 

在8088的微機(jī)系統(tǒng)中,當(dāng)程序執(zhí)行到中斷指令I(lǐng)NT時(shí),便中斷當(dāng)前程序的執(zhí)行,轉(zhuǎn)向由256個(gè)中斷向量所提供的中斷入口地址之一去執(zhí)行。

            軟中斷指令的一般格式為:

                 INT OPRD ;OPRD可以取00H~FFH中的值
  
 

 

?
大姚县| 宁波市| 九寨沟县| 孙吴县| 宜良县| 桃江县| 沾益县| 宜城市| 高安市| 舟山市| 芷江| 武功县| 德保县| 前郭尔| 通州区| 孙吴县| 凤台县| 布尔津县| 瓦房店市| 林口县| 蕲春县| 北海市| 温州市| 武川县| 靖州| 河南省| 宜兰县| 礼泉县| 通州市| 新巴尔虎右旗| 城口县| 夏河县| 五莲县| 仁布县| 锦州市| 喀喇沁旗| 巴塘县| 临潭县| 古浪县| 南木林县| 长垣县|