九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

第4章分支程序設(shè)計(jì)

上傳人:仙*** 文檔編號(hào):239603964 上傳時(shí)間:2024-02-06 格式:PPT 頁數(shù):34 大?。?88KB
收藏 版權(quán)申訴 舉報(bào) 下載
第4章分支程序設(shè)計(jì)_第1頁
第1頁 / 共34頁
第4章分支程序設(shè)計(jì)_第2頁
第2頁 / 共34頁
第4章分支程序設(shè)計(jì)_第3頁
第3頁 / 共34頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《第4章分支程序設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《第4章分支程序設(shè)計(jì)(34頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第4章 分支程序設(shè)計(jì)第4章 分支程序設(shè)計(jì)4.1 條件標(biāo)志位的設(shè)置規(guī)則4.2 轉(zhuǎn)移指令4.2.1 無條件轉(zhuǎn)移指令4.2.2 條件轉(zhuǎn)移指令4.3 分支結(jié)構(gòu)程序設(shè)計(jì) 控制轉(zhuǎn)移類指令通過改變控制轉(zhuǎn)移類指令通過改變IP(和和CS)值,實(shí)現(xiàn)程序執(zhí)行順序的改變值,實(shí)現(xiàn)程序執(zhí)行順序的改變第4章 分支程序設(shè)計(jì)4.1 條件標(biāo)志位的設(shè)置規(guī)則決定轉(zhuǎn)移的標(biāo)志位(1)進(jìn)位標(biāo)志CF當(dāng)無符號(hào)數(shù)運(yùn)算結(jié)果的最高有效位有進(jìn)位(加法)或借位(減法)時(shí),進(jìn)位標(biāo)志置1;否則置0(2)零標(biāo)志ZF若運(yùn)算結(jié)果為0,則ZF=1;否則ZF=0(3)符號(hào)標(biāo)志SF運(yùn)算結(jié)果最高位為1,則SF=1;否則SF=0(4)溢出標(biāo)志 OF 若無符號(hào)數(shù)運(yùn)算的結(jié)果有

2、溢出,則OF1;否則 OF0(5)奇偶標(biāo)志 PF當(dāng)運(yùn)算結(jié)果中“1”的個(gè)數(shù)為零或偶數(shù)時(shí),PF=1;否則PF=0第4章 分支程序設(shè)計(jì)4.1 條件標(biāo)志位的設(shè)置規(guī)則MOV指令不影響標(biāo)志位;加減指令影響上述所有標(biāo)志,但增1和減1指令不影響CF;乘除指令只影響CF和OF設(shè)AX=78C4H,BX=9F35H.通過示例觀察每條指令執(zhí)行后對(duì)標(biāo)志位的影響CFSFOFZFPFADD AX,BX1000ADD AH,AL0110ADD AH,BL0100SUB AX,BXSUB BX,BXSUB AH,BH第4章 分支程序設(shè)計(jì)4.2.1 無條件轉(zhuǎn)移指令(OPD+2)CS注意注意:實(shí)實(shí)際際編編程程時(shí)時(shí),匯匯編編程程序序

3、會(huì)會(huì)根根據(jù)據(jù)目目標(biāo)標(biāo)地地址址的的距距離離,自自動(dòng)動(dòng)處處理理成成短短轉(zhuǎn)轉(zhuǎn)移移、近近轉(zhuǎn)轉(zhuǎn)移移或遠(yuǎn)轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移 程序員可用操作符程序員可用操作符short、near ptr 或或far ptr 強(qiáng)制強(qiáng)制返回首頁返回首頁JMP FAR PTR JMP FAR PTR 標(biāo)號(hào)標(biāo)號(hào)JMP NEAR PTR JMP NEAR PTR 標(biāo)號(hào)標(biāo)號(hào)JMP DWORD PTR OPDJMP DWORD PTR OPDJMP WORD PTR OPDJMP WORD PTR OPD第4章 分支程序設(shè)計(jì)例 請(qǐng)寫出下列轉(zhuǎn)移指令的尋址方式,并求出執(zhí)行該轉(zhuǎn)移指令后,IP寄存器、CS寄存器的內(nèi)容是什么?TABLE是字變量,變量的

4、值是100H;PROG是近標(biāo)號(hào),表示偏移地址200H,ECX的內(nèi)容02D3 7650H,段屬性值為38E0H。當(dāng)前IP的內(nèi)容是1000H,CS的內(nèi)容是38ACH,DS的內(nèi)容是28E0H,BX的內(nèi)容是10H,DI的內(nèi)容是20H。JMP PROG JMP WORD PTR BX JMP DWORD PTR TABLEBX JMP ECX JMP FAR PTR PROG JMP BXDI 段間間接尋址執(zhí)行該指令后(IP)=(DS)*10H+(BX)+位移量)的低字=(28F10H)低字,(CS)=(DS)*10H+(BX)+位移量)的高字=(28F10H)高字 段間間接尋址,執(zhí)行該指令后(IP)=

5、(ECX)低字=7650H,(CS)=(ECX)高字=02D3H 段間直接尋址,執(zhí)行該指令后(IP)=(PROG)偏移屬性=0200H,(CS)=(PROG)段屬性=38E0H 段內(nèi)間接尋址,執(zhí)行該指令后(IP)=(DS)*10H+(BX)+(DI)=(28E00H+10H+20H)=(28E30H)段內(nèi)直接程序存儲(chǔ)器尋址執(zhí)行該指令后(IP)=(PROG)偏移屬性=0200H 段內(nèi)間接程序存儲(chǔ)器尋址執(zhí)行該指令后(IP)=(DS)*10H+(BX)=(28E00H+10H)=(28E10H)第4章 分支程序設(shè)計(jì)JMP指令:段內(nèi)直接轉(zhuǎn)移第4章 分支程序設(shè)計(jì)JMP指令:段內(nèi)寄存器間接轉(zhuǎn)移第4章 分支

6、程序設(shè)計(jì)JMP指令:段間直接轉(zhuǎn)移第4章 分支程序設(shè)計(jì)JMP指令:段間間接轉(zhuǎn)移第4章 分支程序設(shè)計(jì)4.2.2 條件轉(zhuǎn)移指令1簡(jiǎn)單條件轉(zhuǎn)移指令2無符號(hào)數(shù)條件轉(zhuǎn)移指令3.有符號(hào)數(shù)條件轉(zhuǎn)移指令 格式格式:Jcc:Jcc 短標(biāo)號(hào)短標(biāo)號(hào)功能功能:指定的條件指定的條件cccc如果成立,程序轉(zhuǎn)移到由短標(biāo)號(hào)指定的如果成立,程序轉(zhuǎn)移到由短標(biāo)號(hào)指定的目標(biāo)地址去執(zhí)行指令;條件不成立,則程序?qū)㈨樞驁?zhí)行轉(zhuǎn)移目標(biāo)地址去執(zhí)行指令;條件不成立,則程序?qū)㈨樞驁?zhí)行轉(zhuǎn)移指令的下一條指令指令的下一條指令返回首頁返回首頁條件標(biāo)志位的設(shè)置規(guī)則條件標(biāo)志位的設(shè)置規(guī)則第4章 分支程序設(shè)計(jì)1簡(jiǎn)單條件轉(zhuǎn)移指令例題例題4.1例題例題4.2例題例題4.

7、3例題例題4.4例題例題4.5第4章 分支程序設(shè)計(jì)2無符號(hào)數(shù)條件轉(zhuǎn)移指令【例】比較無符號(hào)數(shù)大小,將較大的數(shù)存放AX寄存器CMPAX,BX ;(AX)(BX)JNB NEXT ;若AX=BX,轉(zhuǎn)移到NEXTXCHGAX,BX ;若AX=BXAX=BX,轉(zhuǎn)移到,轉(zhuǎn)移到NEXTNEXTXCHGXCHGAXAX,BXBX;若;若AXBXAXBX,交換,交換NEXTNEXT:第4章 分支程序設(shè)計(jì)4.2 分支結(jié)構(gòu)程序設(shè)計(jì)4.2.1 匯編語言程序設(shè)計(jì)的一般步驟4.2.2 流程圖4.2.3 分支程序設(shè)計(jì)返回首頁返回首頁第4章 分支程序設(shè)計(jì)4.2.1 匯編語言程序設(shè)計(jì)的一般步驟匯編語言程序設(shè)計(jì)一般有以下幾個(gè)步驟

