單片機原理課件:第四章 匯編語言程序設計_第1頁
單片機原理課件:第四章 匯編語言程序設計_第2頁
單片機原理課件:第四章 匯編語言程序設計_第3頁
單片機原理課件:第四章 匯編語言程序設計_第4頁
單片機原理課件:第四章 匯編語言程序設計_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第四章 匯編語言程序設計匯編語言源程序編輯與匯編匯編語言程序設計方法 4.24.1程序設計過程程序技巧匯編語言規范匯編語言程序編輯和匯編常用的流程圖符號4.1 匯編語言源程序編輯與匯編任務分析(硬件、軟件系統分析)確定算法和工作步驟程序設計過程程序總體設計和流程圖繪制分配內存及端口,確定程序與數據區存放地址編制源程序仿真、調試程序固化程序程序功能模塊化(按功能分:顯示、打印、輸入、發送等)盡量采用循環結構和子程序(節省內存)12多采用累加器來傳遞參數注意現場保護,即壓入堆棧34編程技巧匯編語言的規范匯編語言源程序由以下兩種指令構成匯編語句(指令語句)偽指令(指示性語句)匯編語句的格式: 標號:

2、 操作碼操作數;注釋3. 數據表示形式: 二進制(B)、十六進制(H)、十進制(D或省略)、ASCII碼(以單引號標識) 匯編語言程序編輯和匯編1. 編輯(源程序,以.ASM擴展名存盤);2. 匯編(手工或機器匯編); 如: MOV A,#88H;機器碼74H,88H 又如:地址 目標碼 源程序 ORG 1000H 1000H 747F MOV A,#7FH 1002H 7944 MOV R1,#44H END常用的流程圖符號順序程序設計分支程序設計循環程序設計查表程序設計子程序設計4.2 匯編語言程序設計方法順序程序設計例:求多項式解:設a存放在R2中,b存放在R3中,結果存放在R6和R7中

3、。程序如下: MOV A, R2 MOV B, A MUL AB CLR C SUBB A, R3 ;帶進位減 MOV R7, A ;保存低8位 MOV A, B SUBB A,#00H ;高八位減進位 MOV R6,A END分支程序設計AJMP、LJMP、SJMP 、JMP JZ、JNZ、CJNE、DJNZ 根據不同的條件轉向不同的處理程序控制轉移指令 位轉移指令 JC、JNC、JB、JNB、JBC例:累加器A內有一個16進制ASCII字符,要求轉換成一個16進制數存放于A。ASCII字符轉換成16進制數規則:數字09 :只需減30H字母AF :減30H,再減7START0C(A)-30H

4、 A(A) 50ms,因為沒有考慮到除DJNZ指令之外的其它指令的執行時間。DEL: MOV R7,#200 ;1 sDEL1:MOV R6,#123 ;1 s NOP ;1 sDEL2:DJNZ R6,DEL2 ;2s,計(2123)s DJNZ R7,DEL1 ;2s, RET 共計 (21232 2)200+1 s,即50.001ms MOV R0,#data MOV DPTR,#bufferLOOP0:MOV A,R0 CJNE A,#24H,LOOP1 ;判斷是否為 $ 字符 SJMP LOOP2 ;是 $ 字符,轉結束LOOP1:MOVX DPTR,A ;非 $ 字符,執行傳送 I

5、NC R0 INC DPTR SJMP LOOP0 ;傳送下一數據 LOOP2: 二、先判斷后執行例:將內部RAM中起始地址為data的數據串傳送到外部RAM中起始地址為buffer的存儲區域內,直到發現$ 字符停止傳送。由于循環次數事先不知道,但循環條件可以測試到。所以,采用先判斷后執行的結構比較適宜。程序段如下:例:200名學生參加考試,成績放在8031的外部RAM的一個連續存儲單元,95100分頒發A級證書,9094分頒發B級證書,編一程序,統計獲A、B級證書的人數。將結果存入內部RAM的兩個單元。 ORG 0030H EG DATA 1000H GA DATA 20H GB DATA

6、21H MOV GA,#00 MOV GB,#00 MOV DPTR,#EG MOV R2,#200LOOP: MOVX A,DPTR CJNE A, #95, LOOP1 LOOP1: JNC NEXT1 CJNE A,#90,LOOP2LOOP2: JC NEXT INC GB SJMP NEXTNEXT1: INC GANEXT: INC DPTR DJNZ R2,LOOP SJMP $ END查表程序設計表格是事先存放在ROM中的,一般為一串有序的常數,例如平方表、字型碼表等。表格可通過偽指令DB來確定。通過查表指令MOVC A,A+DPTR和MOVC A,A+PC來實現。 用DB、D

