匯編語言程序設(shè)計(jì)課件_第1頁
匯編語言程序設(shè)計(jì)課件_第2頁
匯編語言程序設(shè)計(jì)課件_第3頁
匯編語言程序設(shè)計(jì)課件_第4頁
匯編語言程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章匯編語言程序設(shè)計(jì)7.1偽指令7.2算術(shù)運(yùn)算程序的設(shè)計(jì)7.3循環(huán)程序的設(shè)計(jì)7.4查表程序的設(shè)計(jì)7.5檢索程序的設(shè)計(jì)7.6分支程序的設(shè)計(jì)7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)7.8邏輯操作程序主要內(nèi)容9/14/20231單片機(jī)原理及其應(yīng)用第7章匯編語言程序設(shè)計(jì)7.1偽指令主8/4/20231單第7章匯編語言程序設(shè)計(jì)

程序設(shè)計(jì)是為了解決某一個(gè)問題,把指令(或語句)按照一定的意圖有序地組合在一起。目前,基于MCS-51單片機(jī)的程序開發(fā)設(shè)計(jì)有采用匯編語言和高級(jí)語言2種形式,高級(jí)語言有采用C語言、BASIC語言、PLM語言等,大多數(shù)集成開發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)軟件都支持這2種形式。9/14/20232單片機(jī)原理及其應(yīng)用第7章匯編語言程序設(shè)計(jì)程序設(shè)計(jì)是為了解決某一個(gè)匯編程序設(shè)計(jì)的步驟:(1)分析題目或課題的要求,正確理解解決什么問題,如何解決問題、有哪些可利用的資源、對(duì)計(jì)算精度的要求等;另外,了解應(yīng)用系統(tǒng)硬件的結(jié)構(gòu)和功能與課題任務(wù)的關(guān)聯(lián)。(2)確定解決問題的方案,畫出程序流程框圖;(2)根據(jù)解決方案,確定變量及其數(shù)據(jù)存儲(chǔ)格式,給各個(gè)變量分配存儲(chǔ)空間;(3)根據(jù)程序流程圖,選用合適的指令編寫程序,完成源程序的設(shè)計(jì);(4)在集成開發(fā)環(huán)境上調(diào)試,完成設(shè)計(jì)要求的功能。第7章匯編語言程序設(shè)計(jì)9/14/20233單片機(jī)原理及其應(yīng)用匯編程序設(shè)計(jì)的步驟:第7章匯編語言程序設(shè)計(jì)8/4/2027.1偽指令