8、:1分析問題,確定算法2繪制流程圖3根據(jù)流程圖編制程序5調(diào)試程序返回本節(jié)返回本節(jié)第4章 分支程序設(shè)計(jì)4.2.2 流程圖1流程圖的概念流程圖是由特定的幾何圖形、指向線、文字說明來表示數(shù)據(jù)處理的步驟,形象描述邏輯控制結(jié)構(gòu)以及數(shù)據(jù)流程的示意圖。流程圖具有簡(jiǎn)潔、明了、直觀的特點(diǎn)。2流程圖符號(hào)表示流程圖符號(hào)表示(1)起止框:表示程序的開始和結(jié)束。)起止框:表示程序的開始和結(jié)束。起止框起止框(2)判斷框)判斷框(3)處理框)處理框(4)調(diào)用框)調(diào)用框(5)指向線)指向線(6)連接框)連接框 返回本節(jié)返回本節(jié)第4章 分支程序設(shè)計(jì)4.2.3 分支程序設(shè)計(jì)一、用條件轉(zhuǎn)移指令實(shí)現(xiàn)程序分支二、多路分支練習(xí)分支程序根

9、據(jù)條件是真或假?zèng)Q定執(zhí)行不同的程序段分支程序根據(jù)條件是真或假?zèng)Q定執(zhí)行不同的程序段判斷的條件是各種指令,如判斷的條件是各種指令,如CMP、TEST等執(zhí)行后等執(zhí)行后形成的狀態(tài)標(biāo)志形成的狀態(tài)標(biāo)志通過轉(zhuǎn)移指令可以實(shí)現(xiàn)分支控制通過轉(zhuǎn)移指令可以實(shí)現(xiàn)分支控制返回本節(jié)返回本節(jié)第4章 分支程序設(shè)計(jì)一、用條件轉(zhuǎn)移指令實(shí)現(xiàn)程序分支1、單分支 例例4.64.6計(jì)算計(jì)算AXAX的絕對(duì)值的絕對(duì)值法法1:cmp ax,01:cmp ax,0 jns nonnegjns nonneg;分支條件:分支條件:AX0AX0 neg ax ;neg ax ;條件不滿足,求補(bǔ)條件不滿足,求補(bǔ)nonneg:nonneg:mov resul

10、t,axmov result,ax;條件滿足條件滿足 BadAx0?Ax求補(bǔ)n法法2:cmp ax,0 jl yesneg;分支條件:分支條件:AX0 jmp nonnegyesneg:neg ax ;條件不滿足,求補(bǔ)條件不滿足,求補(bǔ)nonneg:mov result,ax;條件滿足條件滿足第4章 分支程序設(shè)計(jì)【例4.7】無符號(hào)數(shù)除以2 將AX中存放的無符號(hào)數(shù)除以2,如果是奇數(shù),則加1后除以2 test ax,01htest ax,01h;測(cè)試測(cè)試AXAX最低位最低位jz evenjz even;最低位為最低位為0 0:AXAX為偶數(shù)為偶數(shù)add ax,1add ax,1;最低位為最低位為1

11、1:AXAX為奇數(shù),需要加為奇數(shù),需要加1 1even:even:rcr ax,1rcr ax,1;AXAX;AXAX2 2注意:如果采用注意:如果采用SHRSHR指令,則不能處理指令,則不能處理AXAXFFFFHFFFFH的特殊情況的特殊情況第4章 分支程序設(shè)計(jì)2、雙分支第4章 分支程序設(shè)計(jì)例、比較兩個(gè)字符串是否相等,等則顯示YES,不等時(shí)顯示NODATA SEGMENTS1 DB 1234GR9L1EQU$-S1S2 DB 1234GF5L2EQU$-S2RES1 DB YES,$RES2 DB NO,$DATA ENDSCODESEGMENTASSUME DS:DATA,CS:CODE