7、W建立表格首地址送DPTR關鍵字送A查表:MOVC A,A+DPTR用查表法計算平方(一) ORG0000H MOVDPTR,#TABLE ;表首地址送DPTR MOV A,#05 ;被查數字05A MOVCA,A+DPTR;查表求平方 SJMP$ TABLE:DB 0,1,4,9,16,25,36,49,64,81 END 用查表法計算平方(一) 用查表法計算平方(二) ORG0000H0000H MOVA, #05 ;05 A0002H ADDA, #02 ;修正累加器A0004H MOVCA, A+PC;查表求平方0005H SJMP$ 0007H:DB0,1,4,9,16,25,36,

8、49,64,81 END使用傳送指令將關鍵字送入ACCADD A, #DATA指令對A進行修改: PC+DATA=表格首地址12MOVC A,A+PC 完成查表.3使用 MOVC A,A+PC須注意:DATA=表格首地址-指令地址-1例 : MOV A, XADDA,#01HMOVCA,A+PCRETDB00,01,04,09,10H,19H,24H,31H,30HDATA=表格首地址-指令地址-1即:MOVC與DB之間的字節數例 設一巡回報警系統,對16路輸入進行控制,現根據測量路數,找出每路的最大允許值(若大于允許值就報警)。(查找雙字節表格)TB3:MOV A, R2 ADD A, R2

9、MOV R3, A ADD A, #6 MOVCA, A+PC XCH A, R3 ADD A, #3 MOVC A, A+PC MOV R4, A RETTAB3:DW1520,3721,4256 ;表格最大長度256 DW 子程序設計注意事項:1. 給子程序賦一個名字。實際為入口地址代號。2. 子程序調用: ACALL、 LCALL 子程序返回: RET 要能正確傳遞參數: 入口條件:子程序中要處理的數據如何給予。 出口條件:子程序處理結果如何存放。 (寄存器、存儲器、堆棧方式)3. 保護與恢復現場: 保護現場:壓棧指令PUSH 恢復現場:彈出指令POP4. 子程序可以嵌套主程序與子程序的

10、關系子程序的嵌套子程序的調用與返回例 :利用查表法求平方和 ,設a、b、c分別存于內部RAM的DA、DB、DC三個單元中。 MOV A,DA;取a ACALLSQR;調用查表子程序 MOV R1,A;a的平方暫存R1中 MOVA,DB;取b ACALLSQR;調用查表子程序 ADDA,R1 ;求出平方和暫存于A中 MOVDC,A;結果存于DC 中 SJMP$SQR:MOVDPTR,#TAB;子程序 MOVCA,A+DPTR RETTAB: DB0,1,4,9,16,25,36,49,64,81 END 利用累加器或寄存器傳遞參數參數傳遞方法用累加器或工作寄存器來傳遞參數: A、R0R7優點:最

11、簡單,運算速度快。缺點:累加器和工作寄存器數量有限,不能傳遞 太多參數。用指針寄存器來傳遞參數:參數存放在內存用堆棧來傳遞參數程序段參數傳遞(適于傳遞大量常數參數)程序段參數傳遞采用程序段參數傳遞的方法,編寫字符串發送的子程序: SOUT:POPDPH POP DPL SOT1: CLR A MOVCA,A+DPTR INCDPTR JZ SEND JNB TI ,$ CLR TI MOV SBUF,A SJMP SOT1 SEND:JMP A+DPTR 串口發送中斷標志位以發送MCS-51 CONTROLLER 為例,說明該子程序的調用方法:ACALLSOUT DBMCS-51 CONTROLLER DB0AH,0DH,0換行鍵回車鍵以上子程序特點:不以一般返回指令RET結尾,而是采用散轉指令返回到參數表后第一條指令可適用ACALL或LCALL,因為這兩種調用指令把下一條指令或數據字節地址壓入堆棧需傳遞的參數可按最方便的次序排列子程序只使用A和DPTR習題1: 片內RAM中30H和31H中存有兩個無符號數,將兩個數的最小者存放入40H中。解:1)需要用到的指令:CJNE、JC 2) 畫流程圖 3)編程 ORG1000H MOVA,30H CJN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論