999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式芯片匯編語言結(jié)構(gòu)化編碼設(shè)計的研究

2011-11-08 11:53:22張同華韓名君2
長春大學(xué)學(xué)報 2011年6期
關(guān)鍵詞:程序結(jié)構(gòu)設(shè)計

張同華,韓名君2,

(1.蕪湖信息技術(shù)職業(yè)學(xué)院 電子信息系,安徽 蕪湖 241003;2.安徽大學(xué) 電子信息工程學(xué)院,安徽 合肥 230039)

嵌入式芯片匯編語言結(jié)構(gòu)化編碼設(shè)計的研究

張同華1,韓名君2,1

(1.蕪湖信息技術(shù)職業(yè)學(xué)院 電子信息系,安徽 蕪湖 241003;2.安徽大學(xué) 電子信息工程學(xué)院,安徽 合肥 230039)

為提高嵌入式芯片匯編語言編碼設(shè)計的水平,克服因語句結(jié)構(gòu)本身的非結(jié)構(gòu)化及存儲分配的隨意性所造成的困難,根據(jù)軟件工程中結(jié)構(gòu)化設(shè)計的規(guī)范,以MCS-51單片機(jī)匯編語言為例,提出了可操作性的解決方案:針對語句的結(jié)構(gòu),設(shè)計與結(jié)構(gòu)化盒圖等效的程序流程圖和語句結(jié)構(gòu)體,構(gòu)建出結(jié)構(gòu)化的選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu);針對存儲的分配,設(shè)計依據(jù)程序之間的調(diào)用關(guān)系,同層共享非同層獨享的變量存儲空間分配策略。

結(jié)構(gòu)化程序設(shè)計;嵌入式芯片;編碼設(shè)計;匯編語言

0 引言

在電子技術(shù)應(yīng)用中,各類嵌入式芯片的使用越來越廣泛,芯片制造公司提供了芯片指令代碼助詞符系統(tǒng)及匯編編譯軟件,電子技術(shù)設(shè)計人員相應(yīng)的承擔(dān)著使用匯編語言進(jìn)行程序設(shè)計的工作。

高質(zhì)量的軟件設(shè)計必須遵循軟件工程規(guī)范[1],有關(guān)在軟件工程規(guī)范的指導(dǎo)下進(jìn)行嵌入式芯片匯編語言程序設(shè)計的方法,人們已做過有益的探討,并應(yīng)用于實踐中[2,3]。

在軟件工程規(guī)范中,要求在編碼設(shè)計階段運用結(jié)構(gòu)化程序設(shè)計方法,但對嵌入式芯片卻是個難題:其一,嵌入式芯片的匯編語言本身是非結(jié)構(gòu)化的低級語言,不能像高級語言一樣直接實現(xiàn)結(jié)構(gòu)化的程序編碼,其二,編碼設(shè)計過程中的存儲空間的分配,也不能像高級語言一樣由編譯系統(tǒng)完成。

因為這個難題,當(dāng)前有關(guān)嵌入式芯片的各類文獻(xiàn)及教材中,編碼設(shè)計普遍達(dá)不到結(jié)構(gòu)化設(shè)計的要求。在有關(guān)匯編語言編程方法的研究中,還沒有直接解決這個難題的詳細(xì)且可行的方案。

運用嵌入式芯片專用的已結(jié)構(gòu)化的高級語言系統(tǒng)可以回避以上難題,如MCS-51單片機(jī)的C51高級語言[4]。但高級語言只針對長期且大量應(yīng)用的芯片進(jìn)行開發(fā),新面世的芯片很少有相應(yīng)的高級語言支持,另外,高級語言在提高編程效率的同時,也降低了程序的運行效率,而有些嵌入式實時系統(tǒng)更需要的是運行效率,芯片制造公司鼓勵使用匯編語言進(jìn)行芯片功能的開發(fā)[5]。

所以,需要尋找在原有嵌入式芯片匯編語言基礎(chǔ)上直接解決這個難題的方法,現(xiàn)提出一種解決方案,就是,通過構(gòu)建結(jié)構(gòu)化的基本程序功能模塊,制定存儲空間使用策略,使編碼設(shè)計達(dá)到結(jié)構(gòu)化程序設(shè)計的標(biāo)準(zhǔn)。

本文先介紹結(jié)構(gòu)化設(shè)計方法的相關(guān)規(guī)范,再以電子技術(shù)設(shè)計人員中廣泛使用的MCS-51單片機(jī)匯編語言為例,解析本方案的內(nèi)容。

1 編碼的結(jié)構(gòu)化設(shè)計規(guī)范

1.1 結(jié)構(gòu)化設(shè)計的方法與要求

軟件工程方法將一個完整的軟件系統(tǒng)的設(shè)計分為:可行性研究、需求分析、總體設(shè)計、編碼設(shè)計(含詳細(xì)設(shè)計)、軟件測試和軟件維護(hù)幾個階段,每個階段有相應(yīng)的設(shè)計規(guī)范與設(shè)計方法,結(jié)構(gòu)化設(shè)計方法是編碼設(shè)計這個階段的主要方法。

結(jié)構(gòu)化設(shè)計的要求是:程序由一條或多條指令代碼構(gòu)成的程序塊組成,每個程序塊只能是單個入口與單個出口且程序流程是單向的,程序塊的內(nèi)部只能是順序、選擇或重復(fù)三種結(jié)構(gòu),程序塊之間只能是順序或嵌套二種關(guān)系。

盒圖(N-S圖)在形式上沒有轉(zhuǎn)移語句,只有順序、選擇與重復(fù)三種結(jié)構(gòu),其中重復(fù)的主要方式是循環(huán),如圖1中(a)、(b)和(c)所示,所以能用盒圖表示的只能是模塊化的程序結(jié)構(gòu)。

圖1 三種基本程序結(jié)構(gòu)的盒圖表示法

1.2 編碼設(shè)計結(jié)構(gòu)化的實現(xiàn)

采用匯編語言進(jìn)行總體設(shè)計很容易達(dá)到模塊化設(shè)計的要求,但在實行編碼設(shè)計的結(jié)構(gòu)化時卻存在著困難。

原因之一在于匯編語言作為低級語言,沒有結(jié)構(gòu)化的語句結(jié)構(gòu)體,系統(tǒng)只提供了多種轉(zhuǎn)移語句。解決的辦法是通過構(gòu)建結(jié)構(gòu)化語句體的來實現(xiàn)結(jié)構(gòu)化,其中的關(guān)鍵是所有轉(zhuǎn)移語句必須控制在語句結(jié)構(gòu)體內(nèi),可以用所構(gòu)建語句體的流程圖能否能對應(yīng)一個等效盒圖作為是否達(dá)到結(jié)構(gòu)化的標(biāo)準(zhǔn)。

另一個原因在于匯編語言作為低級語言,編譯系統(tǒng)本身不能有效進(jìn)行存儲空間的分配。解決的辦法是先將程序中變量所對應(yīng)的存儲空間機(jī)動化,再根據(jù)軟件系統(tǒng)子程序之間的模塊結(jié)構(gòu)制定相應(yīng)的分配策略。

在MCS-51單片機(jī)匯編語言中,轉(zhuǎn)移條件一般由邏輯值表示,所以先將條件式變成邏輯值形式的“值L”,再判斷“值L”進(jìn)行轉(zhuǎn)移,在流圖中,應(yīng)將條件式變成邏輯值的語句包含在判斷語句體中。另外,為了使用標(biāo)號表示的轉(zhuǎn)移目標(biāo)位置仍然在語句體內(nèi),在需要時,可以將轉(zhuǎn)移的目標(biāo)位置設(shè)置成空操作指令,以去除語句體與內(nèi)嵌模塊的地址標(biāo)號的關(guān)聯(lián),達(dá)到信息隱藏的目的。

2 構(gòu)建語句結(jié)構(gòu)體

語句結(jié)構(gòu)體有順序、選擇與重復(fù)(循環(huán))三種,現(xiàn)分別說明符合結(jié)構(gòu)化標(biāo)準(zhǔn)的分支選擇語句和重復(fù)循環(huán)語句的語句結(jié)構(gòu)體構(gòu)建方法。

2.1 分支語句結(jié)構(gòu)體的設(shè)計

分支結(jié)構(gòu)有雙分支,單分支、多分支三種形式,在結(jié)構(gòu)上,單分支可以通過雙分支簡化得到,多分支可以通過雙分支嵌套得到,還有一種常用的并行多分支,一般另行設(shè)計專用的程序結(jié)構(gòu)。現(xiàn)介紹雙分支與并行多分支的結(jié)構(gòu)體的構(gòu)建。

雙分支語句結(jié)構(gòu)體的構(gòu)建如圖2所示,結(jié)構(gòu)化的流程圖如圖2(a)所示,對應(yīng)的語句結(jié)構(gòu)如圖2(b)所示,等效的盒圖如圖2(c)所示。雙分支內(nèi)嵌判定條件分別為真與假時所要執(zhí)行的“T分支”與“F分支”二個程序模塊。

圖2 雙分支語結(jié)構(gòu)體

并行多分支語句結(jié)構(gòu)體的構(gòu)建如圖3,結(jié)構(gòu)化的流程圖如圖3(a)所示,對應(yīng)的語句結(jié)構(gòu)如圖3(b)所示,等效的盒圖如圖3(c)所示。并行多分支內(nèi)嵌多個判定條件,某個條件為真則執(zhí)行對應(yīng)的處理分支程序模塊。

圖3 并行多分支語句結(jié)構(gòu)體

2.2 循環(huán)語句結(jié)構(gòu)體的設(shè)計

循環(huán)結(jié)構(gòu)常分為當(dāng)型循環(huán)、直到型循環(huán)和計數(shù)循環(huán)三種形式,計數(shù)循環(huán)可以在當(dāng)型循環(huán)或直到型循環(huán)基礎(chǔ)修改得到,現(xiàn)介紹當(dāng)型循環(huán)與直到型循環(huán)結(jié)構(gòu)體的構(gòu)建。

當(dāng)型循環(huán)語句結(jié)構(gòu)體的構(gòu)建如圖4,結(jié)構(gòu)化的流程圖如圖4(a)所示,對應(yīng)的語句結(jié)構(gòu)如圖4(b)所示,等效的盒圖如圖4(c)所示。當(dāng)型循環(huán)內(nèi)嵌循環(huán)體程序模塊。

圖4 當(dāng)型循環(huán)語句結(jié)構(gòu)體

直到型循環(huán)語句結(jié)構(gòu)體的構(gòu)建如圖5,結(jié)構(gòu)化的流程圖如圖5(a)所示,對應(yīng)的語句結(jié)構(gòu)如圖5(b)所示,等效的盒圖如圖5(c)所示。直到型循環(huán)內(nèi)嵌循環(huán)體程序模塊。

圖5 直到型循環(huán)語句結(jié)構(gòu)體

3 存儲空間分配策略

3.1 存儲空間配置的機(jī)動化

為給系統(tǒng)存儲空間的重新分配創(chuàng)造條件,程序變量所對應(yīng)的存儲空間需機(jī)動化。編碼時應(yīng)當(dāng)用變量名代表存儲空間,而不能直接使用絕對的存儲地址,這樣做可以方便的實現(xiàn)存儲空間再分配,同時,也使得程序的可讀性變強(qiáng),調(diào)試更容易。存儲空間可分為變量與數(shù)據(jù)塊二類,數(shù)據(jù)塊可用首址與長度二個專用變量表示。

存儲空間是分類別的,為了方便再分配,可以將變量的類別信息包含在變量名中,變量名的命名在“匈牙利命名規(guī)則”基礎(chǔ)上做適當(dāng)補(bǔ)充,變量命名規(guī)則設(shè)置如下:

M作用域_類別_限定詞

M為變量說明,所有變量的第一個字母用M開始;作用域用P或S表示,P為全局變量,S為私有變量;類別是變量類型,Di為字節(jié)地址,Ri為可間址的工作區(qū)寄存器,Rn為普通工作區(qū)寄存器,Da為字節(jié)常數(shù),Bi為位地址,Dbs為數(shù)據(jù)塊首址,Dbl為數(shù)據(jù)塊長度;限定詞為區(qū)分不同變量的自選詞。

圖6 存儲空間機(jī)動配置的程序

除了累加器A、程序狀態(tài)字PSW和位累加器Cy外,變量的使用必須經(jīng)等值偽指令命名,子程序間變量的傳遞用全局變量完成。圖6為一個實現(xiàn)了存儲空間機(jī)動配置的程序段。

3.2 存儲空間分配策略

軟件系統(tǒng)的結(jié)構(gòu)一般分為主程序系統(tǒng)和若干個中斷部分,每個部分的程序結(jié)構(gòu)圖如圖7所示,每個程序有自己所需要的存儲空間,用變量集表示。因為中斷的發(fā)生有具不確定性,所以中斷程序必須獨立處理存儲空間的分配。

圖7 主程序或中斷程序塊結(jié)構(gòu)示意圖

所有子程序編碼結(jié)束后,根據(jù)程序結(jié)構(gòu)圖,為每個程序分配實際存儲空間,分配的步驟是:

①分配主程序與中斷程序所需要的所有全局變量;

②為同層各模塊分配存儲空間,同層間空間共享;

③為不同模塊層分配存儲空間,空間獨享;

④以同樣的方式分配各中斷程序的存儲空間,中斷程序與主程序之間空間獨享。

有限的堆棧空間主要用于中斷調(diào)用時的累加器A與程序狀態(tài)字PSW的存儲。

4 結(jié)語

本文分析了嵌入式芯片匯編語言在編碼設(shè)計過程中實現(xiàn)結(jié)構(gòu)化設(shè)計的困難所在,以通用的MCS-51單片機(jī)為樣本,給出了在匯編語言基礎(chǔ)上構(gòu)建結(jié)構(gòu)化語句結(jié)構(gòu)體的可行的實施辦法,提出了系統(tǒng)變量存儲空間統(tǒng)一分配的策略,使程序編碼達(dá)到了結(jié)構(gòu)化設(shè)計的要求,增加了程序的可讀性及可維護(hù)性。

[1] 屠立德,屠祁.軟件工程方法[M].北京,機(jī)械工業(yè)出版社,2001.

[2] 楊勇,王為民.MCS-51系列單片機(jī)結(jié)構(gòu)化程序設(shè)計探討[J].電子技術(shù)應(yīng)用,2007(7):24-26.

[3] 曲輝,李海軍,吳利斌,等.單片機(jī)結(jié)構(gòu)化程序設(shè)計方法與實現(xiàn)[J].內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報,2010,31(1):158-161.

[4] 熊光澤,古幼鵬,桑楠.嵌入式應(yīng)用軟件設(shè)計方法學(xué)研究綜述[J].計算機(jī)應(yīng)用,2004,24(4):1-4.

[5] 宓哲民,顏見明.淺談結(jié)構(gòu)化程序設(shè)計(上)[J].可編程控制器與工廠自動化,2010(10):127-129.

Research on the design of assembly language structured code in embedded chip

ZHANG Tong-hua1,HAN Ming-jun2,1

(1.Department of Electronic Information,Wuhu Vocational College of Information Technology,Wuhu 241003,China;2.School of Electronics and Information Engineering,Anhui University,Hefei 230039,China)

In order to improve the design level of assembly language code in embedded chip and overcome the difficulty of unstructured language statements and random storage allocation,this article,taking MCS-51 MCU assembly language as an example,presents an operable solution according to structural design specifications in software engineering.Based on sentence structures,we have designed equivalent program flowchart and sentence structures with structured box figure to construct the structured choice structure and circulation structure.According to the distribution of storage and call relationship of programs,we have presented a variable storage space distribution strategy of same layer sharing and different layer exclusive.

structured programming;embedded chip;code design;assembly Language

TP368.1

A

1009-3907(2011)06-0022-05

2011-04-13

安徽省專業(yè)帶頭人資助項目(DDR2008GZ94),安徽省省級教學(xué)名師資助項目(MS2009GZ07),安徽省省級電工電子示范實驗中心資助項目(2008SFZX30)。

張同華(1963-),男,安徽蕪湖人,副教授,碩士,主要從事程序設(shè)計與電子技術(shù)方面研究。

責(zé)任編輯:吳旭云

猜你喜歡
程序結(jié)構(gòu)設(shè)計
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
論結(jié)構(gòu)
中華詩詞(2019年7期)2019-11-25 01:43:04
試論我國未決羈押程序的立法完善
瞞天過海——仿生設(shè)計萌到家
“程序猿”的生活什么樣
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
英國與歐盟正式啟動“離婚”程序程序
論《日出》的結(jié)構(gòu)
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: 69综合网| 真实国产乱子伦高清| 国产18在线| 国产青榴视频| 91福利免费| 大香网伊人久久综合网2020| 国产97视频在线| 欧美国产在线看| 毛片在线看网站| 亚洲AV免费一区二区三区| 婷婷综合亚洲| 男女男免费视频网站国产| 国产91小视频在线观看| av大片在线无码免费| 国产麻豆永久视频| 91精品伊人久久大香线蕉| 在线看片中文字幕| 国产午夜精品一区二区三区软件| 国产区网址| 亚洲男人的天堂在线观看| 久久青草精品一区二区三区 | 小蝌蚪亚洲精品国产| 久久77777| 最新日韩AV网址在线观看| 不卡的在线视频免费观看| 国产一级在线观看www色| 午夜爽爽视频| 亚洲福利片无码最新在线播放| 一区二区欧美日韩高清免费| 久久无码av一区二区三区| 亚洲中文字幕在线精品一区| 成人国产精品网站在线看| 三上悠亚精品二区在线观看| 国产jizz| 欧美日韩激情| 久久香蕉国产线看观| 国产亚洲视频中文字幕视频| 国产97视频在线| 亚洲国产中文在线二区三区免| 午夜福利视频一区| 中文字幕av一区二区三区欲色| 国产精品爽爽va在线无码观看 | 午夜啪啪福利| 国产精品第三页在线看| 国产亚洲精品自在线| 国产成人8x视频一区二区| 国产不卡在线看| a欧美在线| 国产日韩欧美视频| 欧美专区日韩专区| 精品视频福利| 亚洲人网站| 一级爱做片免费观看久久| 熟女成人国产精品视频| 欧洲成人免费视频| 毛片手机在线看| 欧美成人午夜影院| 亚洲全网成人资源在线观看| 国产一区二区人大臿蕉香蕉| 亚洲AV电影不卡在线观看| 性网站在线观看| 亚洲欧洲日产国产无码AV| 免费观看成人久久网免费观看| 狠狠色丁婷婷综合久久| 人妻一本久道久久综合久久鬼色| 亚洲欧美日韩精品专区| 亚洲人成亚洲精品| 亚洲欧美成人网| 一本色道久久88| 日韩精品无码免费一区二区三区 | 丁香五月亚洲综合在线| 久草视频中文| 国产系列在线| 国产精品无码影视久久久久久久| 久久99精品久久久久纯品| 精品久久久无码专区中文字幕| 亚洲成人在线免费| 国产又粗又猛又爽| 国产一在线| 久草视频福利在线观看| 久久动漫精品| 久久久久国色AV免费观看性色|