12、START:MOVAX,DATAMOV DS,AXMOV CX,L1CMP CX,L2JNZ RESULTNST:CLDLEA SI,S1LEA DI,S2REPZ CMPSBJNZ RESULTNLEA DX,RES1JMP DISPRESULTN:LEA DX,RES2DISP:MOV AH,9INT 21HMOV CX,4C00HINT 21HCODE ENDS END START第4章 分支程序設(shè)計(jì)【練習(xí)】試編一程序,求三個(gè)帶符號(hào)字?jǐn)?shù)據(jù)中的最大值,并將最大值存入MAX字單元中。設(shè)三個(gè)帶符號(hào)數(shù)分別在三個(gè)字變量X、Y、Z中存儲(chǔ)。STACSEGMENT STACK DB 200 DUP(0)

13、STACK ENDSDATASEGMENTX DW 00ABHY DW 5Z DW 200MAXDW?DATAENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODE START:MOVAX,DATA MOVDS,AX MOVAX,X CMPAX,Y;XY?JG LL MOVAX,Y;YZ?LL:CMPAX,Z JG EXIT MOVAX,ZEXIT:MOVMAX,AX MOVAX,4C00H INT 21HCODE ENDS ENDSTART返回返回第4章 分支程序設(shè)計(jì)二、多分支程序設(shè)計(jì)1)由多個(gè)雙分支構(gòu)成多分支2)地址法表實(shí)現(xiàn)多分支3)轉(zhuǎn)移法表實(shí)現(xiàn)多分

14、支4)邏輯分解法實(shí)現(xiàn)多分支返回返回第4章 分支程序設(shè)計(jì)1)由多個(gè)雙分支構(gòu)成多分支 1X0Y=0X=0 -1X設(shè)輸入數(shù)據(jù)為X、輸出數(shù)據(jù)Y,且皆為字節(jié)變量。DATASEGMENTX DB -10Y DB?DATAENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA MOVDS,AX CMPX,0;與;與0進(jìn)行比較進(jìn)行比較 JSA2JNSA1;X0轉(zhuǎn)轉(zhuǎn)A1MOVY,0 JMPEXITA1:MOV Y,1 JMPEXITA2:MOVY,-1EX

15、IT:MOVAX,4C00H INT21H CODE ENDS ENDSTART返回本節(jié)返回本節(jié)Y=1Y=-1Y=0X0第4章 分支程序設(shè)計(jì)2)地址法表實(shí)現(xiàn)多分支將各分支程序段的入口地址依次存入數(shù)據(jù)段的一個(gè)表中,形成地址表。取各分支程序段的編號(hào)作為各分支入口地址的表地址的位移量。某程序段入口地址的表地址為:表地址=編號(hào)*2+入口地址首地址例如:從低到高逐位檢查一個(gè)字節(jié)數(shù)據(jù),找出第一個(gè)非例如:從低到高逐位檢查一個(gè)字節(jié)數(shù)據(jù),找出第一個(gè)非0位的位的數(shù),并顯示其位置數(shù),并顯示其位置DATASEGMENTNUMDB78HADDR DwAD0,AD1,AD2,AD3,AD4,AD5,AD6,AD7 DAT

16、AENDS右移1位顯示?=0?顯示相應(yīng)位數(shù)CF=0?取數(shù)第4章 分支程序設(shè)計(jì)CODE SEGMENTASSUME DS:DATA,CS:CODE START:MOVAX,DATAMOVDS,AXMOV AL,NUMMOVDL,?CMP AL,0JZEXIT MOV BX,0AGAIN:SHRAL,1JCNEXTINCBXJMPAGAINNEXT:SHLBX,1JMPADDRBXAD0:MOVDL,30HJMPEXITAD1:MOVDL,31HJMPEXITAD2:MOVDL,32HJMPEXIT AD3:MOVDL,33HJMPEXITAD4:MOVDL,34HJMPEXITAD5:MOVDL

