![第五章 分支程序設(shè)計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/27/319b1a7b-62d8-45d6-b10c-7e70a1189550/319b1a7b-62d8-45d6-b10c-7e70a11895501.gif)
![第五章 分支程序設(shè)計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/27/319b1a7b-62d8-45d6-b10c-7e70a1189550/319b1a7b-62d8-45d6-b10c-7e70a11895502.gif)
![第五章 分支程序設(shè)計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/27/319b1a7b-62d8-45d6-b10c-7e70a1189550/319b1a7b-62d8-45d6-b10c-7e70a11895503.gif)
![第五章 分支程序設(shè)計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/27/319b1a7b-62d8-45d6-b10c-7e70a1189550/319b1a7b-62d8-45d6-b10c-7e70a11895504.gif)
![第五章 分支程序設(shè)計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/27/319b1a7b-62d8-45d6-b10c-7e70a1189550/319b1a7b-62d8-45d6-b10c-7e70a11895505.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用第五章第五章 分支程序設(shè)計分支程序設(shè)計任課教師:陶雪麗任課教師:陶雪麗xueli_匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院22021-10-27本章內(nèi)容提要本章內(nèi)容提要 分支程序結(jié)構(gòu)分支程序結(jié)構(gòu)無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令分支程序設(shè)計方法分支程序設(shè)計方法分支程序設(shè)計舉例分支程序設(shè)計舉例匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院32021-10-27編寫匯編語言程序的步驟編寫匯編語言程序的步驟根據(jù)算法,畫出程序框圖。根據(jù)算法,畫出程
2、序框圖。根據(jù)框圖編寫程序。根據(jù)框圖編寫程序。分析題意,確定算法。分析題意,確定算法。上機調(diào)試程序。上機調(diào)試程序。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院42021-10-275.1 5.1 分支程序結(jié)構(gòu)分支程序結(jié)構(gòu)判斷的條件是各種指令,如判斷的條件是各種指令,如CMPCMP、TESTTEST等執(zhí)行后形成的狀態(tài)標志。等執(zhí)行后形成的狀態(tài)標志。分支程序根據(jù)條件是真或假決定執(zhí)行與否。分支程序根據(jù)條件是真或假決定執(zhí)行與否。 轉(zhuǎn)移指令轉(zhuǎn)移指令JccJcc和和JMPJMP可以實現(xiàn)分支控制;還可以采用可以實現(xiàn)分支控制;還可以采用MASM 6.xMASM
3、6.x提供的條件控制偽指令實現(xiàn)。提供的條件控制偽指令實現(xiàn)。分支結(jié)構(gòu)有三種形式:分支結(jié)構(gòu)有三種形式:單分支:相當(dāng)于高級語言中的單分支:相當(dāng)于高級語言中的IF_ELSEIF_ELSE雙分支:相當(dāng)于高級語言中的雙分支:相當(dāng)于高級語言中的IF_ELSE_THENIF_ELSE_THEN多分支:相當(dāng)于高級語言中的多分支:相當(dāng)于高級語言中的CASECASE如圖如圖5.105.10所示所示。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院52021-10-275.2 5.2 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令執(zhí)行的操作執(zhí)行的操作: 程序轉(zhuǎn)向程序轉(zhuǎn)向labellabe
4、l標號指定的地址。標號指定的地址。格式:格式:JMP labelJMP label 只要執(zhí)行無條件轉(zhuǎn)移指令只要執(zhí)行無條件轉(zhuǎn)移指令JMPJMP,就使程序轉(zhuǎn)到指定的目標地址處,就使程序轉(zhuǎn)到指定的目標地址處,從目標地址處開始執(zhí)行那里的指令。從目標地址處開始執(zhí)行那里的指令。 操作數(shù)操作數(shù)labellabel是要轉(zhuǎn)移到的目標地址(目的地址、轉(zhuǎn)移地址)。是要轉(zhuǎn)移到的目標地址(目的地址、轉(zhuǎn)移地址)。 JMP JMP指令不影響標志位。指令不影響標志位。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院62021-10-275.2 5.2 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指
5、令 JMPJMP(jmpjmp)跳轉(zhuǎn)指令分成四種類型:)跳轉(zhuǎn)指令分成四種類型:尋址方式:尋址方式:段內(nèi)轉(zhuǎn)移、直接尋址段內(nèi)轉(zhuǎn)移、直接尋址段內(nèi)直接短轉(zhuǎn)移、近轉(zhuǎn)移段內(nèi)直接短轉(zhuǎn)移、近轉(zhuǎn)移段內(nèi)轉(zhuǎn)移、間接尋址段內(nèi)轉(zhuǎn)移、間接尋址段內(nèi)間接近轉(zhuǎn)移段內(nèi)間接近轉(zhuǎn)移段間轉(zhuǎn)移、直接尋址段間轉(zhuǎn)移、直接尋址段間直接遠轉(zhuǎn)移段間直接遠轉(zhuǎn)移段間轉(zhuǎn)移、間接尋址段間轉(zhuǎn)移、間接尋址段間間接遠轉(zhuǎn)移段間間接遠轉(zhuǎn)移段內(nèi)轉(zhuǎn)移:段內(nèi)轉(zhuǎn)移:在同一段的范圍內(nèi)進行轉(zhuǎn)移,在同一段的范圍內(nèi)進行轉(zhuǎn)移,只需改變只需改變IP/EIPIP/EIP的內(nèi)容,即用新的轉(zhuǎn)移目的內(nèi)容,即用新的轉(zhuǎn)移目標地址代替原有的標地址代替原有的IP/EIPIP/EIP的值即可。的值即可
6、。段間轉(zhuǎn)移:段間轉(zhuǎn)移:在不同的段之間進行轉(zhuǎn)移,需在不同的段之間進行轉(zhuǎn)移,需改變改變CSCS和和IP/EIPIP/EIP的內(nèi)容,即用新的轉(zhuǎn)移目的內(nèi)容,即用新的轉(zhuǎn)移目標地址代替原有的標地址代替原有的CSCS和和IP/EIPIP/EIP的值。的值。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院72021-10-275.2 5.2 無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移指令 段內(nèi)直接短轉(zhuǎn)移段內(nèi)直接短轉(zhuǎn)移段內(nèi)直接近轉(zhuǎn)移段內(nèi)直接近轉(zhuǎn)移段內(nèi)間接近轉(zhuǎn)移段內(nèi)間接近轉(zhuǎn)移段間直接遠轉(zhuǎn)移段間直接遠轉(zhuǎn)移這些指令均不影響標志位。這些指令均不影響標志位。段間間接遠轉(zhuǎn)移段間間接遠轉(zhuǎn)移匯編語
7、言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院82021-10-27(1) (1) 段內(nèi)直接短轉(zhuǎn)移段內(nèi)直接短轉(zhuǎn)移執(zhí)行的操作執(zhí)行的操作: (IPIP)(IPIP)+8+8位位移量位位移量格式:格式:JMP SHORT OPR JMP SHORT OPR 386386及其后繼機型則為及其后繼機型則為:(EIPEIP)(EIPEIP)+8+8位位移量位位移量如操作數(shù)長度為如操作數(shù)長度為1616位,則還需位,則還需: :(EIPEIP)(EIPEIP) AND 0000FFFFHAND 0000FFFFH匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信
8、息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院92021-10-27(2) (2) 段內(nèi)直接近轉(zhuǎn)移段內(nèi)直接近轉(zhuǎn)移執(zhí)行的操作執(zhí)行的操作: (IPIP)(IPIP)+16+16位位移量位位移量格式:格式:JMP NEAR PTR OPR JMP NEAR PTR OPR 386386及其后繼機型則為及其后繼機型則為:(EIPEIP)(EIPEIP)+32+32位位移量位位移量如操作數(shù)長度為如操作數(shù)長度為1616位,則還需位,則還需: :(EIPEIP)(EIPEIP) AND 0000FFFFHAND 0000FFFFH 8086 8086及其他機型的實模式下段長為及其他機型的實模式下段長為64KB6
9、4KB,所以,所以1616位位移量可以轉(zhuǎn)位位移量可以轉(zhuǎn)移到段內(nèi)的任一個位置。移到段內(nèi)的任一個位置。 386 386及其后繼機型的保護模式下,段的大小可達及其后繼機型的保護模式下,段的大小可達4GB4GB,3232位位移量位位移量可轉(zhuǎn)到段內(nèi)的任何位置??赊D(zhuǎn)到段內(nèi)的任何位置。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院102021-10-27段內(nèi)直接轉(zhuǎn)移說明段內(nèi)直接轉(zhuǎn)移說明 位移量是緊接著位移量是緊接著JMPJMP指令后的那條指令的偏移地址,到目標指令指令后的那條指令的偏移地址,到目標指令的偏移地址的地址位移。的偏移地址的地址位移。 轉(zhuǎn)移的目標地
10、址在匯編格式中可直接使用符號地址。轉(zhuǎn)移的目標地址在匯編格式中可直接使用符號地址。 位移量是一個帶符號數(shù):當(dāng)向地址增大方向轉(zhuǎn)移時,位移量為正;位移量是一個帶符號數(shù):當(dāng)向地址增大方向轉(zhuǎn)移時,位移量為正;向地址減小方向轉(zhuǎn)移時,位移量為負。向地址減小方向轉(zhuǎn)移時,位移量為負。jmp againjmp again;轉(zhuǎn)移到;轉(zhuǎn)移到againagain處繼續(xù)執(zhí)行處繼續(xù)執(zhí)行again:again:dec cxdec cx;標號;標號againagain的指令的指令jmp outputjmp output;轉(zhuǎn)向;轉(zhuǎn)向outputoutputoutput:output: mov result,almov resul
11、t,al;標號;標號outputoutput的指令的指令匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院112021-10-27(3) (3) 段內(nèi)間接近轉(zhuǎn)移段內(nèi)間接近轉(zhuǎn)移執(zhí)行的操作執(zhí)行的操作: (IPIP)(EAEA)格式:格式:JMP WORD PTR OPR JMP WORD PTR OPR 386386及其后繼機型則為及其后繼機型則為:(EIPEIP)(EAEA)如操作數(shù)長度為如操作數(shù)長度為1616位,則還需位,則還需: :(EIPEIP)(EIPEIP) AND 0000FFFFHAND 0000FFFFH其中其中EAEA為有效地址,值
12、由為有效地址,值由OPROPR的尋址方式確定。的尋址方式確定。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院122021-10-27(3) (3) 段內(nèi)直接近轉(zhuǎn)移指令形式段內(nèi)直接近轉(zhuǎn)移指令形式JMP r16/m16JMP r16/m16;(;(IPIP)(r16/m16r16/m16)JMP r32/m32JMP r32/m32;(;(EIPEIP)(r32/m32r32/m32) 將一個將一個16/3216/32位寄存器或主存字位寄存器或主存字/ /雙字單元內(nèi)容送入雙字單元內(nèi)容送入IP/EIPIP/EIP寄存器,寄存器,作為新的指令指針,但不
13、修改作為新的指令指針,但不修改CSCS寄存器的內(nèi)容。寄存器的內(nèi)容。jmp axjmp ax;IPAXIPAXjmp word ptr 2000hjmp word ptr 2000h;IP2000hIP2000h匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院132021-10-27(4) (4) 段間直接遠轉(zhuǎn)移段間直接遠轉(zhuǎn)移執(zhí)行的操作執(zhí)行的操作: (IPIP)OPROPR的段內(nèi)偏移地址的段內(nèi)偏移地址(CSCS)OPROPR所在段的段地址所在段的段地址格式:格式:JMP FAR PTR OPR JMP FAR PTR OPR 386386及其后繼機
14、型則為及其后繼機型則為:(EIPEIP)OPROPR的段內(nèi)偏移地址的段內(nèi)偏移地址(CSCS)OPROPR所在段的段地址所在段的段地址如操作數(shù)長度為如操作數(shù)長度為1616位,則還需位,則還需: :(EIPEIP)(EIPEIP) AND 0000FFFFHAND 0000FFFFH這里使用的是直接尋址方式。在匯編格式中這里使用的是直接尋址方式。在匯編格式中OPROPR可使用符號地址??墒褂梅柕刂?。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院142021-10-27(4) (4) 段間直接轉(zhuǎn)移指令形式段間直接轉(zhuǎn)移指令形式JMP far ptr
15、labelJMP far ptr label;(;(IP/EIPIP/EIP)labellabel的偏移地址的偏移地址;(;(CSCS)labellabel的段地址的段地址 將標號所在段的段地址作為新的將標號所在段的段地址作為新的CSCS值,標號在該段內(nèi)的偏移地址值,標號在該段內(nèi)的偏移地址作為新的作為新的IP/EIPIP/EIP值;這樣,程序跳轉(zhuǎn)到新的代碼段執(zhí)行。值;這樣,程序跳轉(zhuǎn)到新的代碼段執(zhí)行。jmp far ptr othersegjmp far ptr otherseg;遠轉(zhuǎn)移到代碼段;遠轉(zhuǎn)移到代碼段2 2的的othersegotherseg匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)
16、計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院152021-10-27(5) (5) 段間間接遠轉(zhuǎn)移段間間接遠轉(zhuǎn)移執(zhí)行的操作執(zhí)行的操作: (IPIP)(EAEA)(CSCS)(EAEA)2 2格式:格式:JMP DWORD PTR OPR JMP DWORD PTR OPR 386386及其后繼機型則為及其后繼機型則為:(EIPEIP) (EAEA)(CSCS) (EAEA)4 4如操作數(shù)長度為如操作數(shù)長度為1616位,則還需位,則還需: :(EIPEIP)(EIPEIP) AND 0000FFFFHAND 0000FFFFH其中其中EAEA為有效地址,值由為有效地址,值由OPROPR的
17、尋址方式確定。的尋址方式確定。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院162021-10-27(5) (5) 段間間接轉(zhuǎn)移指令形式段間間接轉(zhuǎn)移指令形式JMP far ptr m16JMP far ptr m16;(;(IPIP)(m16m16);(;(CSCS) (mem+2mem+2) 用一個雙字存儲單元表示要跳轉(zhuǎn)的目標地址。這個目標地址存放用一個雙字存儲單元表示要跳轉(zhuǎn)的目標地址。這個目標地址存放在主存中連續(xù)的兩個字在主存中連續(xù)的兩個字/ /雙字單元中的,低位字雙字單元中的,低位字/ /雙字送雙字送IP/EIPIP/EIP寄存器,寄存器
18、,高位字送高位字送CSCS寄存器。寄存器。mov word ptr bx,0mov word ptr bx,0mov word ptr bx+2,1500hmov word ptr bx+2,1500hJMP far ptr bx JMP far ptr bx ;轉(zhuǎn)移到;轉(zhuǎn)移到1500h:01500h:0JMP DWORD PTR ALPHASPDIJMP DWORD PTR ALPHASPDIJMP far ptr m32JMP far ptr m32;(;(EIPEIP)(m32m32);(;(CSCS) (mem+4mem+4)匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)
19、學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院172021-10-275.3 5.3 條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令執(zhí)行的操作執(zhí)行的操作: 條件滿足,則轉(zhuǎn)移,條件滿足,則轉(zhuǎn)移,IPIP+8IPIP+8位位移量或位位移量或EIPEIP+8/32EIPEIP+8/32位位位移量;條件不滿足,則順序執(zhí)行。位移量;條件不滿足,則順序執(zhí)行。格式:格式:Jcc labelJcc label 指定的條件指定的條件cccc如果成立,程序轉(zhuǎn)移到由標號如果成立,程序轉(zhuǎn)移到由標號labellabel指定的目標地指定的目標地址去執(zhí)行指令;條件不成立,則程序?qū)㈨樞驁?zhí)行下一條指令(址去執(zhí)行指令;條件不成立,則程序?qū)㈨樞驁?zhí)行下一條指令(J
20、ccJcc指指令為令為2 2個字節(jié),所以順序執(zhí)行就是當(dāng)前指令偏移指針個字節(jié),所以順序執(zhí)行就是當(dāng)前指令偏移指針I(yè)PIP加加2 2)。)。 條件轉(zhuǎn)移指令采用了相對尋址方式,只能用條件轉(zhuǎn)移指令采用了相對尋址方式,只能用JMPJMP指令中的短轉(zhuǎn)移指令中的短轉(zhuǎn)移格式。格式。 所有的條件轉(zhuǎn)移指令都不影響標志位。所有的條件轉(zhuǎn)移指令都不影響標志位。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院182021-10-27JCCJCC指令的分類指令的分類 Jcc Jcc指令不影響標志,但要利用標志(指令不影響標志,但要利用標志(見表見表3.53.5)。根據(jù)利用的標)
21、。根據(jù)利用的標志位不同,志位不同,JCCJCC指令分成指令分成4 4種情況:種情況:1. 1. 判斷單個標志位狀態(tài)判斷單個標志位狀態(tài)2. 2. 比較無符號數(shù)高低比較無符號數(shù)高低3. 3. 比較有符號數(shù)大小比較有符號數(shù)大小4. 4. 測試測試CXCX或或ECXECX的值的值匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院192021-10-27(1 1)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移JZ/JEJZ/JE(jump if zero , or equaljump if zero , or equal)結(jié)果為零)結(jié)果為零/
22、 /相等則轉(zhuǎn)移相等則轉(zhuǎn)移測試條件:測試條件:ZFZF1 1JNZ/JNEJNZ/JNE(jump if not zero , or not equaljump if not zero , or not equal)結(jié)果不為零)結(jié)果不為零/ /不相不相等則轉(zhuǎn)移等則轉(zhuǎn)移測試條件:測試條件:ZFZF0 0JSJS(jump if signjump if sign)結(jié)果為負則轉(zhuǎn)移)結(jié)果為負則轉(zhuǎn)移測試條件:測試條件:SFSF1 1JNSJNS(jump if not signjump if not sign)結(jié)果為正則轉(zhuǎn)移)結(jié)果為正則轉(zhuǎn)移測試條件:測試條件:SFSF0 0示例示例1 1示例示例2 2匯編
23、語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院202021-10-27(1 1)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移JOJO(jump if overflowjump if overflow)溢出則轉(zhuǎn)移)溢出則轉(zhuǎn)移測試條件:測試條件:OFOF1 1JNOJNO(jump if not overflowjump if not overflow)不溢出則轉(zhuǎn)移)不溢出則轉(zhuǎn)移測試條件:測試條件:OFOF0 0JP/JPEJP/JPE(jump if parity , or parity evenjump if parity , o
24、r parity even)奇偶位為)奇偶位為1 1則轉(zhuǎn)移則轉(zhuǎn)移測試條件:測試條件:PFPF1 1JNP/JPOJNP/JPO(jump if not parity , or parity oddjump if not parity , or parity odd)奇偶位為)奇偶位為0 0則則轉(zhuǎn)移轉(zhuǎn)移測試條件:測試條件:PFPF0 0示例示例3 3示例示例4 4匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院212021-10-27(1 1)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移)根據(jù)單個條件標志的設(shè)置情況轉(zhuǎn)移JB/JNAE/JCJB/JNAE/JC(j
25、ump if below , or not above or equal , or jump if below , or not above or equal , or carrycarry)低于)低于/ /不高于等于不高于等于/ /進位為進位為1 1則轉(zhuǎn)移則轉(zhuǎn)移測試條件:測試條件:CFCF1 1JNB/JAE/JNCJNB/JAE/JNC(jump if not below , or above or equal , or jump if not below , or above or equal , or not carrynot carry)不低于)不低于/ /高于等于高于等于/ /進位
26、為進位為0 0則轉(zhuǎn)移則轉(zhuǎn)移測試條件:測試條件:CFCF0 0示例示例5 5匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院222021-10-27(2 2)比較兩個無符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移)比較兩個無符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移無符號數(shù)的大小用高(無符號數(shù)的大小用高(AboveAbove)低()低(BelowBelow)表示。)表示。利用利用CFCF確定高低、利用確定高低、利用ZFZF標志確定相等(標志確定相等(EqualEqual)。)。JB/JNAE JB/JNAE (jump if below , or not above or eq
27、ual jump if below , or not above or equal )低于)低于/ /不不高于等于高于等于測試條件:測試條件:CFCF1 1JNB/JAEJNB/JAE(jump if not below , or above or equal jump if not below , or above or equal )不低于)不低于/ /高于等于高于等于/ /進位為進位為0 0則轉(zhuǎn)移則轉(zhuǎn)移測試條件:測試條件:CFCF0 0示例示例6 6匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院232021-10-27(2 2)比較兩個無
28、符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移)比較兩個無符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移JBE/JNAJBE/JNA(jump if below or equal , or not above jump if below or equal , or not above )低于等于)低于等于/ /不高于則轉(zhuǎn)移不高于則轉(zhuǎn)移測試條件:測試條件:CFCFZFZF1 1JNBE/JAJNBE/JA(jump if not below or equal , or above jump if not below or equal , or above )不低于等)不低于等于于/ /高于則轉(zhuǎn)移高于則轉(zhuǎn)移測試條件:測試條件:CFC
29、FZFZF0 0匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院242021-10-27(3 3)比較兩個帶符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移)比較兩個帶符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移 有符號數(shù)的大(有符號數(shù)的大(GreaterGreater)?。ǎ┬。↙essLess)需要組合)需要組合OFOF、SFSF標志,標志,并利用并利用ZFZF標志確定相等(標志確定相等(EqualEqual)。)。JL/JNGEJL/JNGE(jump if less , or not greater or equal jump if less , or not greate
30、r or equal )小于)小于/ /不不大于等于則轉(zhuǎn)移大于等于則轉(zhuǎn)移測試條件:測試條件:SFOFSFOFJNL/JGEJNL/JGE(jump if not less , or greater or equal jump if not less , or greater or equal )不小于)不小于/ /大于等于則轉(zhuǎn)移大于等于則轉(zhuǎn)移測試條件:測試條件:SFSFOFOF示例示例6 6示例示例7 7匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院252021-10-27(3 3)比較兩個帶符號數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移)比較兩個帶符號數(shù),并根
31、據(jù)比較的結(jié)果轉(zhuǎn)移JLE/JNGJLE/JNG(jump if less or equal , or not greater jump if less or equal , or not greater )小于等)小于等于于/ /不大于則轉(zhuǎn)移不大于則轉(zhuǎn)移測試條件:測試條件:(SFOFSFOF) ZF=1ZF=1JNLE/JGJNLE/JG(jump if not less or equal , or greater jump if not less or equal , or greater )不小于)不小于等于等于/ /大于則轉(zhuǎn)移大于則轉(zhuǎn)移測試條件:測試條件:(SFOFSFOF) ZF=0ZF
32、=0示例示例8 8綜合舉例綜合舉例無符號數(shù)比較轉(zhuǎn)移指令測試條件分析無符號數(shù)比較轉(zhuǎn)移指令測試條件分析帶符號數(shù)比較轉(zhuǎn)移指令測試條件分析帶符號數(shù)比較轉(zhuǎn)移指令測試條件分析匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院262021-10-27(4 4)測試)測試CXCX或或ECXECX的值為的值為0 0則轉(zhuǎn)移則轉(zhuǎn)移JCXZJCXZ(jump if CX register is zero jump if CX register is zero )CXCX寄存器的內(nèi)容為零則寄存器的內(nèi)容為零則轉(zhuǎn)移轉(zhuǎn)移測試條件:測試條件:CX=0CX=0JECXZJECXZ(j
33、ump if ECX register is zero jump if ECX register is zero )ECXECX寄存器的內(nèi)容為零寄存器的內(nèi)容為零則轉(zhuǎn)移(則轉(zhuǎn)移(386386及其后繼機型可用)及其后繼機型可用)測試條件:測試條件:CX=0CX=0匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院272021-10-275.4 5.4 分支程序設(shè)計方法分支程序設(shè)計方法單分支、雙分支舉例單分支、雙分支舉例單分支單分支求絕對值求絕對值、無符號數(shù)除以無符號數(shù)除以2 2雙分支雙分支顯示顯示BXBX最高位最高位、判斷有無實根判斷有無實根、折半查找
34、折半查找例例5.9 5.9 匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院282021-10-27折半查找算法折半查找算法(1 1)初始化被查找數(shù)組的首尾下標,初始化被查找數(shù)組的首尾下標,lowlow1 1,highhighn n;(2 2)若若lowhighlowhigh,則查找失敗,置,則查找失敗,置CF=1CF=1,退出程序。否則,計算,退出程序。否則,計算中點:中點:midmid(lowlowhighhigh)/2/2;(3 3)k k與中點元素與中點元素rmidrmid比較。若比較。若k=rmidk=rmid,則查找成功,程序,則查找
35、成功,程序結(jié)束;若結(jié)束;若krmidkmidkmid,則轉(zhuǎn)步驟,則轉(zhuǎn)步驟(5 5);(4 4)低半部分查找(低半部分查找(lowerlower),),highmidhighmid1 1,返回步驟,返回步驟(2 2),),繼續(xù)查找;繼續(xù)查找;(5 5)高半部分查找(高半部分查找(higherhigher),), lowmid+1lowmid+1,返回步驟,返回步驟(2 2),),繼續(xù)查找。繼續(xù)查找。 在一個長度為在一個長度為n n的有序數(shù)組的有序數(shù)組r r中,查找元素中,查找元素k k的折半查找算法描述的折半查找算法描述如下:如下:匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院
36、河南師范大學(xué)計算機與信息技術(shù)學(xué)院292021-10-27多分支結(jié)構(gòu)實現(xiàn)方法多分支結(jié)構(gòu)實現(xiàn)方法 多分支結(jié)構(gòu):多分支結(jié)構(gòu):多個條件對應(yīng)各自的分支語句體,哪個條件成立就多個條件對應(yīng)各自的分支語句體,哪個條件成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行。多分支可以化解為雙分支或單分支結(jié)構(gòu)的組合,轉(zhuǎn)入相應(yīng)分支體執(zhí)行。多分支可以化解為雙分支或單分支結(jié)構(gòu)的組合,例如:例如:or ah , ahor ah , ah; ;等效于等效于cmp ah , 0cmp ah , 0jz function0jz function0;ah;ah0 0,轉(zhuǎn)向,轉(zhuǎn)向function0function0 dec ahdec ah; ;等效于等效于c
37、mp ah , 1cmp ah , 1 jz function1jz function1;ah;ah1 1,轉(zhuǎn)向,轉(zhuǎn)向function1function1 dec ahdec ah; ;等效于等效于cmp ah , 2cmp ah , 2 jz function2jz function2;ah;ah2 2,轉(zhuǎn)向,轉(zhuǎn)向function2function2如圖所示。如圖所示。匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院302021-10-27跳躍表法跳躍表法需要在數(shù)據(jù)段事先安排一個按順序排列的轉(zhuǎn)移地址表。需要在數(shù)據(jù)段事先安排一個按順序排列的轉(zhuǎn)移地
38、址表。 輸入的數(shù)字作為偏移量。因為只有輸入的數(shù)字作為偏移量。因為只有2 2個字節(jié)個字節(jié)1616位偏移地址,所以位偏移地址,所以偏移量需要乘偏移量需要乘2 2。 多分支結(jié)構(gòu)的實現(xiàn),還可以使用跳躍表法,使程序能根據(jù)不同的多分支結(jié)構(gòu)的實現(xiàn),還可以使用跳躍表法,使程序能根據(jù)不同的條件轉(zhuǎn)移到多個程序分支中去。條件轉(zhuǎn)移到多個程序分支中去。關(guān)鍵是要理解間接尋址方式關(guān)鍵是要理解間接尋址方式JMPJMP指令指令地址表地址表分支分支1 1地址地址分支分支2 2地址地址.TableTabledw disp1, disp2, disp3, disp4, .dw disp1, disp2, disp3, disp4,
39、.匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院312021-10-27跳躍表實現(xiàn)舉例跳躍表實現(xiàn)舉例例例5.105.10 a a變址尋址方式變址尋址方式例例5.105.10 b b間接尋址方式間接尋址方式例例5.10c5.10c基址變址尋址方式基址變址尋址方式JMPJMP指令所用的尋指令所用的尋址方式址方式匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院322021-10-27表表3.5 Jcc3.5 Jcc指令指令匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機
40、與信息技術(shù)學(xué)院332021-10-27 JZ/JNZJZ/JNZ指令舉例指令舉例test al,80htest al,80h;測試最高位;測試最高位jz next0jz next0;D7D70 0(ZFZF1 1),轉(zhuǎn)移),轉(zhuǎn)移mov ah,0ffhmov ah,0ffh;D7D71 1,順序執(zhí)行,順序執(zhí)行jmp jmp donedone;無條件轉(zhuǎn)向;無條件轉(zhuǎn)向next0:next0: mov ah,0mov ah,0done:done:.test al,80htest al,80h;測試最高位;測試最高位jnz next1jnz next1;D7D71 1(ZFZF0 0),轉(zhuǎn)移),轉(zhuǎn)移mo
41、v ah,0mov ah,0;D7D70 0,順序執(zhí)行,順序執(zhí)行jmp donejmp done;無條件轉(zhuǎn)向;無條件轉(zhuǎn)向next1:next1: mov ah,0ffhmov ah,0ffhdone:done:.匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院342021-10-27 JS/JNSJS/JNS指令舉例指令舉例;計算;計算|X|XY|Y|(絕對值)(絕對值);X X和和Y Y為存放于為存放于X X單元和單元和Y Y單元的單元的1616位操作數(shù)位操作數(shù);結(jié)果存入;結(jié)果存入resultresultmov ax,Xmov ax,Xsub
42、ax,Ysub ax,Yjns nonnegjns nonnegneg axneg ax;negneg是求補指令是求補指令nonneg:nonneg:mov result,axmov result,ax匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院352021-10-27 JO/JNOJO/JNO指令舉例指令舉例;計算;計算X XY Y;X X和和Y Y為存放于為存放于X X單元和單元和Y Y單元的單元的1616位操作數(shù)位操作數(shù);若溢出,則轉(zhuǎn)移到;若溢出,則轉(zhuǎn)移到overflowoverflow處理處理mov ax,Xmov ax,Xsub a
43、x,Ysub ax,Yjo overflowjo overflow.;無溢出,結(jié)果正確;無溢出,結(jié)果正確overflow:overflow:.;有溢出處理;有溢出處理匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院362021-10-27 JP/JNPJP/JNP指令舉例指令舉例;設(shè)字符的;設(shè)字符的ASCIIASCII碼在碼在ALAL寄存器中寄存器中;將字符加上奇校驗位;將字符加上奇校驗位;在字符;在字符ASCIIASCII碼中為碼中為“1 1”的個數(shù)已為奇數(shù)時的個數(shù)已為奇數(shù)時;則令其最高位為;則令其最高位為“0 0”;否則令最高位為;否則令最高
44、位為“1 1”and al,7fhand al,7fh;最高位置;最高位置“0 0”,同時判斷,同時判斷“1 1”的個數(shù)的個數(shù)jnp nextjnp next;個數(shù)已為奇數(shù),則轉(zhuǎn)向;個數(shù)已為奇數(shù),則轉(zhuǎn)向nextnextor al,80hor al,80h;否則,最高位置;否則,最高位置“1 1”next:next:.匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院372021-10-27 JC/JNCJC/JNC指令舉例指令舉例-1-1;記錄;記錄BXBX中中1 1的個數(shù)的個數(shù)xor al,alxor al,al;ALAL0 0,CFCF0 0a
45、gain:again: test bx,0ffffh test bx,0ffffh ;等價于;等價于 cmp bx,0cmp bx,0je nextje nextshl bx,1shl bx,1jnc againjnc againinc alinc aljmp againjmp againnext:next:.;ALAL保存保存1 1的個數(shù)的個數(shù)匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院382021-10-27 記錄記錄BXBX中中1 1的個數(shù)的個數(shù)-2-2;記錄;記錄BXBX中中1 1的個數(shù)的個數(shù)xor al,alxor al,al;AL
46、AL0 0,CFCF0 0again:again: cmp bx,0cmp bx,0jz nextjz nextshl bx,1shl bx,1;也可使用;也可使用 shr bx,1shr bx,1adc al,0adc al,0jmp againjmp againnext:next:.;ALAL保存保存1 1的個數(shù)的個數(shù)匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院392021-10-27 無符號數(shù)比較和帶符號數(shù)比較舉例無符號數(shù)比較和帶符號數(shù)比較舉例;無符號數(shù)比較;無符號數(shù)比較cmp ax,bxcmp ax,bx;比較;比較axax和和bxb
47、xjnb nextjnb next;若;若axbxaxbx,轉(zhuǎn)移,轉(zhuǎn)移xchg ax,bxxchg ax,bx;若;若axaxbxbx,交換,交換next:next:. ;帶符號數(shù)比較;帶符號數(shù)比較cmp ax,bxcmp ax,bx;比較;比較axax和和bxbxjnl nextjnl next;若;若axbxaxbx,轉(zhuǎn)移,轉(zhuǎn)移xchg ax,bxxchg ax,bx;若;若axaxbxbx,交換,交換next:next:.匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院402021-10-27 兩數(shù)比較舉例兩數(shù)比較舉例例例3.77 3.77
48、 ;、為兩個雙精度數(shù),為兩個雙精度數(shù),;分別存儲于;分別存儲于DXDX、AXAX及及BXBX、CXCX中。中。CMP DX , BXCMP DX , BXJG XJG XJL YJL YCMP AX , CXCMP AX , CXJA XJA XY:Y:X:X:匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院412021-10-27 JGJG、JNSJNS指令舉例指令舉例例例3.76 3.76 ;X X,Y Y均為存放在均為存放在X X和和Y Y單元中的單元中的1616位操作數(shù)位操作數(shù)MOV AX , XMOV AX , XCMP AX , 50
49、CMP AX , 50JG TOO_HIGHJG TOO_HIGHSUB AX , YSUB AX , YJO OVERFLOWJO OVERFLOWJNS NONNEGJNS NONNEGNEG AXNEG AXNONNEG:NONNEG:MOV RESULT , AXMOV RESULT , AXTOO_HIGH:TOO_HIGH:OVERFLOW:OVERFLOW:匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院422021-10-27 綜合舉例綜合舉例-1-1例例3.78 3.78 ;測試首地址為;測試首地址為ARRAYARRAY的的N
50、N字數(shù)組中正數(shù)及負數(shù)的個數(shù)。字數(shù)組中正數(shù)及負數(shù)的個數(shù)。;正數(shù)的個數(shù)放在;正數(shù)的個數(shù)放在DIDI中,中,0 0的個數(shù)放在的個數(shù)放在SISI中,中,;負數(shù)的個數(shù)放在;負數(shù)的個數(shù)放在AXAX中,中,;若有負數(shù)則轉(zhuǎn)移到;若有負數(shù)則轉(zhuǎn)移到NEG_VALNEG_VAL中去執(zhí)行。中去執(zhí)行。mov cx , Nmov cx , Nmov bx , 0mov bx , 0mov di , bxmov di , bxmov si , bxmov si , bxagain:again: cmp arraybx , 0cmp arraybx , 0jle less_or_eqjle less_or_eqinc dii
51、nc di匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院432021-10-27 綜合舉例綜合舉例-2-2jmp short nextjmp short nextless_or_eq:less_or_eq: jl nextjl nextinc siinc sinext:next: add bx , 2add bx , 2dec cxdec cxjnz againjnz againmov ax , Nmov ax , Nsub ax , disub ax , disub ax , sisub ax , sijz skipjz skipjmp ne
52、ar ptr neg_valjmp near ptr neg_valskip:skip:neg_val:neg_val:匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院442021-10-27圖圖5.10 5.10 分支程序的結(jié)構(gòu)形式分支程序的結(jié)構(gòu)形式匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院452021-10-27 分支程序舉例分支程序舉例-1-1;計算;計算AXAX的絕對值的絕對值cmp ax , 0cmp ax , 0jns nonnegjns nonneg; ;分支條件:分支條件:AX
53、0AX0neg axneg ax; ;條件不滿足,求補條件不滿足,求補nonneg:nonneg:mov result , axmov result , ax; ;條件滿足條件滿足;計算;計算AXAX的絕對值的絕對值cmp ax,0cmp ax,0jl yesnegjl yesneg; ;分支條件:分支條件:AXAX0 0jmp nonnegjmp nonnegyesneg:yesneg:neg axneg ax; ;條件不滿足,求補條件不滿足,求補nonneg:nonneg:mov result , axmov result , ax; ;條件滿足條件滿足匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南
54、師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院462021-10-27 分支程序舉例分支程序舉例-2-2;無符號數(shù)除以;無符號數(shù)除以2 2;將;將AXAX中存放的無符號數(shù)除以中存放的無符號數(shù)除以2 2,如果是奇數(shù),則加,如果是奇數(shù),則加1 1后除以后除以2 2test ax,01htest ax,01h; ;測試測試AXAX最低位最低位jz evenjz even; ;最低位為最低位為0 0:AXAX為偶數(shù)為偶數(shù)add ax,1add ax,1; ;最低位為最低位為1 1:AXAX為奇數(shù),需要加為奇數(shù),需要加1 1even:even:rcr ax,1rcr ax,1;AXAX;A
55、XAX2 2; ;如果采用如果采用SHRSHR指令,則不能處理指令,則不能處理AXAXFFFFHFFFFH的特殊情況的特殊情況匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院472021-10-27 分支程序舉例分支程序舉例-3-3;顯示;顯示BXBX最高位最高位-1-1shl bx , 1shl bx , 1;BX;BX最高位移入最高位移入CFCFjc onejc one;CF;CF1 1,即最高位為,即最高位為1 1,轉(zhuǎn)移,轉(zhuǎn)移mov dl , mov dl , 0 0;CF;CF0 0,即最高位為,即最高位為0 0,DLDL0 0jmp t
56、wojmp two; ;一定要跳過另一個分支體一定要跳過另一個分支體one:one:mov dl , mov dl , 1 1;DL;DL1 1two:two:mov ah , 2mov ah , 2int 21hint 21h; ;顯示顯示對比對比匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院482021-10-27 分支程序舉例分支程序舉例-3-3;顯示;顯示BXBX最高位最高位-2-2shl bx,1shl bx,1;BX;BX最高位移入最高位移入CFCFjnc onejnc one;CF;CF0 0,即最高位為,即最高位為0 0,轉(zhuǎn)移,
57、轉(zhuǎn)移mov dl,mov dl,1 1;CF;CF1 1,即最高位為,即最高位為1 1,DLDL1 1jmp twojmp two; ;一定要跳過另一個分支體一定要跳過另一個分支體one:one:mov dl,mov dl,0 0 ;DL;DL0 0two:two:mov ah,2mov ah,2int 21hint 21h; ;顯示顯示對比對比匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院492021-10-27 分支程序舉例分支程序舉例-4-4;判斷有無實根;判斷有無實根;判斷方程;判斷方程ax2+bx+c=0ax2+bx+c=0是否有實根
58、。若有實根則將字節(jié)變量是否有實根。若有實根則將字節(jié)變量tagtag置置為為1 1,否則置,否則置0 0。.startup.startupmov mov al , _bal , _bimul imul alalmovmovbx , axbx , ax;BX;BX中為中為b2b2mov mov al , _aal , _aimul imul _c_cmov mov cx , 4cx , 4imul cximul cx;AX;AX中為中為4ac4ac(DXDX無有效數(shù)據(jù))無有效數(shù)據(jù))匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計算機與信息技術(shù)學(xué)院502021-10-2
59、7 分支程序舉例分支程序舉例-4-4cmp cmp bx , axbx , ax; ;比較二者大小比較二者大小jge jge yesyes; ;條件滿足?條件滿足?mov mov tag , 0tag , 0; ;第一分支體:條件不滿足,第一分支體:條件不滿足,tag0tag0jmp jmp donedone; ;跳過第二個分支體跳過第二個分支體yes:yes:mov mov tag , 1tag , 1; ;第二分支體:條件滿足,第二分支體:條件滿足,tag1tag1done:done:.exit 0.exit 0匯編語言程序設(shè)計方法、技術(shù)、應(yīng)用河南師范大學(xué)計算機與信息技術(shù)學(xué)院河南師范大學(xué)計
60、算機與信息技術(shù)學(xué)院512021-10-27 分支程序舉例分支程序舉例-5-5例例5.9 5.9 在附加段中,有一個按從小到大順序排列的無符號數(shù)數(shù)組,在附加段中,有一個按從小到大順序排列的無符號數(shù)數(shù)組,其首地址存放在其首地址存放在DIDI寄存器中,數(shù)組的第一個單元存放著數(shù)組長度。寄存器中,數(shù)組的第一個單元存放著數(shù)組長度。在在AXAX中有一個無符號數(shù)。中有一個無符號數(shù)。要求在數(shù)組中查找(要求在數(shù)組中查找(AXAX),如找到,則使),如找到,則使CF=0CF=0,并在,并在SISI中給出該中給出該元素在數(shù)組中的偏移地址;如未找到,則使元素在數(shù)組中的偏移地址;如未找到,則使CFCF1 1。; ;* *
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- PTX-PEG-Cy3-生命科學(xué)試劑-MCE-5984
- Methyl-lucidenate-L-生命科學(xué)試劑-MCE-3864
- 19-R-Hydroxy-prostaglandin-F1α-生命科學(xué)試劑-MCE-5137
- 5-Fluoro-PB-22-5-hydroxyquinoline-isomer-生命科學(xué)試劑-MCE-6038
- 2-Chloromethyl-3-2-methylphenyl-quinazolin-4-3H-one-生命科學(xué)試劑-MCE-5287
- 二零二五年度汽車指標租賃與綠色出行獎勵計劃合同
- 二零二五年度特色門面租賃合同范本
- 2025年度住宅小區(qū)車位租賃及物業(yè)管理服務(wù)協(xié)議
- 2025年度試用期勞動合同范本-高科技研發(fā)團隊
- 2025年度電焊工用工技能鑒定與職業(yè)發(fā)展合同書二零二五年度
- 教體局校車安全管理培訓(xùn)
- 湖北省十堰市城區(qū)2024-2025學(xué)年九年級上學(xué)期期末質(zhì)量檢測綜合物理試題(含答案)
- 導(dǎo)播理論知識培訓(xùn)班課件
- 空氣能安裝合同
- 電廠檢修安全培訓(xùn)課件
- 四大名繡課件-高一上學(xué)期中華傳統(tǒng)文化主題班會
- 起重機械生產(chǎn)單位題庫質(zhì)量安全員
- 高中生物選擇性必修1試題
- 電氣工程及其自動化專業(yè)《畢業(yè)設(shè)計(論文)及答辯》教學(xué)大綱
- 《客艙安全管理與應(yīng)急處置》課件-第14講 應(yīng)急撤離
- 危險化學(xué)品押運員培訓(xùn)
評論
0/150
提交評論