




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院第四章第四章 匯編語言程序設計匯編語言程序設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院知識要點:知識要點: 偽指令及其使用方法;偽指令及其使用方法; 順序結構、分支結構、循環結構程序設計方法;順序結構、分支結構、循環結構程序設計方法; 子程序、查表程序設計方法;子程序、查表程序設計方法; 數據運算和處理的典型匯編語言實現方法。數據運算和處理的典型匯編語言實現方法。 本章學習目標本章學習目標: 能夠讀懂匯編程序,并能夠編寫較為復雜的匯編語言程序,能夠讀懂匯編程序,并能夠編寫較為復雜的匯編語言程序,
2、懂得匯編程序仿真軟件的使用,懂得調試匯編程序。懂得匯編程序仿真軟件的使用,懂得調試匯編程序。4. 匯編語言程序設計匯編語言程序設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4. 匯編語言程序設計匯編語言程序設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 程序設計語言的種類程序設計語言的種類 程序的編譯和匯編程序的編譯和匯編 程序設計的基本過程程序設計的基本過程 匯編語言的基本格式匯編語言的基本格式4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院1、 程序設計語言的種類程序設計語言的種類
3、高級語言高級語言:接近于人的常用語言形式,是一種面向過程:接近于人的常用語言形式,是一種面向過程 而而獨立于機器獨立于機器的通用語言的通用語言, , 如如C C 語言。語言。void main()char a = 21;char b = 48;char c;c = a + b;4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院匯編語言匯編語言:它是一種符號語言,是一種:它是一種符號語言,是一種面向機器面向機器的語言的語言。ORG 0000HMOV A,15HADD A,30HMOV R0,ASJMP $END4.1 程序設計概述程序設計概述單
4、片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院機器語言機器語言:是用二進制:是用二進制0,1 表示指令和數據的最原始的程序設計語言。表示指令和數據的最原始的程序設計語言。RAW DATA: E5 15 25 30 F8 80 FEDisassembled DATA:0000E515MOV A,15H 00022530ADD A,30H 0004F8MOV R0,A 000580FESJMP $ 4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院選擇程序設計語言類型的原則是什么?選擇程序設計語言類型的原則是什么?4.1 程
5、序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院2、 程序的編譯、匯編和鏈接程序的編譯、匯編和鏈接4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院3 3 、 程序設計的基本過程程序設計的基本過程 分析問題分析問題 確定算法確定算法 設計流程設計流程 分配資源分配資源 編寫源程序編寫源程序 調試、修改調試、修改4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與
6、電子信息學院4 、 匯編語言的基本格式匯編語言的基本格式例:例: 計算計算 21+48ORG 0200HSTART: MOV A, #21; A 21(1 Cycle)ADDA, #48 ; A A48(1 Cycle)MOV R1, A ; R1 A(1 Cycle)SJMP START ; 原地踏步原地踏步 (2Cycles)END標號:標號: 操作碼操作碼 第一操作數第一操作數, 第二操作數第二操作數 ;注釋注釋4.1 程序設計概述程序設計概述其中,其中,Cycle:機器周期:機器周期單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院標號的作用標號的作用: 為程序轉移
7、和子程序的調用提供轉移目的地址。為程序轉移和子程序的調用提供轉移目的地址。標號的命名方法:標號的命名方法:1)由字母或數字組成)由字母或數字組成, 標號必須以字母開頭。標號必須以字母開頭。 2)不可使用關鍵字不可使用關鍵字,如助記符、寄存器名。,如助記符、寄存器名。 3)建議使用具有描述性的符號)建議使用具有描述性的符號,能夠說明程序功能。能夠說明程序功能。標號:標號: 操作碼操作碼 第一操作數第一操作數, 第二操作數第二操作數 ;注釋注釋4.1 程序設計概述程序設計概述單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院單片機原理與應用單片機原理與應用 光學與電子信息學院光
8、學與電子信息學院 偽指令的作用偽指令的作用 偽指令詳解偽指令詳解 偽指令的應用偽指令的應用 4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.2.1 偽指令的作用和使用方法偽指令的作用和使用方法偽指令的作用偽指令的作用 寫在源文件中,用于控制匯編過程的命令。如設寫在源文件中,用于控制匯編過程的命令。如設置程序或數據存儲區的地址、定義符號、判斷程序是置程序或數據存儲區的地址、定義符號、判斷程序是否結束等。否結束等。 沒有對應的機器碼,它是不可執行的指令。沒有對應的機器碼,它是不可執行的指令。4.2 匯編語言偽指令匯編語言偽指令單片機原理
9、與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院偽指令種類:偽指令種類:ORG:指定語句行裝載的起始地址,可以在同一文件中出現多次。:指定語句行裝載的起始地址,可以在同一文件中出現多次。END: 指示語句行到此結束,一般出現在程序行結束以前。指示語句行到此結束,一般出現在程序行結束以前。EQU: 賦值指令,用于定義常數,或地址。賦值指令,用于定義常數,或地址。 等同于等同于C中的中的define語句。語句。DATA:定義字節地址。:定義字節地址。BIT: 定義位符號地址。定義位符號地址。DB: 定義字節數據。用于給代碼空間的存儲單元進行初始化、定義字節數據。用于給代碼空間的存儲單元
10、進行初始化、 賦值,或定義表格。賦值,或定義表格。DW: 定義字數據,即兩個字節。用于給代碼空間的存儲單元定義字數據,即兩個字節。用于給代碼空間的存儲單元 進行初始化、賦值,或定義表格。進行初始化、賦值,或定義表格。 DS: 預留若干個存儲單元,等同于預留若干個存儲單元,等同于C中的中的malloc函數。函數。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院1、ORG (Origin) 匯編起始地址命令匯編起始地址命令 指定語句行裝載的起始地址指定語句行裝載的起始地址。 命令格式:命令格式:ORG add16 例如,例如, ORG 20
11、00HSTART: MOV A, #40H 上例說明程序的起始地址是上例說明程序的起始地址是2000H,第一條指令就從,第一條指令就從2000H開始存放。開始存放。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 在一個源程序中,在一個源程序中,可以多次使用可以多次使用ORG指令指令,以規定不,以規定不同程序段的起始位置,但所規定的地址應是從小到大,同程序段的起始位置,但所規定的地址應是從小到大,不允許有重疊不允許有重疊,即不同的程序段之間不能有重疊。,即不同的程序段之間不能有重疊。 若若ORG指令不帶操作數指令不帶操作數,則匯編后目標
12、程序的,則匯編后目標程序的 起始地址為起始地址為0000H。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院2、END 匯編終止命令匯編終止命令 匯編語言源程序結束的偽指令,匯編語言源程序結束的偽指令,表示源程序結束。表示源程序結束。 在在END以后所寫的指令,匯編程序都不予以處理,以后所寫的指令,匯編程序都不予以處理,即不再翻譯。即不再翻譯。 一個源程序一個源程序只能有一個只能有一個END指令,放在程序的末尾。指令,放在程序的末尾。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學
13、院3、EQU(Equate) 賦值指令。賦值指令。 將操作數段中的地址或數據賦值給標號。將操作數段中的地址或數據賦值給標號。 賦值后的標號,其值在整個程序中不改變,可多次使用。賦值后的標號,其值在整個程序中不改變,可多次使用。 命令格式:命令格式: 標號標號 EQU 數或匯編符號數或匯編符號 例如:例如: COUNTEQU16H ; COUNT = 16H ADDREQU3000H ; ADDR = 3000H MOV A,# COUNT ; A = 16H標號與標號與EQU之間不能用之間不能用“:”來作分隔符來作分隔符。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光
14、學與電子信息學院光學與電子信息學院4、DATA 數據地址賦值指令數據地址賦值指令 將將數據地址數據地址或或代碼地址代碼地址賦予所規定的標號。賦予所規定的標號。 命令格式為命令格式為: 字符名稱字符名稱 DATA 表達式表達式例如,例如,MN DATA 10H匯編后,匯編后,MN的值為的值為10H。 DATA指令在程序中常用來定義存放數據的單元字節地址。指令在程序中常用來定義存放數據的單元字節地址。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院5、BIT 位地址符號命令位地址符號命令 將位地址賦予所規定的字符名稱,常用于定義位符號地址。
15、將位地址賦予所規定的字符名稱,常用于定義位符號地址。 命令格式為:命令格式為: 字符名稱字符名稱 BIT 位地址位地址 例如,例如, AA BIT P1.0 BB BIT P2.04.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院6、DB(Define Byte)定義字節命令)定義字節命令 定義字節數據。它的作用是從指定的地址單元開始,定義字節數據。它的作用是從指定的地址單元開始,定義數據或定義數據或ASCII碼字符,常用于定義數據常數表。碼字符,常用于定義數據常數表。 命令格式:命令格式: 標號標號: DB 字節常數表字節常數表例如:例
16、如: ORG 2000HTAB:DB 14H,26,A DB 0AFH,BC匯編結果:匯編結果:(2000H)14H (2001H)1AH(2002H)41H (2003H)= AFH(2004H)42H (2005H)43H4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院7、DW(Define Word)定義字命令)定義字命令 定義定義16位數據。從指定的地址單元開始,定義若干個字常數,位數據。從指定的地址單元開始,定義若干個字常數,常用于定義常用于定義地址表地址表。 命令格式為:命令格式為:標號標號: DW 字常數表字常數表 例如,
17、例如, ORG 2000HTAB: DW 7423H,00ABH,20匯編結果:匯編結果: (2000H)74H (2001H)23H(2002H)00H (2003H) = ABH(2004H)00H (2005H)14H提示:提示: 一個字占兩個存儲單元,其中高字節數存入低位地址,一個字占兩個存儲單元,其中高字節數存入低位地址,低字節數存入高位地址,即順序存放。低字節數存入高位地址,即順序存放。4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院8、DS(Define Store)定義存儲區)定義存儲區 定義存儲區。從指定的地址開始,保
18、留一定數量的內存單定義存儲區。從指定的地址開始,保留一定數量的內存單元,以備程序使用,其區域的大小由指令的操作數確定。元,以備程序使用,其區域的大小由指令的操作數確定。 命令格式:命令格式: 標號:標號: DS 數值數值 例如:例如: ORG 1000HDS 5DB 23H匯編結果:從地址匯編結果:從地址1000H開始,保留開始,保留5個字節個字節的內存單元,而的內存單元,而(1005H)=23H4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院匯編語言偽指令應用實例匯編語言偽指令應用實例4.2 匯編語言偽指令匯編語言偽指令單片機原理與應
19、用單片機原理與應用 光學與電子信息學院光學與電子信息學院ORG的的 應用:應用:4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院EQU、DATA的應用:的應用:4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院BIT的應用:的應用:4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院DB、DW的的 應用:應用:4.2 匯編語言偽指令匯編語言偽指令單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 使用使用DB
20、、DW定義字符時可以用單引號,也可以定義字符時可以用單引號,也可以用雙引號,其作用等同。用雙引號,其作用等同。4.2 匯編語言偽指令匯編語言偽指令程序裝載之后,程序空間顯示結果:程序裝載之后,程序空間顯示結果:單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計程序的基本結構程序的基本結構順序順序分支分支循環循環子程序子程序單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3.1 順序結構順序結構例:編寫程序實現兩個例:編寫程序實現
21、兩個 16bits 無符號數的加法。無符號數的加法。 (徐徐-例例 4.1) X+Y = 0 x5678 + 0 x9876 1、基本原理分析、基本原理分析 1)分兩次完成,每次)分兩次完成,每次完成完成 8位加法。位加法。2)采用間接尋址方式,)采用間接尋址方式,讀取加數和被加數,讀取加數和被加數,以及保存結果。以及保存結果。ADDC ADDC ADDADD4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 2、資源分配、資源分配 33H、32H:存放被加數,以及結果存放被加數,以及結果 37H、36H:存放加數存放加數
22、 22H.0 :存放和的最高位存放和的最高位 R0、R1: 數據指針數據指針 4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 3、流程圖、流程圖4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院 4、 源程序源程序4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 5、程序調試與測試、程序調試與測試 調試方法:調試方法:單步、
23、斷點調試方法單步、斷點調試方法 程序測試:程序測試:考慮有進位和沒有進位兩種情況。考慮有進位和沒有進位兩種情況。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院思考:思考: 1. 保存和的最高位還有哪些方法?保存和的最高位還有哪些方法? 2. 如何實現多字節數的減法?如何實現多字節數的減法? 3. 如何實現多字節如何實現多字節 BCD 碼數的加法,碼數的加法, 以及減法?以及減法? 4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院兩個兩個16位數加法(位數加法(C51 實現參考)實現參考)4.3 匯
24、編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院#include unsigned int data a = 0; /定義被加數變量定義被加數變量 unsigned int data b = 0; /定義加數變量定義加數變量 bit c; /定義進位位變量定義進位位變量 void main(void) a = 0 x5678; /賦值被加數賦值被加數 b = 0 xF876; /賦值加數賦值加數 a = a + b; c = CY; /保存進位位保存進位位 4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機
25、原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 在源文件中如果需要對芯片的寄存器進行操作,就必須在源文件中如果需要對芯片的寄存器進行操作,就必須 通過通過include 引述引述 頭文件頭文件reg52.h! 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計unsigned int data a = 0; /定義被加數變量定義被加數變量 unsigned int data b = 0; /定義加數變量定義加數變量 bit c; /定義位變量定義位變量 a 分配到分配到
26、 片上片上08H, 09H 單元單元b 分配到分配到 片上片上0AH, 0BH 單元單元c 分配到分配到 20H.0Compiling.單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計a 分配到分配到 片外數據片外數據0000H, 0001H 單元單元b 分配到分配到 片外數據片外數據0002H, 0003H 單元單元 unsigned int xdata a = 0; /定義被加數變量定義被加數變量 unsigned int xdata b = 0; /定義加數變量定義加數變量 單片機原理與應用單片機原理與應用 光學與
27、電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計存儲類型存儲類型 描述描述code程序存儲區程序存儲區(64 KBytes),由操作碼,由操作碼“MOVC A+DPTR”訪問訪問 data直接尋址內部數據存儲區直接尋址內部數據存儲區idata間接尋址內部數據存儲區,可訪問全部內部地址空間間接尋址內部數據存儲區,可訪問全部內部地址空間(256 Bytes)bdata可位尋址內部數據存儲區,支持位和字節混合訪問。可位尋址內部數據存儲區,支持位和字節混合訪問。xdata外部數據存儲區外部數據存儲區(64 KBytes),由操作碼,由操作碼“MOVX DPTR”訪問訪
28、問 pdata分頁分頁(256 Bytes)外部數據存儲區,由操作碼外部數據存儲區,由操作碼“MOVX Ri訪問訪問 C51變量的存儲類型變量的存儲類型單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計存儲器模式存儲器模式描述描述SMALL參數及局部變量放入可直接尋址的內部存儲器參數及局部變量放入可直接尋址的內部存儲器(最大最大128 B,默認存儲器類型為,默認存儲器類型為 data )COMPAT參數及局部變量放入分頁外部存儲區參數及局部變量放入分頁外部存儲區(最大最大256 B,默認存儲器類型為,默認存儲器類型為 pd
29、ata ) LARGE參數及局部變量直接放入外部數據存儲器參數及局部變量直接放入外部數據存儲器(最大最大64 KB,默認存儲器類型為,默認存儲器類型為 xdata ) C51的存儲器模式的存儲器模式單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3.2 分支結構程序設計分支結構程序設計 分支結構形式與轉移指令分支結構形式與轉移指令 典型分支結構設計典型分支結構設計 二分支結構二分支結構 三分支結構三分支結構 散轉結構散轉結構4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3.2 分支結構程序
30、設計分支結構程序設計分支結構形式分支結構形式if thenelse 4.3 匯編語言程序結構與設計匯編語言程序結構與設計switch ( )單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院轉移指令轉移指令1. 無條件轉移無條件轉移 SJMP :短跳轉,轉移范圍短跳轉,轉移范圍128 B 127B AJMP :絕對跳轉,轉移范圍絕對跳轉,轉移范圍2KB LJMP :長跳轉長跳轉 ,轉移范圍,轉移范圍64KB JMP : 散轉指令,實現多分支散轉指令,實現多分支2. 條件轉移條件轉移JZ /JNZ ;測試;測試AJC/JNC;測試;測試Cy JB/JBC/JNB ;測試某一比
31、特位;測試某一比特位CJNE ;比較兩數的大小;可用于形成三分支結構;比較兩數的大小;可用于形成三分支結構 DJNZ ;可用于循環結構;可用于循環結構4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院1、二分支結構設計、二分支結構設計例:求取例:求取|x|(x 為為8bits 符號數)符號數)解:基本原理解:基本原理 當當x 255時,時, 需要執行需要執行 INC DPHNEXT:JMP A+DPTR ;散轉;散轉ENTRY: LJMP R_KEY0; 轉移指令表轉移指令表: 3 字節字節LJMP R_KEY1LJMP
32、R_KEY2 LJMP R_KEY99LJMP指令與散轉結構指令與散轉結構 99 3 = 297 = 1 29 H單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計;MAJMP.asmORG 0400HSTART: MOV DPTR, #ENTRY ;賦指令表入口地址;賦指令表入口地址MOV A, R3;計算偏移量;計算偏移量ADD A, R3JMP A+DPTR ;散轉;散轉ENTRY:AJMP R_KEY0; 轉移指令表轉移指令表: 2 字節字節AJMP R_KEY1AJMP R_KEY2R_KEY0: CLR P1.
33、0SJMP STARTR_KEY1: SETB P1.0SJMP STARTR_KEY2: MOV P1, #0AAHSJMP STARTENDAJMP指令與散轉結構指令與散轉結構 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計4.3.3 循環結構循環結構 基本知識基本知識 循環結構三要素循環結構三要素 典型程序設計典型程序設計 延時程序延時程序 數據塊求和、尋找最大數、均值濾波數據塊求和、尋找最大數、均值濾波 4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學
34、與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 1、基本知識、基本知識應用背景:常常某一段代碼需要執行多次。應用背景:常常某一段代碼需要執行多次。常見常見C 語言形式語言形式1)for (i=0; i(R1)轉轉NEXT MOV A, R1 ;A(R1), A (R1) SJMP NEXT1NEXT: ADD A,R1 ;恢復;恢復ANEXT1: INC R1 DJNZ R2, LOOP MOV MAX, A ;存結果;存結果LP: SJMP LP單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計思考:
35、思考: 1. 若尋找最小數,應如何修改程序若尋找最小數,應如何修改程序? 2. 比較兩數的大小還可使用什么指令?有何特點?比較兩數的大小還可使用什么指令?有何特點? 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計比較轉移指令比較轉移指令CJNE A, direct,relCJNE A,#data,relCJNE Rn,#data,relCJNE Ri,#data,relCJNE指令不改變第一、第二操作數的內容。指令不改變第一、第二操作數的內容。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3
36、 匯編語言程序結構與設計匯編語言程序結構與設計例:例: 均值濾波均值濾波 (胡(胡 例例 4.2.12) 求算術平均值求算術平均值 在數據采集系統中,常采用算術平均濾波的方法對采樣值進行平在數據采集系統中,常采用算術平均濾波的方法對采樣值進行平滑加工,即在一個采樣周期中把滑加工,即在一個采樣周期中把N N次采樣的值相加,然后除以采樣次次采樣的值相加,然后除以采樣次數數N N,便得到該采樣周期的值,設從,便得到該采樣周期的值,設從P1P1口讀入采樣數據,在一個采樣口讀入采樣數據,在一個采樣周期內連續采樣周期內連續采樣8 8次,要求計算機它的平均值次,要求計算機它的平均值。 應用領域:數字濾波應用
37、領域:數字濾波 基本原理:基本原理: y(X1+X2+X3+X8)8 利用利用RRC 指令實現雙字節除指令實現雙字節除8單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 資源分配:資源分配:R0R0、R1R1: 累加和,前者存放高位累加和,前者存放高位R2R2: 計數器計數器單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計1000 10010100 10001000 100100100 01001R0R1CyCy0100 10001010 0100
38、0CyRRC RRC 如何實現雙字節無符號數右移一次?如何實現雙字節無符號數右移一次?單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計如何保證從如何保證從P1口正確輸入采樣值?口正確輸入采樣值? 編程中不要忘記寫編程中不要忘記寫“讀預備指令讀預備指令” MOV P1, # 0FFH ; 讀預備指令讀預備指令 ;保證;保證P1 能夠正確輸入外部信息能夠正確輸入外部信息 MOV A, P1 ; 讀入電壓值讀入電壓值MOV A, P1;讀引腳,;讀引腳, 執行過執行過程中會發出程中會發出read pin 信號信號 。單片機原理
39、與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計均值濾波均值濾波源程序源程序單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計4.3.4 查表程序設計查表程序設計 表格的用途表格的用途 表格的定義方法表格的定義方法 表格的結構和表項地址求取方法表格的結構和表項地址求取方法 查表指令查表指令 查表程序典型應用查表程序典型應用 應用應用1:已知十六進制數,求取其:已知十六進制數,求取其ASCII 應用應用2:利用散轉地址表,實現多分支:利用散轉地址表,實現多分支
40、應用應用3:利用順序查表法,尋找關鍵字符:利用順序查表法,尋找關鍵字符單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計4.3.4 查表程序設計查表程序設計表格表格是計算機的一種基本數據結構。是計算機的一種基本數據結構。查表法查表法是一種非數值計算方法,不需復雜計算。是一種非數值計算方法,不需復雜計算。主要優點主要優點:可以大大簡化程序,提高程序執行速度。:可以大大簡化程序,提高程序執行速度。主要缺點主要缺點:如果表格過大,會占用較多的存儲單元。:如果表格過大,會占用較多的存儲單元。常用查表方法常用查表方法:計算查表法、順
41、序查表法、對分查表法。:計算查表法、順序查表法、對分查表法。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計1、表格的用途、表格的用途例:求例:求sin(x)=?sin(x)=x-x3/3!+x5/5!-+(-1)nx2n+1/(2n+1)!+求函數值、傳感器非線性校正、碼制轉換、求函數值、傳感器非線性校正、碼制轉換、LED 字模轉換字模轉換2、表格的定義方法、表格的定義方法 (zf)表格使用表格使用DB、DW 偽指令定義,存放于代碼段中。偽指令定義,存放于代碼段中。單片機原理與應用單片機原理與應用 光學與電子信息學院光
42、學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計3、表格的結構和表項地址求取方法、表格的結構和表項地址求取方法表項首地址表首地址表項序號表項首地址表首地址表項序號表項大小表項大小表項序號:表項序號:0,1,2,3表項大小:表項大小:8單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計4、查表指令查表指令MOVC A, A + DPTR ;對應于;對應于DPTR 查表方式查表方式MOVC A, A + PC ;對應于;對應于PC 查表方式查表方式5、查表程序典型應用、查表程序典型應用 應用應用1:已知十六
43、進制數,求取其:已知十六進制數,求取其ASCII 應用應用2:利用散轉地址表,實現多分支:利用散轉地址表,實現多分支 應用應用3:利用順序查表法,尋找關鍵字符:利用順序查表法,尋找關鍵字符單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計例:利用查表法求取字符例:利用查表法求取字符0F 的的ASCII 碼碼 (lkup1.asm)基本原理:基本原理: 利用利用 DB 語句定義字符的語句定義字符的 ASCII 碼表;碼表; 利用利用 MOVC 指令讀取程序空間中的表格內容。指令讀取程序空間中的表格內容。 采用采用 DPTR
44、方式查表時,方式查表時,DPTR的初始值為表格首地址。的初始值為表格首地址。 采用采用 PC 方式查表時,需要計算方式查表時,需要計算PC與表格首地址間的偏移量。與表格首地址間的偏移量。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計尋找尋找ASCII(分別分別用兩條用兩條指令實指令實現)現)單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計指令長度估算方法:指令長度估算方法: 指令基本長度為指令基本長度為1 字節;字節; 逢立即數(逢立即數(8bi
45、ts)長度加)長度加1; 逢立即數(逢立即數(16bits)長度加)長度加2; 逢直接尋址方式,指令長度加逢直接尋址方式,指令長度加1。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計兩種查表方式特點比較兩種查表方式特點比較單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計例例 :利用散轉地址表實現多分支:利用散轉地址表實現多分支 基本原理:基本原理: 利用利用 DW 偽指令將程序入口地址定義在程序空間中;偽指令將程序入口地址定義在程序空間中; 利用
46、利用 MOVC 分兩次讀取分兩次讀取16位散轉地址;位散轉地址; 利用利用 JMP 指令實現散轉。指令實現散轉。 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計例例 :利用散轉地址表實現多分支:利用散轉地址表實現多分支解解 :利用:利用DW偽指令將程序入口地址定義在程序空間中。偽指令將程序入口地址定義在程序空間中。散轉地址散轉地址散轉地址存放散轉地址存放的單元地址的單元地址單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計源程序源程序:利用散利用散
47、轉地址轉地址表實現表實現多分支多分支MDWJMP.asm 例:根據R3的值,控制轉向3個分支程序。R3=0, 轉 R_KEY0;R3=1, 轉R_KEY1 R3=2, 轉R_KEY2單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計例:利用順序查表,在無序表中查找關鍵字。例:利用順序查表,在無序表中查找關鍵字。任務要求:任務要求: 有一個長度為有一個長度為100字節的表格,其中數據無序存放,在其中找字節的表格,其中數據無序存放,在其中找出出KEY,并記錄其在表中的地址號。若表中無此關鍵字,則返回,并記錄其在表中的地址號。若
48、表中無此關鍵字,則返回0。基本原理:順序讀取表中內容,將其與基本原理:順序讀取表中內容,將其與KEY比較,判斷是否相同。比較,判斷是否相同。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計采用采用DPTR查表方式,其步驟:查表方式,其步驟:1)表的起始地址送入)表的起始地址送入DPTR;2)表格的長度放在某一個寄存器中)表格的長度放在某一個寄存器中;3)要查找的關鍵字放在某一內存單元中)要查找的關鍵字放在某一內存單元中;4)用)用MOVC A, A+DPTR指令取數指令取數;5)用)用CJNE A,direct,rel
49、指令判斷是否是要找的關指令判斷是否是要找的關鍵字。鍵字。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 流程圖流程圖單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計無序表無序表中搜索中搜索關鍵字關鍵字單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計調試結果:調試結果:當(當(KEY)= 08H, 即希望查找數據即希望查找數據 8程序運行后有:程序運行后有:單片機原理與應用單
50、片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計思考:1)如果不知道表的長度,但知道表格的結束標志是)如果不知道表的長度,但知道表格的結束標志是 $, 應該如何修改程序?應該如何修改程序?2)表格能放在上電入口)表格能放在上電入口0000H的地方嗎?的地方嗎? 為什么?為什么? 會有什么嚴重后果?會有什么嚴重后果? ORG 0000H DB ! , 3, 4, 8, 10, 4,. 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計2)表格能放在上電入口)表格能放在上
51、電入口0000H的地方嗎?的地方嗎? ORG 0000HDB ! , 3, 4, 8, 10, 4,.不能!不能!程序匯編和裝載以后,程序空間結果如下:程序匯編和裝載以后,程序空間結果如下:反匯編結果:反匯編結果: 表格數據被解表格數據被解析為指令,導致結析為指令,導致結果不可預見。果不可預見。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計4.3.5 子程序設計子程序設計 子程序的作用子程序的作用 調用和返回指令調用和返回指令 子程序的定義和調用方法子程序的定義和調用方法 參數傳遞方法參數傳遞方法 典型應用典型應用 :
52、多字節加法:多字節加法 現場與現場保護方法現場與現場保護方法 堆棧沖突及其規避堆棧沖突及其規避 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計子程序的作用子程序的作用:提高程序的模塊性,壓縮代碼長度。:提高程序的模塊性,壓縮代碼長度。4.3.5 子程序設計子程序設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計子程序設計要素:子程序設計要素:1)子程序需命名。子程序的第一條指令應加標號,)子程序需命名。子程序的第一條指令應加標號, 以便調用。以
53、便調用。2)要正確傳送參數。)要正確傳送參數。3)注意保護和恢復現場。)注意保護和恢復現場。4)子程序的末尾必須是)子程序的末尾必須是RET指令。指令。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計1、調用和返回指令、調用和返回指令調用指令:調用指令:LCALL,ACALL返回指令:返回指令:RET ,RETI(用于中斷返回)(用于中斷返回)ACALL : 絕對調用絕對調用LCALL: 長調用長調用 RET: 子程序返回子程序返回單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序
54、結構與設計匯編語言程序結構與設計LCALL addr16 ;PCPC+ 3, ;SPSP+1,(SP)PC70 ;SPSP+1,(SP) PC158 ;PCaddr16單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 RET ;PC158(SP),SPSP-1;PC70(SP),SPSP-1 子程序返回指令。子程序返回指令。 功能:將堆棧內的返回地址送入功能:將堆棧內的返回地址送入PC, 使使CPU返回到原斷點地址處,繼續執行原程序。返回到原斷點地址處,繼續執行原程序。 單片機原理與應用單片機原理與應用 光學與電子信息學
55、院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計2、子程定義和調用方法、子程定義和調用方法ORG 0030HSTART: MOV SP, # 40HAGAIN: SETB P1.0LCALL DELAYCLR P1.0LCALL DELAYSJMP AGAIN;-DELAY: MOV R6, # 40DLOOP: NOPDJNZ R6, DLOOPRETEND單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結
56、構與設計匯編語言程序結構與設計LCALL 指令執行后:指令執行后: 返回地址返回地址 0038H 存入堆棧,存入堆棧,SP指針向上移動兩個單元指針向上移動兩個單元380041H42Hxx40HSP單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計準備執行準備執行LCALL指令指令.SP 0 x40SP - max 0 x40單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計PC轉移到子程序轉移到子程序DELAY的入口的入口SP 0 x42SP - ma
57、x 0 x42單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計PC返回主程序返回主程序SP 0 x40SP - max 0 x42單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計片上片上RAM空間空間 信息信息 0 x40: 00 00 00 00 00 片上片上RAM空間空間 信息信息 0 x40: 00 38 00 00 00 單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與
58、設計3、參數傳遞方法、參數傳遞方法入口參數:入口參數: 子程序執行中所必須的子程序執行中所必須的寄存器值寄存器值或或存儲單元內容存儲單元內容(或地址)(或地址) 。出口參數:出口參數: 子程序執行完畢后,結果存放的子程序執行完畢后,結果存放的寄存器或存儲單寄存器或存儲單元元(或地址)。(或地址)。單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計MOV A, #4LCALL SQRSQR: MOV B, AMUL ABRET 入口參數入口參數: A 出口參數出口參數: A, B單片機原理與應用單片機原理與應用 光學與電子信
59、息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計入口參數、出口參數傳遞方法入口參數、出口參數傳遞方法:1. 利用利用A2. 利用寄存器,或存儲單元利用寄存器,或存儲單元3. 利用堆棧利用堆棧MOV R6,40HLCALL DELAY;-DELAY: NOPDLOOP: NOP DJNZ R6, DLOOP RET單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計例:兩個例:兩個3字節數加法字節數加法 入口參數:入口參數:R0,R1 出口參數:出口參數:R020H21H22H30H31H32H20
60、H21H22H+23HR0R1單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計多字節加法多字節加法單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計思考:程序執行后,思考:程序執行后,R0指向哪個單元?指向哪個單元?20H21H22H30H31H32H20H21H22H+23HR0R1R0單片機原理與應用單片機原理與應用 光學與電子信息學院光學與電子信息學院4.3 匯編語言程序結構與設計匯編語言程序結構與設計 4、現場保護、現場保護何謂何謂“現場現場
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交流分享的軟件設計師試題及答案平臺
- 項目管理的有效工具與技術試題及答案
- 網絡故障處理的團隊協作方法試題及答案
- 風險管理在供應鏈優化中的應用研究試題及答案
- 2025年經濟周期對公司戰略的影響試題及答案
- 高考數學重要題型試題及答案
- 2025年軟考網絡管理員成功經驗試題及答案
- 河南省考試題及答案
- 經濟作物試題及答案
- 掌握更新內容軟件設計師考試試題及答案
- 校服征訂家長協議書
- 2025年中考語文專題復習《文言文斷句》課件
- 信貸業務法律風險防范
- 幼兒園藝術(美術)教育活動設計與實施 課件 模塊4 設計與實施幼兒園美術欣賞活動
- 冷鏈物流司機崗位職責與工作流程介紹
- 2型糖尿病中西醫結合診療指南(2025年)解讀課件
- 浙江大學專職輔導員招聘真題2024
- 2022萬能試驗機驗收規范
- 西部計劃考試考題及答案
- 《低鉀血癥病人護理》課件
- 消防水池防水合同
評論
0/150
提交評論