17、,35HJMPEXITAD6:MOVDL,36HJMPEXITAD7:MOVDL,37HEXIT:MOV AH,2INT 21HMOVAX,4C00HINT21HCODE ENDSEND START返回本節(jié)返回本節(jié)右移1位顯示?=0?顯示相應(yīng)位數(shù)CF=0?取數(shù)第4章 分支程序設(shè)計(jì)3)轉(zhuǎn)移法表實(shí)現(xiàn)多分支【例4.9】設(shè)某程序有8路分支,試根據(jù)給定的N值(18),將程序的執(zhí)行轉(zhuǎn)移到其中的一路分支。多個(gè)條件對(duì)應(yīng)各自的分支語句體,哪個(gè)條件成立就轉(zhuǎn)入相應(yīng)分多個(gè)條件對(duì)應(yīng)各自的分支語句體,哪個(gè)條件成立就轉(zhuǎn)入相應(yīng)分支體執(zhí)行。多分支可以化解為雙分支或單分支結(jié)構(gòu)的組合支體執(zhí)行。多分支可以化解為雙分支或單分支結(jié)構(gòu)的組

18、合DATASEGMENT TAB DW P1,P2,P3,P4,P5,P6,P7,P8 N DB 5DATAENDSSTACK SEGMENT DB 200 DUP(0)STACK ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START:MOVAX,DATAMOVDS,AX MOVAL,NDELALADDAL,ALMOVBL,ALMOVBH,0JMPTABBXP1:JMPEXITP2:JMPEXITP2:JMPEXITP3:JMPEXIT P8:EXIT:MOVAX,4C00H INT21HCODEENDS ENDSTART返回本節(jié)返回本節(jié)

19、無條件轉(zhuǎn)移指令的轉(zhuǎn)移地址采用的是變址尋址。若轉(zhuǎn)移地址用寄存器間無條件轉(zhuǎn)移指令的轉(zhuǎn)移地址采用的是變址尋址。若轉(zhuǎn)移地址用寄存器間接尋址或基址加變址尋址則應(yīng)如何修改程序接尋址或基址加變址尋址則應(yīng)如何修改程序?MOVAL,NDELALADDAL,ALMOVBL,ALMOVBH,0JMPTABBXP1:JMPEXITP2:JMPEXITLEA BX,TABMOV AH,0ADD BX,AXJMP BX第4章 分支程序設(shè)計(jì)4)邏輯分解法實(shí)現(xiàn)多分支按照條件的先后,依次分解成一串雙分支結(jié)構(gòu),然后按雙分支的方法進(jìn)行程序設(shè)計(jì)例如:根據(jù)例如:根據(jù)NUM中的內(nèi)容執(zhí)行不同的操作中的內(nèi)容執(zhí)行不同的操作AL=0顯示1顯示0

20、AL=1顯示2AL=2顯示3AL=3DATASEGMENTNUM DB 2DATAENDSCODE SEGMENTASSUME DS:DATA,CS:CODE START:MOVAX,DATAMOVDS,AXMOV AL,NUMCMP AL,0JZNEXT0CMPAL,1JZNEXT1CMPAL,2JZNEXT2CMPAL,3JZNEXT3NEXT0:MOVDL,30HJMPEXITNEXT1:MOVDL,31HJMPEXITNEXT2:MOVDL,32HJMPEXITNEXT3:MOVDL,33HJMPEXITEXIT:MOV AH,2INT 21HMOVAX,4C00HINT21HCODE ENDSEND START返回本節(jié)返回本節(jié)第4章 分支程序設(shè)計(jì)練習(xí)1、用分支結(jié)構(gòu)實(shí)現(xiàn)將AL中的最高位內(nèi)容顯示出來2、若已定義整數(shù)變量A、B,編程實(shí)現(xiàn)如下功能1)若兩數(shù)一奇一偶,將奇數(shù)存入A,偶數(shù)存入B2)若兩數(shù)均是奇數(shù),則兩數(shù)均加1后存入原變量單元3)若兩數(shù)均是偶數(shù),則兩變量均不變TEST AL,80HJZ NT1MOV DL,31HJMP DISPNTI:MOV DL,30HDISP:MOV AH,2INT 21H返回返回

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!