版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
分支程序設計第1頁,課件共34頁,創(chuàng)作于2023年2月4.1條件標志位的設置規(guī)則
決定轉移的標志位(1)進位標志CF 當無符號數運算結果的最高有效位有進位(加法)或借位(減法)時,進位標志置1;否則置0(2)零標志ZF 若運算結果為0,則ZF=1;否則ZF=0(3)符號標志SF 運算結果最高位為1,則SF=1;否則SF=0(4)溢出標志OF 若無符號數運算的結果有溢出,則OF=1;否則OF=0(5)奇偶標志PF 當運算結果中“1”的個數為零或偶數時,PF=1;否則PF=0第2頁,課件共34頁,創(chuàng)作于2023年2月4.1條件標志位的設置規(guī)則MOV指令不影響標志位;加減指令影響上述所有標志,但增1和減1指令不影響CF;乘除指令只影響CF和OF設AX=78C4H,BX=9F35H.通過示例觀察每條指令執(zhí)行后對標志位的影響 CF SF OF ZF PFADDAX,BX 1 0 0 0 ADDAH,AL 0 1 1 0 ADDAH,BL 0 1 0 0 SUBAX,BX SUBBX,BXSUBAH,BH第3頁,課件共34頁,創(chuàng)作于2023年2月4.2.1無條件轉移指令(OPD+2)→CS注意:
實際編程時,匯編程序會根據目標地址的距離,自動處理成短轉移、近轉移或遠轉移程序員可用操作符short、nearptr或farptr強制返回首頁JMPFARPTR標號JMPNEARPTR標號JMPDWORDPTROPDJMPWORDPTROPD第4頁,課件共34頁,創(chuàng)作于2023年2月例請寫出下列轉移指令的尋址方式,并求出執(zhí)行該轉移指令后,IP寄存器、CS寄存器的內容是什么?TABLE是字變量,變量的值是100H;PROG是近標號,表示偏移地址200H,ECX的內容02D37650H,段屬性值為38E0H。當前IP的內容是1000H,CS的內容是38ACH,DS的內容是28E0H,BX的內容是10H,DI的內容是20H。①JMPPROG②JMPWORDPTR[BX]③JMPDWORDPTRTABLE[BX]④JMPECX⑤JMPFARPTRPROG⑥JMP[BX][DI]③段間間接尋址執(zhí)行該指令后(IP)=((DS)*10H+(BX)+位移量)的低字=(28F10H)低字,(CS)=((DS)*10H+(BX)+位移量)的高字=(28F10H)高字④段間間接尋址,執(zhí)行該指令后(IP)=(ECX)低字=7650H,(CS)=(ECX)高字=02D3H⑤段間直接尋址,執(zhí)行該指令后(IP)=(PROG)偏移屬性=0200H,(CS)=(PROG)段屬性=38E0H⑥段內間接尋址,執(zhí)行該指令后(IP)=((DS)*10H+(BX)+(DI))=(28E00H+10H+20H)=(28E30H)①段內直接程序存儲器尋址執(zhí)行該指令后(IP)=(PROG)偏移屬性=0200H②段內間接程序存儲器尋址執(zhí)行該指令后(IP)=((DS)*10H+(BX))=(28E00H+10H)=(28E10H)第5頁,課件共34頁,創(chuàng)作于2023年2月JMP指令:段內直接轉移第6頁,課件共34頁,創(chuàng)作于2023年2月JMP指令:段內寄存器間接轉移第7頁,課件共34頁,創(chuàng)作于2023年2月JMP指令:段間直接轉移第8頁,課件共34頁,創(chuàng)作于2023年2月JMP指令:段間間接轉移第9頁,課件共34頁,創(chuàng)作于2023年2月4.2.2條件轉移指令1.簡單條件轉移指令2.無符號數條件轉移指令3.有符號數條件轉移指令
格式:Jcc短標號功能:指定的條件cc如果成立,程序轉移到由短標號指定的目標地址去執(zhí)行指令;條件不成立,則程序將順序執(zhí)行轉移指令的下一條指令返回首頁條件標志位的設置規(guī)則第10頁,課件共34頁,創(chuàng)作于2023年2月1.簡單條件轉移指令例題4.1例題4.2例題4.3例題4.4例題4.5第11頁,課件共34頁,創(chuàng)作于2023年2月例4.1:JZ/JNZ指令 testal,80h ;測試最高位 jznext0 ;D7=0(ZF=1),轉移 movah,0ffh ;D7=1,順序執(zhí)行 jmpdone ;無條件轉向next0: movah,0done: ... testal,80h ;測試最高位 jnznext1 ;D7=1(ZF=0),轉移 movah,0 ;D7=0,順序執(zhí)行 jmpdone ;無條件轉向next1: movah,0ffhdone: ...第12頁,課件共34頁,創(chuàng)作于2023年2月例4.2:JS/JNS指令計算|X-Y|(絕對值)。X和Y為存放于X單元和Y單元的16位操作數,結果存入result。 movax,X subax,Y jnsnonneg negax ;neg是求補指令 andax,7fffhnonneg: movresult,ax第13頁,課件共34頁,創(chuàng)作于2023年2月例4.3:JO/JNO指令計算X-Y。X和Y為存放于X單元和Y單元的16位操作數,若溢出,則轉移到overflow處理。 movax,X subax,Y jooverflow ... ;無溢出,結果正確overflow: ... ;有溢出處理第14頁,課件共34頁,創(chuàng)作于2023年2月例4.4:JP/JNP指令設字符的ASCII碼在AL寄存器中,將字符加上奇校驗位,在字符ASCII碼中為“1”的個數已為奇數時,則令其最高位為“0”;否則令最高位為“1” andal,7fh ;最高位置“0”,同時判斷“1”的個數 jnpnext ;個數已為奇數,則轉向next oral,80h ;否則,最高位置“1”next: ...第15頁,課件共34頁,創(chuàng)作于2023年2月例4.5:JC/JNC指令記錄BX中1的個數 xoral,al ;AL=0,CF=0again: testbx,0ffffh;等價于cmpbx,0 jenext shlbx,1 jncagain incal jmpagainnext: ... ;AL保存1的個數
xoral,al ;AL=0,CF=0again: cmpbx,0 jznext shlbx,1 ;也可使用shrbx,1 adcal,0 jmpagainnext: ... ;AL保存1的個數另一種做法第16頁,課件共34頁,創(chuàng)作于2023年2月2.無符號數條件轉移指令【例】比較無符號數大小,將較大的數存放AX寄存器CMP AX,BX;(AX)-(BX)JNB NEXT ;若AX>=BX,轉移到NEXTXCHG AX,BX;若AX<BX,交換NEXT:…第17頁,課件共34頁,創(chuàng)作于2023年2月3.有符號數條件轉移指令SFOF=0+SFSFSF【例】比較有符號數大小,將較大的數存放在AX寄存器CMP AX,BX ;(AX)-(BX)JNL NEXT ;若AX>=BX,轉移到NEXTXCHG AX,BX ;若AX<BX,交換NEXT:…第18頁,課件共34頁,創(chuàng)作于2023年2月4.2分支結構程序設計4.2.1匯編語言程序設計的一般步驟4.2.2流程圖4.2.3分支程序設計返回首頁第19頁,課件共34頁,創(chuàng)作于2023年2月4.2.1匯編語言程序設計的一般步驟匯編語言程序設計一般有以下幾個步驟:1.分析問題,確定算法2.繪制流程圖3.根據流程圖編制程序5.調試程序返回本節(jié)第20頁,課件共34頁,創(chuàng)作于2023年2月4.2.2流程圖1.流程圖的概念
流程圖是由特定的幾何圖形、指向線、文字說明來表示數據處理的步驟,形象描述邏輯控制結構以及數據流程的示意圖。流程圖具有簡潔、明了、直觀的特點。2.流程圖符號表示(1)起止框:表示程序的開始和結束。起止框(2)判斷框
(3)處理框
(4)調用框
(5)指向線
(6)連接框
返回本節(jié)第21頁,課件共34頁,創(chuàng)作于2023年2月4.2.3分支程序設計一、用條件轉移指令實現(xiàn)程序分支二、多路分支練習分支程序根據條件是真或假決定執(zhí)行不同的程序段判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標志通過轉移指令可以實現(xiàn)分支控制返回本節(jié)第22頁,課件共34頁,創(chuàng)作于2023年2月一、用條件轉移指令實現(xiàn)程序分支1、單分支[例4.6]計算AX的絕對值法1:cmpax,0
jnsnonneg;分支條件:AX≥0negax;條件不滿足,求補nonneg:movresult,ax ;條件滿足BadAx<0?Ax求補n法2:cmpax,0
jlyesneg;分支條件:AX<0jmpnonnegyesneg:negax;條件不滿足,求補nonneg:movresult,ax;條件滿足第23頁,課件共34頁,創(chuàng)作于2023年2月【例4.7】無符號數除以2
將AX中存放的無符號數除以2,如果是奇數,則加1后除以2
testax,01h
;測試AX最低位
jzeven
;最低位為0:AX為偶數
addax,1 ;最低位為1:AX為奇數,需要加1even:
rcrax,1 ;AX←AX÷2注意:如果采用SHR指令,則不能處理AX=FFFFH的特殊情況第24頁,課件共34頁,創(chuàng)作于2023年2月2、雙分支第25頁,課件共34頁,創(chuàng)作于2023年2月例、比較兩個字符串是否相等,等則顯示YES,不等時顯示NODATA SEGMENTS1DB‘1234GR9’L1 EQU$-S1S2DB‘1234GF5’L2 EQU$-S2RES1DB‘YES’,‘$’RES2DB‘NO’,‘$’DATA ENDSCODE SEGMENTASSUMEDS:DATA,CS:CODESTART:MOV AX,DATA MOV DS,AXMOVCX,L1CMPCX,L2JNZRESULTNST: CLD LEASI,S1 LEADI,S2 REPZCMPSB JNZRESULTN LEADX,RES1 JMPDISPRESULTN: LEADX,RES2DISP: MOVAH,9 INT21H MOVCX,4C00H INT21HCODEENDS ENDSTART第26頁,課件共34頁,創(chuàng)作于2023年2月【練習】試編一程序,求三個帶符號字數據中的最大值,并將最大值存入MAX字單元中。 設三個帶符號數分別在三個字變量X、Y、Z中存儲。STAC SEGMENTSTACK DB200DUP(0)STACK ENDSDATA SEGMENTX DW00ABHY DW–5Z DW200MAX DW?DATA ENDSCODE SEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATA MOV DS,AXMOV AX,XCMP AX,Y ;X>Y?
JGLLMOV AX,Y ;Y>Z?LL:CMP AX,ZJG EXIT
MOV AX,ZEXIT:
MOV MAX,AXMOV AX,4C00HINT21HCODE ENDSEND START返回第27頁,課件共34頁,創(chuàng)作于2023年2月二、多分支程序設計1)由多個雙分支構成多分支2)地址法表實現(xiàn)多分支3)轉移法表實現(xiàn)多分支4)邏輯分解法實現(xiàn)多分支返回第28頁,課件共34頁,創(chuàng)作于2023年2月1)由多個雙分支構成多分支1 X>0Y=0 X=0-1 X設輸入數據為X、輸出數據Y,且皆為字節(jié)變量。DATA SEGMENTX DB-10Y DB?DATA ENDSSTACK SEGMENTSTACK DB200DUP(0)STACK ENDSCODE SEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:
MOV AX,DATAMOV DS,AX CMP X,0 ;與0進行比較
JS A2 JNS A1 ;X≥0轉A1 MOV Y,0 JMP EXITA1:
MOVY,1 JMP EXITA2:
MOV Y,-1 EXIT:
MOV AX,4C00H INT 21HCODEENDS END START返回本節(jié)Y=1Y=-1Y=0X<0X>0第29頁,課件共34頁,創(chuàng)作于2023年2月2)地址法表實現(xiàn)多分支將各分支程序段的入口地址依次存入數據段的一個表中,形成地址表。取各分支程序段的編號作為各分支入口地址的表地址的位移量。某程序段入口地址的表地址為: 表地址=編號*2+入口地址首地址例如:從低到高逐位檢查一個字節(jié)數據,找出第一個非0位的數,并顯示其位置DATA SEGMENTNUM DB 78HADDR Dw AD0,AD1,AD2,AD3,AD4,AD5,AD6,AD7DATA ENDS右移1位顯示?=0?顯示相應位數CF=0?取數第30頁,課件共34頁,創(chuàng)作于2023年2月CODE SEGMENTASSUMEDS:DATA,CS:CODESTART:MOV AX,DATA MOV DS,AX MOVAL,NUM MOV DL,’?’ CMPAL,0 JZ EXIT MOVBX,0AGAIN:SHR AL,1 JC NEXT INC BX JMP AGAINNEXT: SHL BX,1
JMP ADDR[BX]AD0: MOV DL,30H JMP EXITAD1: MOV DL,31H JMP EXITAD2: MOV DL,32H JMP EXITAD3: MOV DL,33H JMP EXITAD4: MOV DL,34H JMP EXITAD5: MOV DL,35H JMP EXITAD6: MOV DL,36H JMP EXITAD7: MOV DL,37HEXIT: MOV AH,2 INT 21H MOV AX,4C00H INT 21HCODEENDS ENDSTART返回本節(jié)右移1位顯示?=0?顯示相應位數CF=0?取數第31頁,課件共34頁,創(chuàng)作于2023年2月3)轉移法表實現(xiàn)多分支【例4.9】設某程序有8路分支,試根據給定的N值(1~8),將程序的執(zhí)行轉移到其中的一路分支。
多個條件對應各自的分支語句體,哪個條件成立就轉入相應分支體執(zhí)行。多分支可以化解為雙分支或單分支結構的組合DATA SEGMENTTAB DWP1,P2,P3,P4,P5,P6,P7,P8NDB5DATA ENDSSTACK SEGMENT DB200DUP(0)STACK ENDSCODE SEGMENT
ASSUMEDS:DATA,SS:STACK,CS:CODE
START:
MOV AX,DATA MOV DS,AX
┆ MOV AL,N DEL AL ADD AL,AL MOV BL,AL MOV BH,0 JMP TAB[BX]P1:
……
┆ JMP EXITP2:
……
┆ JMP EXITP2:
……
┆ JMP EXITP3:
……
┆ JMP EXIT
┆P8:
……
┆EXIT:
MOV AX,4C00H INT 21HCODE ENDS END START返回本節(jié)無條件轉移指令的轉移地址采用的是變址尋址。若轉移地址用寄存器間接尋址或基址加變址尋址則應如何修改程序? MOV AL,N DEL AL ADD AL,AL MOV BL,AL MOV BH,0 JMP TAB[BX]P1:
……
┆ JMP EXITP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高溫中暑事故應急預案演練方案和應急演練腳本
- 城市交通信息發(fā)布系統(tǒng)方案
- 排水系統(tǒng)優(yōu)化運行方案
- 雨水污染控制技術方案
- 低矮閣樓施工方案(3篇)
- 木屋營地活動方案策劃(3篇)
- 都市時尚活動策劃方案(3篇)
- 為景區(qū)策劃活動方案(3篇)
- 灌漿廊道施工方案(3篇)
- 中國建筑金屬制品產業(yè)市場分析及表面處理與耐候性研究評估
- 2026年鄉(xiāng)村醫(yī)生傳染病考試題含答案
- DB32-T 4733-2024 數字孿生水網建設總體技術指南
- AQ-T7009-2013 機械制造企業(yè)安全生產標準化規(guī)范
- 小學美術與心理健康的融合滲透
- 圖書館室內裝修投標方案(技術標)
- 儲罐組裝施工措施方案(拱頂液壓頂升)-通用模版
- 2023年上海鐵路局人員招聘筆試題庫含答案解析
- 質量源于設計課件
- 2023屆高考語文復習-散文專題訓練-題目如何統(tǒng)攝全文(含答案)
- 馬鞍山經濟技術開發(fā)區(qū)建設投資有限公司馬鞍山城鎮(zhèn)南部污水處理廠擴建工程項目環(huán)境影響報告書
- GB/T 615-2006化學試劑沸程測定通用方法
評論
0/150
提交評論