




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章匯編語言程序設計7.1偽指令7.2算術運算程序的設計7.3循環程序的設計7.4查表程序的設計7.5檢索程序的設計7.6分支程序的設計7.7碼制轉換程序的設計7.8邏輯操作程序主要內容2023/7/221單片機原理及其應用第7章匯編語言程序設計
程序設計是為了解決某一個問題,把指令(或語句)按照一定的意圖有序地組合在一起。目前,基于MCS-51單片機的程序開發設計有采用匯編語言和高級語言2種形式,高級語言有采用C語言、BASIC語言、PLM語言等,大多數集成開發環境(IntegratedDevelopmentEnvironment,IDE)軟件都支持這2種形式。2023/7/222單片機原理及其應用匯編程序設計的步驟:(1)分析題目或課題的要求,正確理解解決什么問題,如何解決問題、有哪些可利用的資源、對計算精度的要求等;另外,了解應用系統硬件的結構和功能與課題任務的關聯。(2)確定解決問題的方案,畫出程序流程框圖;(2)根據解決方案,確定變量及其數據存儲格式,給各個變量分配存儲空間;(3)根據程序流程圖,選用合適的指令編寫程序,完成源程序的設計;(4)在集成開發環境上調試,完成設計要求的功能。第7章匯編語言程序設計2023/7/223單片機原理及其應用7.1偽指令
偽指令(PseudoInstruction)是匯編語言中起解釋說明的命令,它不是單片機的指令。在單片機的集成開發環境中,向匯編系統說明程序存儲在程序存儲器的哪個區域、本匯編語言程序到何處結束、變量代號對應的單元地址或所代表的數值等。在匯編時,偽指令不會產生目標代碼,不影響程序的執行。2023/7/224單片機原理及其應用7.1偽指令常用的有以下幾種偽指令:(1)設置起始地址偽指令ORGORGxxxxH如:ORG0100HSUB:MOVR0,#30H ……(2)賦值偽指令EQU
變量代號EQU數值如:LENEQU20;在程序中變量LEN的值為20HXdata EQU4F8BH;在程序中變量Xdata的值為4F8BH2023/7/225單片機原理及其應用7.1偽指令(3)定義字節數據偽指令DB[標號]DB data如:2000H DB30H ;
偽指令DB也可用來定義多個連續單元為常數,即用來定義一組單字節數據組成的常數表。如:ORG1000HDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,2EH,0DH
2023/7/226單片機原理及其應用7.1偽指令(4)定義雙字節數據偽指令DW[標號:]DW data16如: ORG3000H DATA:DW0FDE1H
….. RET DATAA:DW1345,2241,34556(5)位地址賦值偽指令BIT
變量代號 BIT 位地址如:CS BIT P2.0FLAG BIT 20H.6(6)匯編結束偽指令ENDEND2023/7/227單片機原理及其應用7.2算術運算程序的設計在MCS-51單片機指令系統中,算術運算指令僅支持2個無符號的8位二進制數的運算,二進制數算術運算是按字節的方式進行的。2023/7/228單片機原理及其應用7.2算術運算程序的設計例1多字節二進制加法。二進制數加法算法2023/7/229單片機原理及其應用7.2算術運算程序的設計例2多字節二進制減法。減法算法2023/7/2210單片機原理及其應用7.2算術運算程序的設計例3多位十進制數加法。多位十進制加法算法2023/7/2211單片機原理及其應用7.2算術運算程序的設計例4多位十進制減法2位十進制數減法算法:X-Y=X+100-YX+9AH-Y 把十進制減法變換成二進制減法(求十進制減數的補碼)和十進制加法2步進行。多位十進制數減法也采用了同樣的算法。2023/7/2212單片機原理及其應用7.2算術運算程序的設計(1)2位十進制數減法子程序:入口條件:R0指出被減數所在單元的地址;R1指出減數所在單元的地址;出口條件:R0指出差所在單元的地址,進位在Cy中;
SH_SUB:MOVA,#9AH SUBBA,@R1 ADDA,@R0 DAA MOV@R0,A INCR0 INCR1 CPLC RET2023/7/2213單片機原理及其應用7.2算術運算程序的設計(2)6位十進制數加法程序:
MOVR0,#20H MOVR1,#30H MOVR5,#03H CLRCDOSUB: ACALLSH_SUB DJNZR5,DOSUB RET2023/7/2214單片機原理及其應用7.2算術運算程序的設計例5多字節數二進制乘法
2023/7/2215單片機原理及其應用7.2算術運算程序的設計例6多字節二進制除法
2個多字節無符號二進制數的除法是采用移位和減法運算實現的,實現過程與進行十進制數乘法形似,每次進行除法運算時,如果余數大于減數(夠減)則商1,否則,商0。 該算法要求被除數的高八位數據必須小于除數,否則,作為溢出處理,子程序把標志位OV的狀態置為1,從子程序返回。2023/7/2216單片機原理及其應用7.2算術運算程序的設計除法程序流程圖2023/7/2217單片機原理及其應用7.3循環程序的設計(一)循環結構的組成循環結構由4部分組成:初始化部分、循環處理部分、循環控制部分和循環結束部分。循環結構組成2023/7/2218單片機原理及其應用7.3循環程序的設計匯編語言程序設計中常見的典型循環結構(1)先處理后判斷的結構(2)先判斷后處理的結構2023/7/2219單片機原理及其應用7.3循環程序的設計(二)循環程序設計舉例例7設單片機系統采集的8個單字節數據存儲在單片機內部RAM的30H開始的連續單元中,求它們的均值。
一組數據平均值的公式為:其中,為第i個數據,N為數據的個數。要計算出平均值需要進行2種運算:求數據的總和、數據總和除以數據個數。 (1)求數據的總和算法如下:
2023/7/2220單片機原理及其應用7.3循環程序的設計多個數據求總和的流程圖2023/7/2221單片機原理及其應用7.3循環程序的設計(2)求均值采用右移除以2的算法實現。2023/7/2222單片機原理及其應用7.3循環程序的設計例8設有一個字符串以回車符(ASCII碼為0DH)為結束標志,并存放在內部RAM的40H單元開始的連續存儲單元中,編寫測試字符串長度的程序。2023/7/2223單片機原理及其應用7.3循環程序的設計測試字符串長度的程序流程框圖2023/7/2224單片機原理及其應用7.4查表程序的設計
查表程序是一種在單片機應用系統中常用的程序,例如,顯示輸出時,利用查表程序提取字型編碼,數值運算時,利用它可以避免進行復雜的程序運算或轉換運算,可以完成數據插補、修正、計算、轉換等功能。2023/7/2225單片機原理及其應用301050H311051H321052H331053H341054H351055H361056H371057H381058H391059H41105AH42105BH43105CH44105DH45105EH461056H0123456789ABCDEF地址ASCIIx存儲ASCII碼的單元地址與x的關系為:ASC_TAB+x。2023/7/2226單片機原理及其應用7.4查表程序的設計例10設字符0~9、A~F的ASCII碼已作為常數存儲在程序存儲器中,編寫子程序由給定x()查找其對應的ASCII碼。2023/7/2227單片機原理及其應用7.4查表程序的設計CHECHUP:MOVDPTR,#ASC_TAB;設置表的首地址
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,46H2023/7/2228單片機原理及其應用7.4查表程序的設計3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址數據單字節x單字節Y(任意長度)存儲單元地址與x的關系為:TAB+x00010203040506
FCFDFEFFx2023/7/2229單片機原理及其應用7.4查表程序的設計3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址數據單字節x雙字節Y
0
1
2361007H
3
7E
7F存儲單元地址與x的關系為:
第一個字節:TAB+2x
第一個字節:TAB+2x+1x
0
1
2
3
7E
7F2023/7/2230單片機原理及其應用7.4查表程序的設計單字節x雙字節Y(任意長度)3F1000H231001H881002H331003H541004H671005H361006HFF11FCHDB11FDHE711FEH6711FFH地址數據
0
1
2361007H
3
FE
FF存儲單元地址與x的關系為:
第一個字節:TAB+2x
第一個字節:TAB+2x+1
0
1
2
3
FE
FFx2023/7/2231單片機原理及其應用雙字節x雙字節Y(任意長度)3F1000H231001H881002H331003H541004H671005H361006HFFxxxxHDBXXXX+1HE7YYYYH67YYYY+1H地址數據
0000
0001
0002361007H
0003
RRRRHHHH7.4查表程序的設計存儲單元地址與x的關系為:
第一個字節:TAB+2x
第一個字節:TAB+2x+1
0000
0001
0002
0003
RRRRHHHHx2023/7/2232單片機原理及其應用3F1000H231001H881002H331003H541004H671005H361006HFF10FCHDB10FDHE710FEH6710FFH地址數據單字節x3字節Y361007H012361008H29存儲單元地址與x的關系為:
第一個字節:TAB+3x
第二個字節:TAB+3x+1第三個字節:TAB+3x+22023/7/2233單片機原理及其應用7.5檢索程序的設計數據檢索為關鍵字查找,通常有兩種方法:順序檢索和對分檢索。本節介紹前者,對分檢索請參閱相關資料。
數據檢索順序檢索對分檢索2023/7/2234單片機原理及其應用7.5檢索程序的設計例15設內部RAM有一單字節無符號數數據塊,存儲在以30H單元為首地址的區域中。長度為50個字節,試編程找出其中最小的數,并放在20H單元。2023/7/2235單片機原理及其應用7.5檢索程序的設計2023/7/2236單片機原理及其應用7.5檢索程序的設計例16從一個字符串找出一個‘A’的關鍵字,字符串的結束標志為‘EOF’。設字符串存放在20H單元開始的區域,字符以ASCII碼形式存儲,找到關鍵字標志位F0置1,否則清0。2023/7/2237單片機原理及其應用7.5檢索程序的設計程序流程圖2023/7/2238單片機原理及其應用7.6分支程序的設計
分支程序主要是根據判斷條件的成立與否來確定程序的走向。可組成簡單分支結構和多分支結構。2023/7/2239單片機原理及其應用7.6分支程序的設計(二)多分支選擇結構當程序的判別部分有兩個以上的出口流向時,稱為多分支選擇結構。多分支選擇結構2023/7/2240單片機原理及其應用7.6分支程序的設計例17x和y為2個帶符號單字節數據,以原碼方式存放,編制程序求它們的乘積。
2023/7/2241單片機原理及其應用7.6分支程序的設計例18設變量x的值存放在內部RAM的30H單元中,編程求解下列函數式,將求得的函數值存入40H單元。2023/7/2242單片機原理及其應用7.7碼制轉換程序的設計 在單片機應用系統中,計算機CPU計算、存儲是以二進制形式進行的;人機交換信息時,經常采用十進制;設備與設備之間交換信息時,有時采用ASCII碼;等等,碼制轉換程序是單片機應用系統常用的程序之一。2023/7/2243單片機原理及其應用7.7碼制轉換程序的設計(一)二進制數與十進制數(BCD碼)之間的轉換程序設計例19設工作寄存器R6和R7中存儲16位二進制數,R6中存放高八位,把該數轉換為BCD碼形式,并存結果于(R3),(R4),(R5).二進制數轉換為十進制數的方法為按權展開,設16位二進制數,則對應的十進制數為
轉換時,乘以2可以采用左移方法實現,從最高位開始,逐位加到BCD碼存儲單元的最低位,并進行十進制加法調整,然后左移,當最低位加入后,轉換完成。2023/7/2244單片機原理及其應用7.7碼制轉換程序的設計二進制數轉換BCD碼程序流程圖2023/7/2245單片機原理及其應用7.7碼制轉換程序的設計例20設工作寄存器R6和R7中存儲4位十進制數(BCD碼形式),把該數轉換為二進制數,并存結果于(R3),(R4). 設4位十進制數a3a2a1a0
a3a2a1a0=a3×103+a2×102+a1×101+a0 =(a3×101+a2)×102
+(a1×101+a0)
轉換算法:(1)子程序:
ai+1×101+ai
(2)高2位(千位百位)調用子程序后,轉換結果×100
(3)低2位(十位個位)調用子程序(4)(2)、(3)兩步的結果相加。2023/7/2246單片機原理及其應用7.7碼制轉換程序的設計(二)ASCII代碼與十六進制數之間的轉換程序設計例21把2個ASCII碼表示的十六進制數轉換成1個字節的十六進制數。30
31
32
33
34
35
36
37
38
39
41
42
43
44
45
460123456789ABCDEF
ASCII16進制字符2023/7/2247單片機原理及其應用ASCII代碼轉換十六進制數2023/7/2248單片機原理及其應用十六進制數轉換ASCII代碼2023/7/2249單片機原理及其應用7.7碼制轉換程序的設計(三)ASC1I碼與十進制數(BCD碼)之間的轉換程序設計ASC1I碼與BCD碼BCD碼與ASC1I碼2023/7/2250單片機原理及其應用7.8邏輯操作程序開關量的檢測和控
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 民辦安徽旅游職業學院《國內外食品安全案例辨析》2023-2024學年第一學期期末試卷
- 內江師范學院《智能控制終端技術》2023-2024學年第二學期期末試卷
- 山東省濰坊市寒亭達標名校2025屆八校聯考中考化學試題模擬試卷含解析
- 上海邦德職業技術學院《體育上》2023-2024學年第一學期期末試卷
- 山東省濰坊市2024-2025學年初三下學期二調考試語文試題含解析
- 四川省成都市金堂縣2025屆四年級數學第二學期期末達標檢測試題含解析
- 太原幼兒師范高等專科學校《城市設計方法論》2023-2024學年第二學期期末試卷
- 山東省威海市乳山一中2025屆高三寒假測試二語文試題含解析
- 二零二五版知識產權轉讓合作協議書
- 技術人員用工合同書范例
- 護理專業實踐報告5000字范文
- 2024年度昌平區養老院食堂餐飲服務承包合同
- 礦山生態修復施工方案及技術措施
- 化學計量學與化學分析技術考核試卷
- 2024關于深化產業工人隊伍建設改革的建議全文解讀課件
- 探究膜分離技術在水處理中的應用
- 洋流課件2024-2025學年高中地理人教版(2019)選擇性必修一
- 2024-2025學年中職數學拓展模塊一 (下冊)高教版(2021·十四五)教學設計合集
- 電梯維保工程施工組織設計方案
- 2024-2030年中國消防行業市場發展分析及發展趨勢與投資前景研究報告
- 外研版(2019) 必修第三冊 Unit 2 Making a Difference教案
評論
0/150
提交評論