偽指令(PseudoInstruction)是匯編語言中起解釋說明的命令,它不是單片機(jī)的指令。在單片機(jī)的集成開發(fā)環(huán)境中,向匯編系統(tǒng)說明程序存儲(chǔ)在程序存儲(chǔ)器的哪個(gè)區(qū)域、本匯編語言程序到何處結(jié)束、變量代號(hào)對(duì)應(yīng)的單元地址或所代表的數(shù)值等。在匯編時(shí),偽指令不會(huì)產(chǎn)生目標(biāo)代碼,不影響程序的執(zhí)行。9/14/20234單片機(jī)原理及其應(yīng)用7.1偽指令偽指令(PseudoInstru7.1偽指令常用的有以下幾種偽指令:(1)設(shè)置起始地址偽指令ORGORGxxxxH如:ORG0100HSUB:MOVR0,#30H ……(2)賦值偽指令EQU變量代號(hào)EQU數(shù)值如:LENEQU20;在程序中變量LEN的值為20HXdata EQU4F8BH;在程序中變量Xdata的值為4F8BH9/14/20235單片機(jī)原理及其應(yīng)用7.1偽指令常用的有以下幾種偽指令:8/4/20235單片7.1偽指令(3)定義字節(jié)數(shù)據(jù)偽指令DB[xxxxH]DB data如:2000H DB30H ; 偽指令DB也可用來定義多個(gè)連續(xù)單元為常數(shù),即用來定義一組單字節(jié)數(shù)據(jù)組成的常數(shù)表。如:ORG1000HDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,2EH,0DH

9/14/20236單片機(jī)原理及其應(yīng)用7.1偽指令(3)定義字節(jié)數(shù)據(jù)偽指令DB8/4/202367.1偽指令(4)定義雙字節(jié)數(shù)據(jù)偽指令DW[xxxxH]DW data16如: 1000HDW0FDE1H 1100HDW1345,2241,34556(5)位地址賦值偽指令BIT變量代號(hào) BIT 位地址如:CS BIT P2.0FLAG BIT 20H.6(6)匯編結(jié)束偽指令ENDEND9/14/20237單片機(jī)原理及其應(yīng)用7.1偽指令(4)定義雙字節(jié)數(shù)據(jù)偽指令DW8/4/2027.2算術(shù)運(yùn)算程序的設(shè)計(jì)在MCS-51單片機(jī)指令系統(tǒng)中,算術(shù)運(yùn)算指令僅支持2個(gè)無符號(hào)的8位二進(jìn)制數(shù)的運(yùn)算,二進(jìn)制數(shù)算術(shù)運(yùn)算是按字節(jié)的方式進(jìn)行的。9/14/20238單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)在MCS-51單片機(jī)指7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例1多字節(jié)二進(jìn)制加法。以三字節(jié)無符號(hào)二進(jìn)制數(shù)為例,算法如圖7.1所示,圖中一個(gè)方框代表一個(gè)單元。Cy表示進(jìn)位。當(dāng)最低字節(jié)(低8位)運(yùn)算時(shí),如果令Cy為0,那么,完成3個(gè)字節(jié)的加法運(yùn)算進(jìn)行了3次相同的單字節(jié)加法操作,可以采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)2個(gè)3字節(jié)數(shù)據(jù)的加法運(yùn)算。

圖7.1二進(jìn)制數(shù)加法算法9/14/20239單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例1多字節(jié)二進(jìn)制加法。圖7.17.2算術(shù)運(yùn)算程序的設(shè)計(jì)例2多字節(jié)二進(jìn)制減法。 多字節(jié)二進(jìn)制減法與多字節(jié)二進(jìn)制加法相似,圖7.2為3字節(jié)二進(jìn)制減法的算法。

圖7.2減法算法9/14/202310單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例2多字節(jié)二進(jìn)制減法。圖7.27.2算術(shù)運(yùn)算程序的設(shè)計(jì)例3多位十進(jìn)制數(shù)加法。 十進(jìn)制數(shù)在計(jì)算機(jī)中可以采用BCD碼的形式存放。采用緊湊形式(或壓縮式)BCD碼存放十進(jìn)制數(shù)時(shí),一個(gè)存儲(chǔ)單元可以存儲(chǔ)2位。MCS-51單片機(jī)僅支持二進(jìn)制加法運(yùn)算,采用ADD和ADDC指令的結(jié)果是二進(jìn)制數(shù),因此,2個(gè)以BCD碼形式存儲(chǔ)的數(shù)據(jù),在用ADD和ADDC運(yùn)算之后,必須對(duì)其運(yùn)算結(jié)果進(jìn)行調(diào)整。多位十進(jìn)制數(shù)加法的算法與多字節(jié)二進(jìn)制數(shù)算法相似,如圖7.3所示。9/14/202311單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例3多位十進(jìn)制數(shù)加法。8/4/27.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.3多位十進(jìn)制加法算法9/14/202312單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.3多位十進(jìn)制加法算法8/47.2算術(shù)運(yùn)算程序的設(shè)計(jì)例4多位十進(jìn)制減法在第3章的例30中,我們介紹了2位十進(jìn)制數(shù)減法算法:X-Y=X+100-Y

