版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第八講8088指令系統(tǒng)(續(xù))
2009.4.7(星期二)課程內(nèi)容:
五、控制傳送指令 六、處理器控制指令北航微機原理第八講如何利用地址線產(chǎn)生脈沖三態(tài)總線兩態(tài)總線KKK:MOVAL,(BX)
CALLDELAY INCBX MOVAL,(BX)
CALLDELAY JMPKKK北航微機原理第八講五.控制傳送指令(Controltransferinstructions)控制傳送指令概述
控制傳送指令包括四種:
轉(zhuǎn)移指令,循環(huán)控制指令,過程調(diào)用指令,中斷指令。指令類型助記符無條件轉(zhuǎn)移JMP條件轉(zhuǎn)移JE/JZ,JNE/JNZ,JS,JNS,JP/JPE,JNP/JPO,JO,JNO,JC,JNC,JB/JNAE,JAE/JNB,JA/JNBE,JBE/JNA,JG/JNLE,JGE/JNL,JL/JNGE,JLE/JNG,JCXZ循環(huán)控制LOOP,LOOPE/LOOPZ,LOOPNE/LOOPNZ過程調(diào)用CALL,RET中斷指令I(lǐng)NT,INTO,IRET北航微機原理第八講(一)、無條件轉(zhuǎn)移指令
1.JMP(jmp)目標標號
JMP指令必須指定轉(zhuǎn)移的目標地址(或轉(zhuǎn)向地址)。 轉(zhuǎn)移分成兩類:段內(nèi)或段間轉(zhuǎn)移。
(1)段內(nèi)直接轉(zhuǎn)移:只要改變IP寄存器的內(nèi)容 指在同一段的范圍之內(nèi)進行轉(zhuǎn)移 (IP)←(IP)當(dāng)前+目標標號所代表的地址偏移量 地址偏移量又稱為符號地址 目標標號為8位,稱為短轉(zhuǎn)移。 目標標號為16位,稱為近轉(zhuǎn)移。
北航微機原理第八講例如:代碼段內(nèi)有一條無條件轉(zhuǎn)移指令在匯編語言中使用符號地址。 JMPSHORTNEXT指令執(zhí)行過程:
NEXT—在匯編語言中使用符號地址 (IP)←(IP)當(dāng)前+D8(8位帶符號數(shù))源程序:條件轉(zhuǎn)移指令:JMPSHORTnext.........
next:MOVAL,03HOP......OP03H......3000:1000H3000:1050H(IP)當(dāng)前(NEXT的值定義為50H)(IP)=(IP)當(dāng)前+D8內(nèi)存向前跳,D8為正數(shù),往回跳,D8用補碼JMPSHORTABC若ABC=0F0H,則回跳16字節(jié)北航微機原理第八講
(2)
段內(nèi)間接轉(zhuǎn)移:(CS)不變,只改變(IP)格式:JMPOPR
OPR—為16位寄存器、 或存儲器(除立即數(shù)以外的任何一種尋址方式)執(zhí)行操作: (IP)
(EA) 或(IP)
(reg16)
IP指針的內(nèi)容根據(jù)寄存器或存儲器(數(shù)據(jù)段、附加段、堆棧段)的內(nèi)容而改變。指令格式舉例:JMPBX JMPSIJMPTABLE[BX] ;操作數(shù)已定義為16位存儲器JMPALPHA_WORD ;操作數(shù)已定義為16位存儲器JMPWORDPTR[BP][DI];操作數(shù)已定義為16位存儲器北航微機原理第八講例:
(IP)=5000H,(CS)=3000H,(DS)=1000H,(BX)=1000H(11000H)=1234H,JMPBX ;(IP)=1000H,在當(dāng)前段內(nèi),屬于 ;寄存器尋址JMPWORDPTR[BX] ;(CS)=3000H,(IP)=1234H在當(dāng)前段內(nèi),(PA)=(16d
(DS)+(BX))=(11000H)為1234H將PA地址存儲器的內(nèi)容(1234H)給IP
;屬于寄存器間接尋址。北航微機原理第八講(3)段間直接轉(zhuǎn)移:要修改IP、CS寄存器的內(nèi)容。轉(zhuǎn)到另一段去執(zhí)行程序。
轉(zhuǎn)移目標地址=新的段地址和偏移地址兩部分組成。格式:JMPFARPTROPR;
OPR—在匯編語言中使用符號地址
(如標號AKK,假設(shè)定義在另一程序段CC00:0044)。
轉(zhuǎn)移地址與指令不在同一個段里。在機器語言中則要指定轉(zhuǎn)向地址的偏移地址和段地址
JMPFARPTRAKK執(zhí)行操作:
(IP)←OPR所在的段內(nèi)偏移地址0044H。 (CS)←OPR所在的段的段址CC00H。直接轉(zhuǎn)移通過符號地址加載IP和CS,間接轉(zhuǎn)移通過存儲器內(nèi)容加載IP和CS.
北航微機原理第八講
(4)段間間接轉(zhuǎn)移:(CS)、(IP)都改變格式:JMP DWORDPTROPR
OPR—存儲器操作數(shù)
(除立即數(shù)和寄存器以外的任何一種尋址方式)執(zhí)行操作:將4字節(jié)連續(xù)地址分別送給IP和CS
(IP)←(EA)(CS)←(EA+2)例:已知(BX)=1000H,(SI)=2000H,(DS)=2000H (23000H)=2212H,(23002H)=4434H
JMPDWORDPTR[BX][SI]則:(BX)+(SI)=3000H(IP)=(PA)=(16d
(DS)+(BX)+(SI))=(23000H)=2212H
(CS)=(PA+2)=4434H北航微機原理第八講2.條件轉(zhuǎn)移指令
指令格式:JccOPR操作:根據(jù)上一條指令所設(shè)置的條件碼來判別測試條件轉(zhuǎn)移。 每一種條件轉(zhuǎn)移指令都有它的測試條件。滿足條件時: (IP)←(IP)當(dāng)前+OPR(D8)
使用相對尋址方式,范圍-128~+127個字節(jié)不滿足條件時:(IP)不變,順序執(zhí)行下一條指令(該指令為兩字節(jié)長度,一字節(jié)為指令功能碼,一指令為一個字節(jié)的相對跳轉(zhuǎn)地址偏移量)北航微機原理第八講按轉(zhuǎn)移條件不同,條件轉(zhuǎn)移指令可以分為四大類:①以單個狀態(tài)標志作為轉(zhuǎn)移條件助記符 轉(zhuǎn)移條件助記符轉(zhuǎn)移條件助記符轉(zhuǎn)移條件JZ/JEZF=1JNZ/JNEZF=0JSSF=1JNSSF=0JOOF=1JNOOF=0JP/JPEPF=1JNP/JPOPF=0JCCF=1JNCCF=0②以CX的值為0作為轉(zhuǎn)移條件助記符轉(zhuǎn)移條件JCXZ CX=0北航微機原理第八講助記符 轉(zhuǎn)移條件JA/JNBECF∨ZF=0 高于/不低于等于JAE/JNB/JNCCF=0高于或等于/不低于/無進位JB/JNAE/JCCF=1
低于/不高于等于/有進位JBE/JNACF∨ZF=1 低于或等于/不高于③以兩個無符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件④以兩個帶符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件助記符
轉(zhuǎn)移條件
JG/JNLE(SF⊕OF)∨ZF=0 大于/不小于等于JGE/JNLSF⊕OF=0 大于或等于/不小于JL/JNGESF⊕OF=1
小于/不大于等于JLE/JNG(SF⊕OF)∨ZF=1 小于或等于/不大于北航微機原理第八講注意幾點:所有條件轉(zhuǎn)移指令都是相對轉(zhuǎn)移形式,(兩字節(jié)指令) 范圍(-128~+127)。 當(dāng)需往一個較遠地方進行條件轉(zhuǎn)移時, 選用條件轉(zhuǎn)移轉(zhuǎn)到附近一個單元, 然后,再用無條件轉(zhuǎn)移轉(zhuǎn)到較遠的目的地。②條件轉(zhuǎn)移指令中,相當(dāng)一部分指令是在比較完二個數(shù)大小后,根據(jù)結(jié)果而決定是否轉(zhuǎn)移,③條件轉(zhuǎn)移指令不影響標志位例:程序段2000H:3040HDONE:MOVAX,05H
…………
2000H:3079HJNEDONE
求DONE為何值北航微機原理第八講(IP)=(IP)當(dāng)前程序段2000H:3040HDONE:MOVAX,05H
…………2000H:3079HJNEDONE執(zhí)行此指令時,IP指針為何OP05H......OPC5H......2000:3079H2000:3040H(IP)當(dāng)前內(nèi)存2000:307BHDONE1101100000+307BHC5H北航微機原理第八講條件轉(zhuǎn)移指令應(yīng)用
例:比較二個數(shù)是否相等如相等做動作1否則做動作2
…… CMPAX,BX
JEaction_1Action_2:……
……action_1:
……
或 ……
CMPAX,BX
JNZaction_2action_1: ……action_2:
……=?AXBXYaction_1action_2N=?AXBXNaction_2action_1Y北航微機原理第八講
例:在M中有一個首地址為array的N字數(shù)組,
要求測試其中正數(shù)、0及負數(shù)的個數(shù).(帶符號數(shù)判斷)正數(shù)個數(shù)放在:(DI)中,0的個數(shù)放在:(SI)中,負數(shù)的個數(shù)放在:N-(DI)-(SI)送(AX)如果沒有負數(shù)轉(zhuǎn)skip,如果有負數(shù)轉(zhuǎn)neg_val程序:movcx,N;N字數(shù)組
movbx,0 movdi,bx movsi,bx again:cmpwordptrarrary[bx],0 jleless_or_ag
incdi ;正數(shù)個數(shù) jmpshortneat less_or_ag:jlneat incsi ;0的個數(shù)neat: addbx,2 deccx jnzagain
movax,N subax,di
subax,si jzskip;沒有負數(shù)
jmpnearptrneg_val;有負數(shù)skip:……neg_val:……
北航微機原理第八講(三)過程(子程序)調(diào)用指令子程序—程序中具有獨立功能的部分編寫成獨立程序模塊。子程序(過程)定義格式:符號名(AA) PROC類型(FAR/NEAR)
…… RET(RETURN) 符號名(AA) ENDP
子程序調(diào)用和返回指令:CALLAA過程有兩種類型: 按過程與調(diào)用語句間的位置,過程有兩種類型。
NEAR類型:調(diào)用指令與過程在同一個段中
FAR類型:調(diào)用指令與過程不在同一個段中CALL指令和RET指令都不影響條件碼。北航微機原理第八講CALL(Callaprocedure)調(diào)用
CALL調(diào)用指令 調(diào)用地址由指令給出調(diào)用時:將當(dāng)前地址入棧(CS)。 (IP)。CALL調(diào)用指令有4種:
段內(nèi)直接調(diào)用 段間直接調(diào)用 段內(nèi)間接調(diào)用 段間間接調(diào)用北航微機原理第八講例:CSEG1 SEGMENT
CALLFARPTRsubp;此處的CS:IP入棧轉(zhuǎn)subp
…
CSEG1ENDSCSEG2SEGMENT
…
subpPROCFAR
…
RETsubpENDPCSEG2ENDS北航微機原理第八講(2)、RET(Returefromprocedure)返回
RET返回指令 放在子程序的末尾 使子程序在功能完成后返回調(diào)用程序繼續(xù)執(zhí)行。*為能準確返回,返回指令類型與調(diào)用指令類型相對應(yīng)。RET返回指令有4種: 段內(nèi)返回 段間返回 段內(nèi)帶立即數(shù)返回 段間帶立即數(shù)返回在子程序調(diào)用時,返回地址入棧返回時:將返回地址出棧(IP)(段內(nèi)或段間)。 (CS)(段間)。北航微機原理第八講操作數(shù)執(zhí)行操作符號地址(SHORT) (IP)←(IP)當(dāng)前+8位符號地址位移量(段內(nèi)短跳)符號地址(NEAR屬性)(IP)←(IP)當(dāng)前+16位符號地址位移量(段內(nèi)近跳)reg(16位)或mem(W類型)(IP)←(reg)或(IP)←(mem)(段內(nèi)間接跳)符號地址(FAR屬性)(IP)←符號地址的偏值(段間直接跳)(CS)←符號地址的段值mem(DW類型) (IP)←(mem),(CS)←(mem+2)(段內(nèi)短跳)
◢當(dāng)前IP的值為控制轉(zhuǎn)移指令下一條指令的偏移地址。
◢位移量=符號地址的偏移量-當(dāng)前IP的值。◢符號地址(目標地址)=當(dāng)前IP的值+位移量(3)、小結(jié):指令格式:JMP操作數(shù)北航微機原理第八講
轉(zhuǎn)移方式:由CS是否變化、以及操作數(shù)類型決定情況如下表轉(zhuǎn)移方式CS操作數(shù)跳轉(zhuǎn)范圍段內(nèi)直接短方式不變符號地址(SHORT)-128~127即0~FFH段內(nèi)直接近方式不變符號地址(NEAR屬性)一個段內(nèi)0~FFFFH段內(nèi)間接方式不變Regmem(W類型)一個段內(nèi)0~FFFFH段間直接方式變符號地址(FAR屬性)整個內(nèi)存0~FFFFFH段間間接方式變mem(DW類型)整個內(nèi)存0~FFFFFH北航微機原理第八講
各控制轉(zhuǎn)移指令允許使用的轉(zhuǎn)移方式轉(zhuǎn)移方式無條件轉(zhuǎn)移JMP條件轉(zhuǎn)移Jcc循環(huán)轉(zhuǎn)移LOOPxx子程調(diào)用CALL段內(nèi)直接短方式√ √√×段內(nèi)直接近方式√××√段內(nèi)間接方式√××√段間直接方式√××√段間間接√××√北航微機原理第八講例: JMPagain (√) JMPBX (√) JMPWORDPTR[BX] (√) JMPDWORDPTR (√) JZAX(不能是字,AX) (×) JNZnext (?) (若next的位移量超出-128~127)北航微機原理第八講(四)循環(huán)控制指令格式:LOOPxx
符號地址執(zhí)行操作:①(CX)←(CX)-1此操作不影響標志②檢查轉(zhuǎn)移條件xx,滿足轉(zhuǎn)向目標地址去執(zhí)行;
不滿足執(zhí)行LOOPxx后一條指令轉(zhuǎn)移方式只允許段內(nèi)直接短方式,跳轉(zhuǎn)范圍-128~127助記符轉(zhuǎn)移條件不轉(zhuǎn)移條件LOOPCX≠0CX=0LOOPZCX≠0且ZF=1(相等)CX=0或ZF=0(不等)LOOPNZCX≠0且ZF=0(不等)CX=0或ZF=1(相等)
北航微機原理第八講與條件轉(zhuǎn)移指令不同的是:循環(huán)指令隱含(CX)減1操作。例:用循環(huán)指令將BL寄存器的內(nèi)容按二進制形式顯示出來學(xué)習(xí):LOOP指令
MOVCX,8next:ROLBL,1 MOVDL,BL ANDDL,00000001B
ADDDL,00110000B MOVAH,2 INT21H
DECCX JNZnext
……LOOPnext北航微機原理第八講循環(huán)指令說明:
LOOP退出循環(huán)條件是(CX)=0LOOPZ和LOOPNZ提供了提前結(jié)束循環(huán)的可能,
不一定要等到(CX)=0才退出循環(huán)?!诖胁檎易址?,查到了,就可退出,可用LOOPNZ,不相等時繼續(xù)查找?!容^兩串時,當(dāng)有字符不等,就可退出,說明兩字符串不等??捎肔OOPZ,當(dāng)相等時繼續(xù)比較。▲執(zhí)行完LOOPNZ或LOOPZ后,根據(jù)ZF標志的值判斷結(jié)果 對查找字符,ZF=1,說明找到;否則沒有找到。 對串比較,ZF=1,說明兩串相等;否則不等。北航微機原理第八講
例:在string字符串中查找空格字符,串長度為N。用條件轉(zhuǎn)移:JZ
MOVCX,NMOVAX,SEGstringMOVDS,AXLEABX,stringMOVAL,20Hnext:CMPAL,[BX] JZfind INCBX DECCX JNZnext
未找到處理
……Find:找到處理
……修改偏址BXYNAL
關(guān)鍵字CX串長度NDS:BX串首址判[BX]是關(guān)鍵字?
(CX)(CX)-1找到處理未找到處理
(CX)=0?YN結(jié)束出口北航微機原理第八講 MOVCX,28H MOVSI,0FFFFHNEXT1:INCSI CMPBYTEPTR[SI],0
LOOPZNEXT1
;當(dāng)Z=1、(CX)≠0循環(huán); 當(dāng)Z=0,或(CX)=0結(jié)束循環(huán)。
JNZOKK ;當(dāng)找到非零元素轉(zhuǎn)OKK。
CALLDISPLAY1 ;當(dāng)找不到非零元素轉(zhuǎn)DISPLAY1
……OKK:CALLDISPLAY2
……用LOOPZ和LOOPNZ指令提供提前結(jié)束循環(huán)的可能性。有時需要字符串中查找一個字符,找到后可提前結(jié)束循環(huán), 用LOOPZ、LOOPNZ來處理。例:40個元素構(gòu)成的數(shù)組,找出第一個非零元素。
DISPLAY1…… RETDISPLAY2…… RET指令JMP、CALL、Jcc、LOOPxx本身對標志無影響。北航微機原理第八講4、中斷指令中斷(Interrupt): 有時當(dāng)系統(tǒng)運行或程序運行期間遇到某些特殊情況,需要計算機自動執(zhí)行一組專門的例行程序來進行處理。中斷例行程序(或中斷子程序)(Interruptroutine): 所執(zhí)行的這組程序就稱為中斷子程序。種類:中斷分為內(nèi)部(軟)中斷和外部(硬)中斷兩種。內(nèi)部中斷—如除法運算中除數(shù)為0、中斷指令引起的中斷。外部中斷—處理I/O設(shè)備與CPU之間的通信。北航微機原理第八講CPU響應(yīng)一次中斷自動完成三件事情:(PSW)入?!?/p>
保護現(xiàn)場,(CS),(IP)保存入棧—
保留斷點,轉(zhuǎn)中斷例行程序去執(zhí)行。
中斷返回時:
恢復(fù)(IP)、(CS)及(PSW)中斷向量:中斷例行程序入口地址。IBM-PC中,存儲器的最底地址00000H——003FFH為中斷向量區(qū),存放256種類型中斷例行程序入口地址,每個中斷向量占4個單元。中斷指定類型號N×4——取得指定類型的中斷向量地址。北航微機原理第八講例:中斷類型9,9×
4=36
00024H——00027H單元中放中斷向量。IBM-PC機中為每個類型規(guī)定了一種功能。中斷類型功能類型0除數(shù)為0中斷例行程序類型1單步類型2非屏蔽中斷,NMI類型3設(shè)置斷點類型4溢出處理中斷,INTO指令類型10顯示設(shè)備中斷類型20程序結(jié)束中斷類型21DOS系統(tǒng)功能調(diào)用功能程序*除非特別注明,類型號是以16進制形式表示的。北航微機原理第八講(1).介紹幾條指令:INTn,IRET
格式:INTn ;n—常數(shù)或表達式,n=0—255
或INT執(zhí)行操作:
(SP)←(SP)-2,(SP))←(PSW) (SP)←(SP)-2,(SP))←(CS) (SP)←(SP)-2,←(IP)
(IP)←(N×4) (CS)←(N×4+2)清除IF、TF,避免進入中斷以后不被外面其它中斷所打斷 及進入中斷以后按單步執(zhí)行。北航微機原理第八講
類型0~3的中斷稱為內(nèi)部中斷。
類型0:指令系統(tǒng)沒有INT0這條指令
除數(shù)為0中斷 除數(shù)為0:它既不是外部中斷也不是軟件中斷。 是由CPU自身產(chǎn)生的,所以無對應(yīng)中斷指令。
有符號數(shù)進行除法所得的商超出規(guī)定范圍 有符號數(shù)進行除法運算,所得的商超出規(guī)定范圍,
CPU自動產(chǎn)生類型為0的中斷,轉(zhuǎn)入響應(yīng)的中斷處理程序。。北航微機原理第八講內(nèi)存0:0000H~0:03FFH區(qū)域中,構(gòu)成中斷向量表,存放中斷處理程序入口地址。每4個單元對應(yīng)1個中斷源。關(guān)系如下表:中斷處理程序入口地址的地址類型00000H~00001H類型0(IP)00002H~00003H類型0(CS)00004H~00005H類型1(IP)00006H~00007H類型1(CS)00008H~00009H類型2(IP)0000AH~0000BH類型2(CS)0000CH~0000DH類型3(IP)0000EH~0000FH類型3(CS)00010H~00011H類型4(IP)00012H~00013H類型4(CS)…………003FCH~003FDH類型255(IP)003FEH~003FFH類型255(CS)北航微機原理第八講∴INTO跟在有符號數(shù)+、-后面:*這條指令可以寫在一條算術(shù)指令后面。若產(chǎn)生溢出,OF=1,則啟動中斷過程,不進行任何操作。(2)IRET——從中斷返回指令(Interruptreturn)所有中斷過程(服務(wù)程序)不管是硬還是軟,最后一條指令一定是:
IRET退出中斷過程,返回中斷時斷點。格式:IRET執(zhí)行操作:
(IP)←((SP)+1,(SP)),(SP)←(SP)+2
(CS)←((
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流體壓強與流速的關(guān)系
- 汽車發(fā)動機構(gòu)造與維修 教案 8.4拆裝及檢修曲軸飛輪總成
- 結(jié)婚的流程-婚禮文案
- 臺風(fēng)來臨后企業(yè)的應(yīng)對預(yù)案流程
- 2025高考物理步步高同步練習(xí)第四章超重和失重含答案
- 《兩小兒辯日》科學(xué)探索與求知精神教案
- 工程索賠實務(wù)案例集
- 專升本(英語)模擬試卷20(共784題)
- 自然堂品牌策略與產(chǎn)品創(chuàng)新
- 第23章 旋轉(zhuǎn)-復(fù)習(xí)與測試 人教版年級數(shù)學(xué)上冊課件
- 高磷血癥課件
- 2018年浙江集成電路產(chǎn)業(yè)發(fā)展情況綜述
- 幼兒在家表現(xiàn)記錄表(最全范本)
- 【外研社Unipus】新探索(基礎(chǔ)級)讀寫U1課件-AE1
- 痛風(fēng)性關(guān)節(jié)炎 課件
- 車間凈化工程項目招標文件發(fā)標稿
- 給水管施工工藝及施工方法
- 急性致命性胸痛鑒別診斷
- 《服飾文化》課程教學(xué)大綱
- 環(huán)境影響評價文件編制和審查關(guān)注點及注意問題共70張幻燈片
- U8-cloud-資金管理解決方案
評論
0/150
提交評論