版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章分支與循環(huán)程序設(shè)計(jì)
6.1概述6.1.1匯編語言程序設(shè)計(jì)的步驟和特點(diǎn)
①分析問題,確定算法不管使用何種語言設(shè)計(jì)程序,這一環(huán)節(jié)是最重要且最容易被忽略的。這很象寫作文時(shí)的審題,搞不好就會(huì)是“下筆千言,離題萬里”。8086匯編語言程序設(shè)計(jì)1②合理組織數(shù)據(jù)除了處理計(jì)算用數(shù)據(jù)外,計(jì)算機(jī)處理的并不是要解決的問題本身,而是處理代表這些問題的數(shù)據(jù)。如何用數(shù)據(jù)代表要處理的問題?這就是數(shù)據(jù)組織問題。數(shù)據(jù)是否代表了要處理的問題,數(shù)據(jù)的組織是否方便程序處理?這就是數(shù)據(jù)組織是否合理的基本標(biāo)準(zhǔn)。數(shù)據(jù)組織得好,處理數(shù)據(jù)的程序就會(huì)相對(duì)簡(jiǎn)單、清晰,相反會(huì)使程序變得很復(fù)雜和沒有條理。所以,數(shù)據(jù)的組織是程序總體設(shè)計(jì)的的重要內(nèi)容。8086匯編語言程序設(shè)計(jì)2③編制流程使用流程圖規(guī)劃程序可以使程序的線條清晰,修改代價(jià)小,便于和非專業(yè)人員討論。④過程定義如果把整個(gè)程序看作是一幢大樓,那么基于流程圖分解出的過程就是建筑這幢大樓的預(yù)制件。過程是程序整體功能的分頭實(shí)現(xiàn);好的程序應(yīng)該由功能和層次劃分合理的過程組成。8086匯編語言程序設(shè)計(jì)3⑤合理使用寄存器一般來說,能使用寄存器就不用存儲(chǔ)器單元;
SI和DI用于存儲(chǔ)器尋址;
CX用于循環(huán)控制;無須DX作端口訪問時(shí),DX輔助AX作數(shù)據(jù)處理;尋址任務(wù)重,BX參與尋址,否則參與數(shù)據(jù)處理。8086匯編語言程序設(shè)計(jì)46.1.2程序的基本結(jié)構(gòu)
①
順序結(jié)構(gòu)順序結(jié)構(gòu)示意圖AB8086匯編語言程序設(shè)計(jì)5②分支結(jié)構(gòu)分支結(jié)構(gòu)示意圖ABYN?8086匯編語言程序設(shè)計(jì)6③循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)示意圖YN?DO8086匯編語言程序設(shè)計(jì)7例:將一位16進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的ASCⅡ碼數(shù)據(jù)段核心語句:
:TABLEDB30H,31H,….,39H,41H,….,46H :6.2
順序結(jié)構(gòu)的程序設(shè)計(jì)8086匯編語言程序設(shè)計(jì)8代碼段核心語句: :
LEA BX,TABLE MOV AL,HEX XOR AH,AH ADD BX,AX MOV AL,[BX] :可以看出,順序結(jié)構(gòu)依然可以是“智能”的。8086匯編語言程序設(shè)計(jì)9使用“換碼”指令程序可以簡(jiǎn)化成: :
LEA BX,TABLE MOV AL,HEX XLAT :
XLAT的功能是:
AL←((BX)+(AL))8086匯編語言程序設(shè)計(jì)10
配合標(biāo)志寄存器的各種轉(zhuǎn)移指令,是計(jì)算機(jī)智能的核心所在。轉(zhuǎn)移指令的實(shí)質(zhì)是對(duì)指令指針CS:IP的修改。6.3.1無條件轉(zhuǎn)移指令
JMP 目標(biāo)地址目標(biāo)地址使用標(biāo)號(hào)。無條件轉(zhuǎn)移指令有段內(nèi)、段間和間接無條件轉(zhuǎn)移四種類型。6.3
分支結(jié)構(gòu)的程序設(shè)計(jì)8086匯編語言程序設(shè)計(jì)11JMP指令多用于配合條件轉(zhuǎn)移指令形成分支結(jié)構(gòu):
CMP AL,0 JNC POS MOV AH,0
JMP EXIT
POS: MOV AH,1EXIT:
………8086匯編語言程序設(shè)計(jì)12JMP指令的四種跳轉(zhuǎn)類型:①段內(nèi)直接轉(zhuǎn)移:編譯(匯編)之后操作數(shù)的變化:
成為與目標(biāo)地址差的“位移量”(補(bǔ)碼);
優(yōu)化編譯(短轉(zhuǎn)移和長(zhǎng)轉(zhuǎn)移)。②段內(nèi)相對(duì)轉(zhuǎn)移:指令將16位通用寄存器或字類型內(nèi)存單元中的數(shù)據(jù)用作目標(biāo)地址偏移量。8086匯編語言程序設(shè)計(jì)13③段間直接: 目標(biāo)段的偏移量送IP; 目標(biāo)段的段基值送CS。④段間間接轉(zhuǎn)移:
JMPDWORDPTR當(dāng)前段變量存儲(chǔ)轉(zhuǎn)移目標(biāo)的地址指針。8086匯編語言程序設(shè)計(jì)146.3.2條件轉(zhuǎn)移指令配合標(biāo)志位,是現(xiàn)代計(jì)算機(jī)智能的物理基礎(chǔ)。
JXX 目標(biāo)地址XX表示轉(zhuǎn)移條件;目標(biāo)地址使用標(biāo)號(hào)。
8086CPU條件轉(zhuǎn)移指令有如下三類:
單條件轉(zhuǎn)移指令;
無符號(hào)數(shù)條件轉(zhuǎn)移指令;
帶符號(hào)數(shù)條件轉(zhuǎn)移指令。8086匯編語言程序設(shè)計(jì)15指令助憶符轉(zhuǎn)移條件功能描述JCCF=1JumpCarryJNCCF=0JumpNotCarryJOOF=1JumpOverflowJNOOF=0JumpNotOverflowJP/JPEPF=1JumpParityorJumpParityEvenJNP/JPOPF=0JumpNotParityorJumpParityOddJSSF=1JumpSign(negative)JNSSF=0JumpNoSign(positive)JZZF=1JumpZeroJNZZF=0JumpNotZero①單條件轉(zhuǎn)移指令8086匯編語言程序設(shè)計(jì)16②無符號(hào)數(shù)條件轉(zhuǎn)移指令指令助憶符轉(zhuǎn)移條件功能描述JE/JZZF=1JumpEqualorJumpZeroJNE/JNZZF=0JumpNotEqualorJumpNotZeroJA/JNBECF=0andZF=0JumpAboveorJumpNotBeloworEqualJAE/JNBCF=0JumpAboveorEqualorJumpNotBelowJB/JNAECF=1JumpBeloworJumpNotAboveorEqualJBE/JNACF=1orZF=1JumpBeloworEqualorJumpNotAbove上述條件轉(zhuǎn)移指令中有兩條用到了復(fù)合條件,功能更強(qiáng);另外四條和單條件轉(zhuǎn)移指令的功能完全一樣,同一指令有多個(gè)命名旨在提高代碼的可讀性。8086匯編語言程序設(shè)計(jì)17③帶符號(hào)數(shù)條件轉(zhuǎn)移指令指令助憶符轉(zhuǎn)移條件功能描述JE/JZZF=1JumpEqualorJumpZeroJNE/JNZZF=0JumpNotEqualorJumpNotZeroJG/JNLEZF=0andSF=OFJumpGreaterorJumpNotLessorEqualJGE/JNLSF=OFJumpGreaterorEqualorJumpNotLessJL/JNGESF≠OFJumpLessorJumpNotGreaterorEqualJLE/JNGZF=1orSF≠OFJumpLessorEqualorJumpNotGreater
在8086CPU的指令系統(tǒng)中,所有條件轉(zhuǎn)移指令實(shí)現(xiàn)的流程轉(zhuǎn)移均為段內(nèi)短轉(zhuǎn)移。如果分支結(jié)構(gòu)過大,可結(jié)合無條件轉(zhuǎn)移指令來增大轉(zhuǎn)移范圍。8086匯編語言程序設(shè)計(jì)18JCXZ指令:
JCXZ指令所判斷的條件不是標(biāo)志位的狀態(tài),而是CX寄存器中的數(shù)據(jù):若(CX)=0,則轉(zhuǎn)移至目標(biāo)地址,否則順序執(zhí)行。JCXZ常用作下述結(jié)構(gòu)的循環(huán)控制:NEXT:
JCXZ OK …… DEC CX JMP NEXTOK:
8086匯編語言程序設(shè)計(jì)196.3.3分支程序設(shè)計(jì)舉例 例7.3.1關(guān)鍵點(diǎn):使用帶符號(hào)數(shù)條件轉(zhuǎn)移指令。
CMPAL,0 ;條件判斷
JGL1 ;如果用錯(cuò)指令將會(huì)怎樣? MOVBL,0FFH
;第二分支入口
JMPL2L1: MOVBL,0
;第一分支入口L2: …… 8086匯編語言程序設(shè)計(jì)20例7.3.2 CMP AL,AH JNA L1 MOV BH,0 JMP L3L1:CMP AL,BL JNA L2 MOV BH,1 JMP L3L2: MOV BH,2L3: ……8086匯編語言程序設(shè)計(jì)21
多次重復(fù)的操作,比如將1000個(gè)字節(jié)清0,如果不用循環(huán)結(jié)構(gòu),將寫上1000條語句。6.3.1循環(huán)控制指令①LOOP指令格式:LOOP 目的地址指令功能:(CX)←(CX)-1;若(CX)≠0,跳轉(zhuǎn)至目的地址;否則退出循環(huán)。6.3循環(huán)程序設(shè)計(jì)8086匯編語言程序設(shè)計(jì)22
②LOOPZ指令格式:LOOPZ 目的地址指令功能:(CX)←(CX)–1;若(CX)≠0
且ZF=1,跳轉(zhuǎn)至目的地址;否則退出循環(huán)。③LOOPNZ
指令格式:LOOPNZ 目的地址指令功能:(CX)←(CX)–1;若(CX)≠0
且ZF=0,跳轉(zhuǎn)至目的地址;否則退出循環(huán)。8086匯編語言程序設(shè)計(jì)236.3.2循環(huán)程序的結(jié)構(gòu)
①DO-UNTIL和DO-WHILE結(jié)構(gòu) ②循環(huán)程序段的組成部分 初始化部分; 循環(huán)體; 循環(huán)控制部分(LOOP等); 結(jié)束處理部分。8086匯編語言程序設(shè)計(jì)24例7.5.1
數(shù)據(jù)段部分:DATA SEGMENTARRY DB75,82,64,50,70,45,90LENGTH EQU$-ARRYNUM DB?DATA ENDS
8086匯編語言程序設(shè)計(jì)25例7.5.1
代碼部分:
XOR
AL,AL ;統(tǒng)計(jì)計(jì)數(shù)器清0
LEABX,ARRY ;BX指向ARRY首地址
MOVCX,LENGTH ;初始化循環(huán)計(jì)數(shù)器
JCXZL1 ;若計(jì)數(shù)值為0則退出循環(huán)L2: CMP[BX],60 JLL3 INCAL ;若成績(jī)大于等于60,則計(jì)數(shù)加1L3:INCBX ;BX指向ARRY數(shù)組中下一字節(jié)
LOOPL2 ;(CX)減1后不為0則繼續(xù)循環(huán)L1: MOVNUM,AL ;保存統(tǒng)計(jì)結(jié)果8086匯編語言程序設(shè)計(jì)26例7.5.2
數(shù)據(jù)段部分DATA SEGMENTSTR1 DB‘BBCABCDAC’LEN EQU$-STR1POS1 DB?DATA ENDS8086匯編語言程序設(shè)計(jì)27例7.5.2
代碼段關(guān)鍵語句: MOVBX,-1 ……L2:INCBX;BL存儲(chǔ)搜尋結(jié)果 CMPSTR1[BX],‘A’ LOOPNZL2 L1: JZL3 ;檢驗(yàn)是否查找成功8
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度辦公室裝修與家具采購(gòu)一體化合同范本3篇
- 初中音樂教學(xué)論文六篇
- 小班清明節(jié)語言課程設(shè)計(jì)
- 自控課程設(shè)計(jì)校正概論
- 網(wǎng)絡(luò)工程課程設(shè)計(jì)項(xiàng)目
- 電子鐘課程設(shè)計(jì)微機(jī)原理
- 智能榨汁機(jī)課程設(shè)計(jì)
- 2024綜合安全生產(chǎn)年終個(gè)人工作總結(jié)(30篇)
- 《高科技武器》課件
- 2024年職業(yè)技能鑒定中級(jí)題庫(kù)
- 2024-2030年中國(guó)電子級(jí)四氟化硅行業(yè)風(fēng)險(xiǎn)評(píng)估及未來全景深度解析研究報(bào)告
- JGJ106-2014建筑基樁檢測(cè)技術(shù)規(guī)范
- 中考字音字形練習(xí)題(含答案)-字音字形專項(xiàng)訓(xùn)練
- 四柱萬能液壓機(jī)液壓系統(tǒng) (1)講解
- JTT 1501-2024 潛水作業(yè)現(xiàn)場(chǎng)安全監(jiān)管要求(正式版)
- 家鄉(xiāng)土特產(chǎn)電商營(yíng)銷策劃方案(2篇)
- CTD申報(bào)資料撰寫模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- 汽車標(biāo)準(zhǔn)-商用車輛前軸總成
- 個(gè)人貸款月供款計(jì)算表模板
- 先玉335玉米品種介紹課件講解
- (正式版)JTT 1482-2023 道路運(yùn)輸安全監(jiān)督檢查規(guī)范
評(píng)論
0/150
提交評(píng)論