X+9AH-Y,把十進(jìn)制減法變換成二進(jìn)制減法(求十進(jìn)制減數(shù)的補(bǔ)碼)和十進(jìn)制加法2步進(jìn)行。多位十進(jìn)制數(shù)減法也采用了同樣的算法。設(shè)被減數(shù)存放在20H開始的內(nèi)部RAM存儲(chǔ)單元,減數(shù)存放在30H開始的存儲(chǔ)單元,6位十進(jìn)制數(shù)減法的程序如下9/14/202313單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例4多位十進(jìn)制減法8/4/2027.2算術(shù)運(yùn)算程序的設(shè)計(jì)(1)2位十進(jìn)制數(shù)減法子程序:入口條件:R0指出被減數(shù)所在單元的地址;R1指出減數(shù)所在單元的地址;出口條件:R0指出差所在單元的地址,進(jìn)位在Cy中;

SH_SUB:MOVA,#9AH SUBBA,@R1 ADDA,@R0 DAA MOV@R0,A INCR0 INCR1 CPLC RET9/14/202314單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)(1)2位十進(jìn)制數(shù)減法子程序:8/7.2算術(shù)運(yùn)算程序的設(shè)計(jì)(2)6位十進(jìn)制數(shù)加法程序:

MOVR0,#20H MOVR1,#30H MOVR5,#03H CLRCDOSUB: ACALLSH_SUB DJNZR5,DOSUB RET9/14/202315單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)(2)6位十進(jìn)制數(shù)加法程序:8/47.2算術(shù)運(yùn)算程序的設(shè)計(jì)例5多字節(jié)數(shù)二進(jìn)制乘法 2個(gè)多字節(jié)二進(jìn)制數(shù)乘法的算法與按位進(jìn)行十進(jìn)制數(shù)乘法相似。把它轉(zhuǎn)換為幾個(gè)多字節(jié)與單字節(jié)的乘法運(yùn)算,先分別計(jì)算出它們的部分積,然后按照規(guī)則把部分積累加計(jì)算出乘積。圖7.4為2個(gè)16位二進(jìn)制數(shù)相乘的算法原理圖。圖中被乘數(shù)為X,其高八位和低八位分別存儲(chǔ)在XH和XL單元,乘數(shù)為Y,YH和YL分別高八位和低八位存儲(chǔ)單元。9/14/202316單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例5多字節(jié)數(shù)二進(jìn)制乘法8/4/27.2算術(shù)運(yùn)算程序的設(shè)計(jì)算法分2步進(jìn)行:首先,分別用乘數(shù)的高八位和低八位與被乘數(shù)相乘,計(jì)算部分積,分別存儲(chǔ)在(XYH3),(XYH2),(XYH1)和(XYL3),(XYL2)(XYL1)單元;在編寫程序時(shí),乘法運(yùn)算可以用子程序調(diào)用的方法實(shí)現(xiàn)(第3章例33)。第二步,采用加法運(yùn)算求出乘積存儲(chǔ)在(XY4)(XY3)(XY2)(XY1)單元。9/14/202317單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)算法分2步進(jìn)行:首先,分7.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.42個(gè)16位二進(jìn)制數(shù)乘法算法9/14/202318單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.42個(gè)16位二進(jìn)制數(shù)乘法算7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例6多字節(jié)二進(jìn)制除法 2個(gè)多字節(jié)無符號(hào)二進(jìn)制數(shù)的除法是采用移位和減法運(yùn)算實(shí)現(xiàn)的,實(shí)現(xiàn)過程與我們進(jìn)行十進(jìn)制數(shù)乘法形似,每次進(jìn)行除法運(yùn)算時(shí),如果余數(shù)大于減數(shù)(構(gòu)件)則商1,否則,商0。圖7.5為16位二進(jìn)制數(shù)除以8位二進(jìn)制數(shù)的程序流程圖。該算法要求被除數(shù)的高八位數(shù)據(jù)必須小于除數(shù),否則,作為溢出處理,子程序把標(biāo)志位OV的狀態(tài)置為1,從子程序返回。9/14/202319單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)例6多字節(jié)二進(jìn)制除法8/4/207.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.5除法程序流程圖9/14/202320單片機(jī)原理及其應(yīng)用7.2算術(shù)運(yùn)算程序的設(shè)計(jì)圖7.5除法程序流程圖8/4/27.3循環(huán)程序的設(shè)計(jì)(一)循環(huán)結(jié)構(gòu)的組成循環(huán)結(jié)構(gòu)由4部分組成:初始化部分、循環(huán)處理部分、循環(huán)控制部分和循環(huán)結(jié)束部分。循環(huán)結(jié)構(gòu)組成圖見圖7.6。圖7.6循環(huán)結(jié)構(gòu)組成9/14/202321單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)(一)循環(huán)結(jié)構(gòu)的組成圖7.6循環(huán)結(jié)7.3循環(huán)程序的設(shè)計(jì)匯編語言程序設(shè)計(jì)中常見的典型循環(huán)結(jié)構(gòu)如圖7.7所示。(1)先處理后判斷的結(jié)構(gòu)(2)先判斷后處理的結(jié)構(gòu)圖7.7典型循環(huán)結(jié)構(gòu)9/14/202322單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)匯編語言程序設(shè)計(jì)中常見的典7.3循環(huán)程序的設(shè)計(jì)(二)循環(huán)程序設(shè)計(jì)舉例例7設(shè)單片機(jī)系統(tǒng)采集的8個(gè)單字節(jié)數(shù)據(jù)存儲(chǔ)在單片機(jī)內(nèi)部RAM的30H開始的連續(xù)單元中,求它們的均值。 計(jì)算一組數(shù)據(jù)平均值的公式為:,其中,為第i個(gè)數(shù)據(jù),N為數(shù)據(jù)的個(gè)數(shù)。因此,要計(jì)算出平均值需要進(jìn)行2種運(yùn)算:求數(shù)據(jù)的總和、數(shù)據(jù)總和除以數(shù)據(jù)個(gè)數(shù)。 (1)求數(shù)據(jù)的總和設(shè)S為數(shù)據(jù)的總和,在計(jì)算機(jī)中求多個(gè)數(shù)據(jù)總和的算法如下:

該算法的程序流程框圖見圖7.8

9/14/202323單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)(二)循環(huán)程序設(shè)計(jì)舉例 7.3循環(huán)程序的設(shè)計(jì)圖7.8多個(gè)數(shù)據(jù)求總和的流程圖9/14/202324單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)圖7.8多個(gè)數(shù)據(jù)求總和的流程圖8/47.3循環(huán)程序的設(shè)計(jì)例8設(shè)有一個(gè)字符串以回車符(ASCII碼為0DH)為結(jié)束標(biāo)志,并存放在內(nèi)部RAM的40H單元開始的連續(xù)存儲(chǔ)單元中,編寫測(cè)試字符串長(zhǎng)度的程序。這是一個(gè)循環(huán)次數(shù)未知的循環(huán)程序設(shè)計(jì)例題。為了測(cè)試字符串的長(zhǎng)度,字符串中的每個(gè)字符依次與回車符(0DH)比較,如果比較不相等,則字符串長(zhǎng)度計(jì)數(shù)器加1,繼續(xù)測(cè)試;如果比較相等,表示該字符為回車符,則字符串結(jié)束,長(zhǎng)度計(jì)數(shù)器的值就是字符串的長(zhǎng)度。程序流程框圖如圖7.9所示。9/14/202325單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)例8設(shè)有一個(gè)字符串以回車符(ASCI7.3循環(huán)程序的設(shè)計(jì)圖7.9測(cè)試字符串長(zhǎng)度的程序流程框圖

9/14/202326單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)圖7.9測(cè)試字符串長(zhǎng)度的程序流程框圖7.3循環(huán)程序的設(shè)計(jì)(1)硬件電路原理圖(2)發(fā)光二極管布置示意圖圖7.10循環(huán)閃爍系統(tǒng)原理與布置示意圖9/14/202327單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)(1)硬件電路原理圖7.3循環(huán)程序的設(shè)計(jì)例9循環(huán)閃爍系統(tǒng)原理與布置示意圖如圖7.10所示,MCS-51單片機(jī)的P1口控制8個(gè)發(fā)光二極管。編制一個(gè)循環(huán)閃爍的程序,要求每次相鄰的2個(gè)發(fā)光二極管為1組閃爍點(diǎn)亮3次后,轉(zhuǎn)移到下一組,8個(gè)發(fā)光二極管顯示1遍后,全部點(diǎn)亮,然后熄滅,又以每組2個(gè)燈的方式閃爍顯示,如此不斷循環(huán)。9/14/202328單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)例9循環(huán)閃爍系統(tǒng)原理與布置7.3循環(huán)程序的設(shè)計(jì)圖7.11循環(huán)閃爍系統(tǒng)的程序流程圖9/14/202329單片機(jī)原理及其應(yīng)用7.3循環(huán)程序的設(shè)計(jì)圖7.11循環(huán)閃爍系統(tǒng)的程序流程圖87.4查表程序的設(shè)計(jì)

