十、匯集語(yǔ)言程序設(shè)計(jì)的基本方法
(一)概述
編寫(xiě)匯編語(yǔ)言源程序的基本驟是:
(1)分析問(wèn)題,建立數(shù)學(xué)模型;
(2)設(shè)計(jì)算法,繪制流程圖;
(3)程序編寫(xiě);
(4)上機(jī)調(diào)試。
(二)順序結(jié)構(gòu)程序設(shè)計(jì)
順序結(jié)構(gòu)程序是最簡(jiǎn)單的程序結(jié)構(gòu),它的執(zhí)行順序和程序中語(yǔ)句的排列順序完全一致,會(huì)自上而下線性地順序地進(jìn)行,這種結(jié)構(gòu)的匯編程序通常是比較簡(jiǎn)單的程序。在用匯編語(yǔ)言程序編寫(xiě)的程序中,存在著大量的順序結(jié)構(gòu)的程序。
(三)分支程序設(shè)計(jì) 1.分支程序的結(jié)構(gòu)形式
分支程序的結(jié)構(gòu)大體上有兩種形式:兩*分支結(jié)構(gòu)和開(kāi)關(guān)結(jié)構(gòu)。
2.分支程序的設(shè)計(jì)方法
在匯編語(yǔ)言中,程序分支的實(shí)現(xiàn)是通過(guò)轉(zhuǎn)移指令來(lái)完成的,即條件滿足與否的判斷和程序執(zhí)行順序的確定,都需要依靠轉(zhuǎn)移指令。分支程序的基本設(shè)計(jì)方法很多,主要有三種:利用轉(zhuǎn)移指令直接分支法、跳轉(zhuǎn)表達(dá)法和邏輯尺法。
(四)循環(huán)程序設(shè)計(jì)1.循環(huán)程序結(jié)構(gòu)
循環(huán)程序一般由循環(huán)準(zhǔn)備(初始化)、循環(huán)處理(循環(huán)體)、循環(huán)控制與修改、循環(huán)結(jié)果處理等部分組成。
2.循環(huán)程序設(shè)計(jì)
(1)計(jì)數(shù)控制循環(huán)程序
計(jì)數(shù)控制的循環(huán)設(shè)計(jì)非常簡(jiǎn)單,其特點(diǎn)是循環(huán)次數(shù)已知,利用某個(gè)寄存器或存儲(chǔ)單元作計(jì)數(shù)器,由計(jì)數(shù)器的值控制循環(huán)結(jié)束。計(jì)數(shù)的方法有兩種:增量計(jì)數(shù)和減量計(jì)數(shù)。計(jì)數(shù)器置初值后,每循環(huán)一次,計(jì)數(shù)器的值按步長(zhǎng)值進(jìn)行加減,直到某一值時(shí),循環(huán)結(jié)束。
(2)條件控制循環(huán)程序
當(dāng)循環(huán)次數(shù)未知時(shí),可采用條件控制的方法,編寫(xiě)條件控制循環(huán)程序。在程序設(shè)計(jì)中,應(yīng)首先確定循環(huán)控制條件,每循環(huán)一次,都要對(duì)條件進(jìn)行檢查。若滿足條件,則循環(huán)結(jié)束,否則繼續(xù)循環(huán),直到滿足條件為止。(3)多重循環(huán)程序設(shè)計(jì)
多重循環(huán)程序是指循環(huán)體中仍然有循環(huán)程序,又稱(chēng)之為循環(huán)嵌套。
(五)子程序設(shè)計(jì)1.子程序一般以文件形式編寫(xiě),并常以過(guò)程形式存放在代碼段中。
子程序文件通常由子程序說(shuō)明和子程序本體組成。子程序說(shuō)明通常包括子程序功能描述(名稱(chēng),性能,執(zhí)行時(shí)間等)、所有寄存器和存儲(chǔ)單元、子程序入口和出口參數(shù)及是否又調(diào)用其他子程序等。說(shuō)明部分應(yīng)簡(jiǎn)明、確切、使人一目了然。子程序的結(jié)構(gòu)一般包括保存現(xiàn)場(chǎng)、依入口參數(shù)從指定位置取加工信息、加工處理、依出口參數(shù)指定位置送出處理結(jié)果、恢復(fù)現(xiàn)場(chǎng)和返回調(diào)用程序等部分。形式為:
子程序名 PROC
┆
RET
子程序名 ENDS
即一般用過(guò)程定義語(yǔ)句將子程序定義為獨(dú)立的程序段,使之具有NEAR屬性或FAR屬性,使得程序結(jié)構(gòu)清晰,增加可讀性。
2.子程序的調(diào)用和返回
主程序調(diào)用子程序使用指令CALL。根據(jù)CALL獲得目標(biāo)地址的方法,有四種調(diào)用方式:段內(nèi)直接調(diào)用方式、段內(nèi)間接調(diào)用方式、段間直接調(diào)用方式和段間間接調(diào)用方式。為了能正確返回,不管哪一種調(diào)用方式,都需要把斷點(diǎn)(即CALL指令的下一條指令的地址)入棧保護(hù)。同時(shí),CALL指令的類(lèi)型必須與RET指令類(lèi)型相匹配。
主程序調(diào)用程序方式分直接調(diào)用和間接調(diào)用兩種類(lèi)型,每種類(lèi)型又分為段內(nèi)調(diào)用和段間調(diào)用兩種方式。
3.主程序和子程序間的信息交換
子程序中允許改變的數(shù)據(jù)叫參數(shù)。參數(shù)有入口參數(shù)和出口參數(shù)。主程序調(diào)用子程序之前必須向子程序提供一些參數(shù),而子程序執(zhí)行完畢后又要將執(zhí)行結(jié)查提供給主程序使用。參數(shù)傳遞的方式一般有3種,即用寄存器傳遞參數(shù)、用參數(shù)表傳遞參數(shù)和用堆棧傳遞參數(shù)。不論采用哪種方式,調(diào)用程序和子程序都必須互相呼應(yīng)。子程序需要在哪里取參數(shù),主程序就應(yīng)將參數(shù)送到哪里,并且要注意參數(shù)的先后順序。
4.遞歸子程序和子程序嵌套
在子程序調(diào)用過(guò)程中,子程序調(diào)用該子程序本身稱(chēng)為遞歸調(diào)用。遞歸分直接遞歸和間接遞歸兩種方式。直接遞歸子程序的結(jié)構(gòu)為:
SBC PROC
┆
CALL SBC
┆
RET
SBC ENDP
間接遞歸于程序的格式:
SBC1 PROC
┆
CALL SBC2
┆
RET
SBC2 PROC
┆
CALL SBC1
┆
RET
設(shè)計(jì)遞歸子
程序的關(guān)鍵是防止出現(xiàn)死循環(huán),注意脫離遞歸的出口條件。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢(xún)時(shí)間匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |