匯編語(yǔ)言程序的結(jié)構(gòu)
1、順序結(jié)構(gòu)程序
順序結(jié)構(gòu)程序,是按程序順序一條指令緊接一條指令執(zhí)行,是所有程序設(shè)計(jì)中最基本的程序結(jié)構(gòu),是應(yīng)用最普遍的程序結(jié)構(gòu),是實(shí)際編寫(xiě)程序的基礎(chǔ)。
2、選擇結(jié)構(gòu)程序(分支程序)
選擇結(jié)構(gòu)程序,是指在程序執(zhí)行過(guò)程中,依據(jù)條件選擇執(zhí)行不同的分支程序。為實(shí)現(xiàn)程序分支,編寫(xiě)選擇結(jié)構(gòu)程序時(shí)要合理選用具有判斷功能的指令,如條件轉(zhuǎn)移指令、比較轉(zhuǎn)移指令和位轉(zhuǎn)移指令等。
選擇結(jié)構(gòu)程序允許嵌套,從而形成多級(jí)選擇程序結(jié)構(gòu)。匯編語(yǔ)言不限制嵌套的層數(shù),但過(guò)多的嵌套將使程序的結(jié)構(gòu)變得復(fù)雜和臃腫,容易造成混亂。
3、循環(huán)結(jié)構(gòu)程序
循環(huán)是指MCU反復(fù)地執(zhí)行某種相同的操作。從本質(zhì)上講,循環(huán)只是選擇結(jié)構(gòu)程序中的一個(gè)特殊形式而已,但因?yàn)槠渲匾裕蚨?dú)立作為一種程序結(jié)構(gòu)。
在進(jìn)入循環(huán)體之前,需給用于循環(huán)過(guò)程的工作單元設(shè)置初值,如循環(huán)控制計(jì)數(shù)初值、地址指針起始地址的設(shè)置、變量初值等,初始化部分是保證循環(huán)正確執(zhí)行所必須的。循環(huán)體是循環(huán)結(jié)構(gòu)的核心,完成實(shí)際的處理工作,在循環(huán)體中也可包括改變循環(huán)變量、改變地址指針等有關(guān)修改循環(huán)參數(shù)的部分。循環(huán)控制部分通過(guò)循環(huán)變量和結(jié)束條件控制循環(huán)結(jié)束,有時(shí)修改循環(huán)參數(shù)和判斷結(jié)束條件由一條指令完成,如DJNZ。循環(huán)處理程序的結(jié)束條件不同,相應(yīng)控制部分的實(shí)現(xiàn)方法也不一樣,分循環(huán)計(jì)數(shù)控制和條件控制。
4、子程序結(jié)構(gòu)
子程序是在主程序中通過(guò)LCALL、ACALL等指令調(diào)用的程序段,該程序段的第一條指令地址稱(chēng)子程序入口地址。子程序的最后一條指令必須是RET返回指令,即返回到主程序中調(diào)用子程序指令的下一條指令。
實(shí)際應(yīng)用中,大多數(shù)子程序具有復(fù)雜程度不等的結(jié)構(gòu),主程序調(diào)用的子程序運(yùn)行時(shí)有可能改變主程序中某些寄存器的內(nèi)容,如PSW、A、B、工作寄存器等,這樣就必須先用PUSH指令將相應(yīng)寄存器的內(nèi)容壓入堆棧保護(hù)起來(lái),返回時(shí)再用POP指令將壓入堆棧的內(nèi)容彈回到相應(yīng)的寄存器中。有調(diào)用前在主程序保護(hù)和子程序開(kāi)頭保護(hù)兩種,相應(yīng)的在主程序恢復(fù)和子程序末尾恢復(fù)。
常用匯編語(yǔ)言程序
1、延時(shí)程序
延時(shí)程序是經(jīng)常使用的程序,一般設(shè)計(jì)成具有通用性的循環(huán)結(jié)構(gòu)子程序。在設(shè)計(jì)延時(shí)子程序時(shí),延時(shí)的最小單位為機(jī)器周期,所以要注意晶振的頻率。
2、碼制轉(zhuǎn)換程序
MCU內(nèi)部進(jìn)行數(shù)據(jù)計(jì)算和存儲(chǔ)時(shí),多采用二進(jìn)制碼;在數(shù)據(jù)的輸入/輸出中,多采用BCD碼。編程中經(jīng)常會(huì)遇到各種碼制的轉(zhuǎn)換問(wèn)題。
十進(jìn)制數(shù)常用BCD碼表示,BCD碼有兩種形式:一種是一個(gè)字節(jié)放一位BCD碼,適用于顯示或輸出;另一種是壓縮的BCD碼,一個(gè)字節(jié)放兩個(gè)BCD碼,節(jié)省存儲(chǔ)單元。
單字節(jié)二進(jìn)制(或16進(jìn)制)數(shù)轉(zhuǎn)換為BCD碼的一般方法是把二進(jìn)制數(shù)除以100,得到百位數(shù),余數(shù)除以10的商和余數(shù)分別是十位數(shù)、個(gè)位數(shù)。
3、數(shù)據(jù)排序程序
經(jīng)常要對(duì)數(shù)據(jù)進(jìn)行排序,排序的方法有按從小到大的次序和按從大到小的次序排。示例為將放于片內(nèi)RAM的50H~5AH單元中的單字節(jié)無(wú)符號(hào)正整數(shù)按從小到大的次序重新排列(冒泡法)。
-
匯編語(yǔ)言
+關(guān)注
關(guān)注
14文章
410瀏覽量
35971 -
匯編語(yǔ)言程序
+關(guān)注
關(guān)注
0文章
6瀏覽量
6398
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
匯編語(yǔ)言程序設(shè)計(jì)pdf
![<b class='flag-5'>匯編語(yǔ)言</b><b class='flag-5'>程序</b>設(shè)計(jì)pdf](https://file.elecfans.com/web2/M00/48/84/pYYBAGKhtAuAMRRbAAAb9e_FWSw521.jpg)
匯編語(yǔ)言程序設(shè)計(jì)下載
![<b class='flag-5'>匯編語(yǔ)言</b><b class='flag-5'>程序</b>設(shè)計(jì)下載](https://file.elecfans.com/web2/M00/48/84/pYYBAGKhtAuAQmv9AAAb9e_FWSw377.jpg)
宏匯編語(yǔ)言程序設(shè)計(jì)(PDF)
![宏<b class='flag-5'>匯編語(yǔ)言</b><b class='flag-5'>程序</b>設(shè)計(jì)(PDF)](https://file.elecfans.com/web2/M00/48/84/pYYBAGKhtAuAB9oFAAAgnQxmd64213.jpg)
匯編語(yǔ)言自學(xué)教程
匯編語(yǔ)言程序結(jié)構(gòu)
匯編語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)
![<b class='flag-5'>匯編語(yǔ)言</b><b class='flag-5'>程序</b>設(shè)計(jì)實(shí)驗(yàn)](https://file1.elecfans.com//web2/M00/A4/68/wKgZomUMNBGAGFtyAACaQtGLKDI948.jpg)
評(píng)論