查表程序是一種在單片機(jī)應(yīng)用系統(tǒng)中常用的程序,例如,顯示輸出時(shí),利用查表程序提取字型編碼,數(shù)值運(yùn)算時(shí),利用它可以避免進(jìn)行復(fù)雜的程序運(yùn)算或轉(zhuǎn)換運(yùn)算,可以完成數(shù)據(jù)插補(bǔ)、修正、計(jì)算、轉(zhuǎn)換等功能。9/14/202330單片機(jī)原理及其應(yīng)用7.4查表程序的設(shè)計(jì)查表程序是一種在單片機(jī)應(yīng)7.4查表程序的設(shè)計(jì)例10設(shè)字符0~9、A~F的ASCII碼已作為常數(shù)存儲(chǔ)在程序存儲(chǔ)器中,編寫子程序由給定x()查找其對(duì)應(yīng)的ASCII碼。 ASCII碼為七位二進(jìn)制編碼,一個(gè)單元也可存儲(chǔ)一個(gè)字符的ASCII碼。如果ASCII碼表存放在以ASC_TAB單元開始的區(qū)域,那么,存儲(chǔ)ASCII碼的單元地址與x的關(guān)系為:ASC_TAB+x。設(shè)存儲(chǔ)在寄存器R2中,從子程序返回時(shí)ASCII碼存儲(chǔ)在R2中,子程序程序如下:9/14/202331單片機(jī)原理及其應(yīng)用7.4查表程序的設(shè)計(jì)例10設(shè)字符0~9、A~F的ASCI7.4查表程序的設(shè)計(jì)CHECHUP:MOVDPTR,#ASC_TAB;設(shè)置表的首地址 MOVA, R2 ;取x MOVC A, @A+DPTR;查表取ASCII碼 MOV R2, A ;存查到的ASCII碼 RETASC_TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HDB41H,42H,43H,44H,45H,46H9/14/202332單片機(jī)原理及其應(yīng)用7.4查表程序的設(shè)計(jì)CHECHUP:MOVD7.5檢索程序的設(shè)計(jì)數(shù)據(jù)檢索為關(guān)鍵字查找,通常有兩種方法:順序檢索和對(duì)分檢索。本節(jié)介紹前者,對(duì)分檢索請(qǐng)參閱相關(guān)資料。

數(shù)據(jù)檢索順序檢索對(duì)分檢索9/14/202333單片機(jī)原理及其應(yīng)用7.5檢索程序的設(shè)計(jì)數(shù)據(jù)檢索為關(guān)鍵字查找,通常7.5檢索程序的設(shè)計(jì)例15設(shè)內(nèi)部RAM有一單字節(jié)無符號(hào)數(shù)數(shù)據(jù)塊,存儲(chǔ)在以30H單元為首地址的區(qū)域中。長(zhǎng)度為50個(gè)字節(jié),試編程找出其中最小的數(shù),并放在20H單元。如圖7.13例15的程序流程圖。

9/14/202334單片機(jī)原理及其應(yīng)用7.5檢索程序的設(shè)計(jì)例15設(shè)內(nèi)部RAM有一單字7.5檢索程序的設(shè)計(jì)圖7.13例15的程序流程圖9/14/202335單片機(jī)原理及其應(yīng)用7.5檢索程序的設(shè)計(jì)圖7.13例15的程序流程圖8/4/27.5檢索程序的設(shè)計(jì)例16從一個(gè)字符串找出一個(gè)‘A’的關(guān)鍵字,字符串的結(jié)束標(biāo)志為‘EOF’。 設(shè)字符串存放在20H單元開始的區(qū)域,字符以ASCII碼形式存儲(chǔ),找到關(guān)鍵字標(biāo)志位F0置1,否則清0。如圖7.14例16程序流程圖。9/14/202336單片機(jī)原理及其應(yīng)用7.5檢索程序的設(shè)計(jì)例16從一個(gè)字符串找出一7.5檢索程序的設(shè)計(jì)圖7.14例16程序流程圖9/14/202337單片機(jī)原理及其應(yīng)用7.5檢索程序的設(shè)計(jì)圖7.14例16程序流程圖8/4/27.6分支程序的設(shè)計(jì)分支程序主要是根據(jù)判斷條件的成立與否來確定程序的走向??山M成簡(jiǎn)單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。(一)單分支選擇結(jié)構(gòu)當(dāng)程序的判斷僅有兩個(gè)出口,兩者選一,稱為單分支結(jié)構(gòu)。通常用條件判斷指令來選擇并確定程序的分支出口。這類單分支選擇結(jié)構(gòu)有三種典型的形式,見圖7.15。(1)如果條件滿足,執(zhí)行程序段2,否則,執(zhí)行程序段1,結(jié)構(gòu)如圖7.15(1)。(2)如果條件滿足,則不執(zhí)行程序段1,僅執(zhí)行程序段2;否則,先執(zhí)行程序段1,再執(zhí)行程序段2。結(jié)構(gòu)如圖7.15(2)。(3)在圖7.15(3)中,當(dāng)條件不滿足時(shí),重復(fù)執(zhí)行程序段1,只有當(dāng)條件滿足時(shí),才停止執(zhí)行程序段2。9/14/202338單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)分支程序主要是根據(jù)判斷條件的成7.6分支程序的設(shè)計(jì)(1) (2) (3)

圖7.15單分支選擇結(jié)構(gòu)9/14/202339單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)(1) 7.6分支程序的設(shè)計(jì)(二)多分支選擇結(jié)構(gòu)當(dāng)程序的判別部分有兩個(gè)以上的出口流向時(shí),稱為多分支選擇結(jié)構(gòu)。如圖7.16所示。圖7.16多分支選擇結(jié)構(gòu)9/14/202340單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)(二)多分支選擇結(jié)構(gòu)圖7.16多分支7.6分支程序的設(shè)計(jì)例17和為2個(gè)帶符號(hào)單字節(jié)數(shù)據(jù),以原碼方式存放,編制程序求它們的乘積。MCS-51單片機(jī)的乘法指令支持2個(gè)8位無符號(hào)二進(jìn)制數(shù)相乘,2個(gè)帶符號(hào)二進(jìn)制數(shù)相乘,的方法如下:2個(gè)數(shù)符號(hào)相同,乘積符號(hào)為正,數(shù)值為2個(gè)數(shù)絕對(duì)值之積;2個(gè)數(shù)符號(hào)相異,乘積符號(hào)為負(fù),數(shù)值為2個(gè)數(shù)絕對(duì)值之積。帶符號(hào)二進(jìn)制乘法的程序流程圖如圖7.17所示。9/14/202341單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)例17和為2個(gè)帶符號(hào)單字節(jié)數(shù)7.6分支程序的設(shè)計(jì)圖7.17帶符號(hào)二進(jìn)制乘法的程序流程圖9/14/202342單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)圖7.17帶符號(hào)二進(jìn)制乘法的程序流程7.6分支程序的設(shè)計(jì)例18設(shè)變量的值存放在內(nèi)部RAM的30H單元中,編程求解下列函數(shù)式,將求得的函數(shù)值存入40H單元。圖7.17例18程序設(shè)計(jì)框圖9/14/202343單片機(jī)原理及其應(yīng)用7.6分支程序的設(shè)計(jì)例18設(shè)變量的值存放在內(nèi)部R7.7碼制轉(zhuǎn)換程序的設(shè)計(jì) 在單片機(jī)應(yīng)用系統(tǒng)中,計(jì)算機(jī)CPU計(jì)算、存儲(chǔ)是以二進(jìn)制形式進(jìn)行的;人機(jī)交換信息時(shí),經(jīng)常采用十進(jìn)制;設(shè)備與設(shè)備之間交換信息時(shí),有時(shí)采用ASCII碼;等等,碼制轉(zhuǎn)換程序是單片機(jī)應(yīng)用系統(tǒng)常用的程序之一。9/14/202344單片機(jī)原理及其應(yīng)用7.7碼制轉(zhuǎn)換程序的設(shè)計(jì) 在單片機(jī)應(yīng)用系統(tǒng)中,計(jì)算機(jī)7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)(一)二進(jìn)制數(shù)與十進(jìn)制數(shù)(BCD碼)之間的轉(zhuǎn)換程序設(shè)計(jì)例20設(shè)工作寄存器R6和R7中存儲(chǔ)16位二進(jìn)制數(shù),R6中存放高八位,把該數(shù)轉(zhuǎn)換為BCD碼形式,并存結(jié)果于(R3),(R4),(R5)二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法為按權(quán)展開,設(shè)16位二進(jìn)制數(shù),則對(duì)應(yīng)的十進(jìn)制數(shù)為(7.3)轉(zhuǎn)換時(shí),乘以2可以采用左移方法實(shí)現(xiàn),從最高位開始,逐位加到BCD碼存儲(chǔ)單元的最低位,并進(jìn)行十進(jìn)制加法調(diào)整,然后左移,當(dāng)最低位加入后,轉(zhuǎn)換完成。程序流程圖如圖7.18所示9/14/202345單片機(jī)原理及其應(yīng)用7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)(一)二進(jìn)制數(shù)與十進(jìn)制數(shù)(BCD碼7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)圖7.18二進(jìn)制數(shù)轉(zhuǎn)換BCD碼程序流程圖9/14/202346單片機(jī)原理及其應(yīng)用7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)圖7.18二進(jìn)制數(shù)轉(zhuǎn)換BCD碼程7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)(二)ASCII代碼與十六進(jìn)制數(shù)之間的轉(zhuǎn)換程序設(shè)計(jì)例21把2個(gè)ASCII碼表示的十六進(jìn)制數(shù)轉(zhuǎn)換成1個(gè)字節(jié)的十六進(jìn)制數(shù)。在ASCII碼表中,十六進(jìn)制數(shù)符‘0’~‘9’的ASCII碼是30H~39H,它們與其代表的十六進(jìn)制數(shù)值相差30H;數(shù)符‘A’~‘F’的ASCII碼為41H~46H,它們與其代表的十六進(jìn)制數(shù)值相差37H。因此,1位十六進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為十六進(jìn)制數(shù),當(dāng)ASCII碼減去30H的差小于0AH時(shí),其差值就是轉(zhuǎn)換結(jié)果,否則,差值還應(yīng)再減去07H才能得到轉(zhuǎn)換結(jié)果。9/14/202347單片機(jī)原理及其應(yīng)用7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)(二)ASCII代碼與十六進(jìn)制數(shù)之7.7碼制轉(zhuǎn)換程序的設(shè)計(jì)(三)ASC1I代碼與十進(jìn)制數(shù)(BCD碼)之間的轉(zhuǎn)換程序設(shè)計(jì) 十進(jìn)制數(shù)符0~9對(duì)應(yīng)的ASCII碼是30H~39H,因此,0~9的BCD碼加上30H(或者與30H相或)就是它所對(duì)應(yīng)的ASCII碼,反之,數(shù)符0~9的ASCII碼減去30H(或者與00001111B相與)就是它的BCD碼。9

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論