MCS-51單片機匯編語言的偽指令_第1頁
MCS-51單片機匯編語言的偽指令_第2頁
MCS-51單片機匯編語言的偽指令_第3頁
MCS-51單片機匯編語言的偽指令_第4頁
MCS-51單片機匯編語言的偽指令_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MCS-51單片機匯編語言的偽指令MCS-51單片機匯編語言的偽指令1、起始地址偽指令 ORG ORG addr16 用于規(guī)定目標程序段或數(shù)據(jù)塊的起始地址, 設置在程序開始處。 例: Org 0000h ljmp main org 0100h main: .2、匯編結(jié)束偽指令 END 告訴匯編程序,對源程序的匯編到此結(jié)束。 一個程序中只出現(xiàn)一 次,在程序的最末尾。 例: end 3、賦值偽指令 EQU 告訴匯編程序,將匯編語句操作數(shù)的值賦予本語句的標號。 格式: 標號名稱 EQU 數(shù)值或匯編符號 “標號名稱”在源程序中可以作數(shù)值使用,也可以作數(shù)據(jù)地址、位地址使用。 先定義后使用,放在程序開頭。

2、例: led_lamp equ p1.0 counter equ 100 display_addr equ 2000h . mov r0, #counter mov dptr, #display_addr mov c, led_lamp程序最末尾指令ljmp main存放于0000H開始的單元1、起始地址偽指令 ORG OR4.定義字節(jié)數(shù)據(jù)偽指令DB格式:標號: DB 字節(jié)數(shù)據(jù)表功能:字節(jié)數(shù)據(jù)表可以是多個字節(jié)數(shù)據(jù)、字符串或表達式,它表示將字節(jié)數(shù)據(jù)表中的數(shù)據(jù)從左到右依次存放在指定地址單元。例如:ORG 1000HTAB: DB 2BH, 0A0H, A, 2*4 ;表示從1000H單元開始的地方

3、存放數(shù)據(jù)2BH,0A0H,41H(字母A的ASCII碼),08H5.定義字數(shù)據(jù)偽指令DW格式:標號: DW 字數(shù)據(jù)表功能:與DB類似,但DW定義的數(shù)據(jù)項為字,包括兩個字節(jié),存放時高位在前,低位在后。例如:ORG 1000H DATA: DW 324AH, 3CH ;表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,00H ; 3CH(3CH以字的形式表示為003CH)6.定義空間偽指令DS格式:標號: DS 表達式功能:從指定的地址開始,保留多少個存儲單元作為備用的空間。如: ORG 1000H BUF: DS 50 ; TAB: DB 22H ;22H存放在1032H單元。表示從1000

4、H開始的地方預留50個(1000H1031H)存儲字節(jié)空間。7. 數(shù)據(jù)地址賦值偽指令XDATA格式:符號名 XDATA 表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,可以先使用后定義,并且用于雙字節(jié)數(shù)據(jù)定義。例如: DELAY XDATA 0356H LCALL DELAY ;執(zhí)行指令后,程序轉(zhuǎn)到0356H單元執(zhí)行6.定義空間偽指令DS常見的偽指令8. 符號定義偽指令EQU或“=”格式:符號名 EQU 表達式 或 符號名=表達式功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節(jié)數(shù)據(jù),并且必須遵循先定義后使用的原則,因此該語句通常放在源程序的開頭部分。

5、例如:LEN=10SUM EQU 21HMOV A,#LEN;執(zhí)行指令后,累加器A中的值為0AH常見的偽指令8. 符號定義偽指令EQU或“=” 題意分析、熟悉并了解匯編語言指令的基本格式和主要特點、明確被控對象對軟件的要求、設計出算法等。分配內(nèi)存工作區(qū)及有關(guān)端口地址。畫出程序流程圖。編寫較復雜的程序時,畫出程序流程圖是十分必要的。程序流程圖也稱為程序框圖,是根據(jù)控制流程設計的,它可以使程序清晰,結(jié)構(gòu)合理,便于調(diào)試。 編制匯編源程序。仿真、調(diào)試和優(yōu)化程序。 固化程序。二、單片機匯編語言程序設計的基本步驟如下 題意分析、熟悉并了解匯編語言指令的基本格式和主要特點、明順序程序:順序程序是最簡單、最基

6、本的程序結(jié)構(gòu),其特點是按指令的排列順序一條條地執(zhí)行,直到全部指令執(zhí)行完畢為止。分支程序:分支程序是通過轉(zhuǎn)移指令對相應條件的判斷實現(xiàn)改變程序的執(zhí)行方向的設計方法。循環(huán)程序:在程序中需要反復的執(zhí)行的程序段,為了避免在程序中多次的編寫,可以通過利用條件轉(zhuǎn)移或無條件轉(zhuǎn)移指令來控制程序的執(zhí)行。三:單片機匯編語言程序主要的幾種程序設計方法:順序程序:順序程序是最簡單、最基本的程序結(jié)構(gòu),其特點是按指令一、順序程序 順序程序是最簡單的程序結(jié)構(gòu),在順序程序中沒有任何的轉(zhuǎn)移指令,以下是一個典型的例子。例1:字節(jié)(雙字)加法。將內(nèi)部RAM 30H開始的4個單元中存放的4字節(jié)十六進制數(shù)和內(nèi)部RAM 40H單元開始的4

7、個單元中存放的4字節(jié)十六進制數(shù)相加,結(jié)果存放到40H開始的單元中。(如0a0ab234fh存放在片內(nèi)RAM30h開始的4個單元如圖所示)30H31H33H32H加數(shù) 1 存放處4FH23HABHA0H一、順序程序 順序程序是最簡單的程序題意分析示意圖 (1) 題意分析。 題目的要求如圖所示。30H31H33H32H加數(shù) 1 存放處4FH23HABHA0H43H42H41H40H 7BH 56H 80H E8H加數(shù) 2 存放處43H42H41H40HCAH79H2BH89H相加結(jié)果存放處A0AB234FE880567B892B79CA1題意分析示意圖 (1) 題意分析。30H31 ORG0000

8、HMOVA,30HADD A,40HMOV40H,A;最低字節(jié)加法并送結(jié)果MOVA,31HADDCA,41HMOV41H,A;第二字節(jié)加法并送結(jié)果(2) 匯編語言源程序。按照雙字節(jié)加法的思路,實現(xiàn)4字節(jié)加法的源程序如下: ORG0000H(2) 匯編語言源 MOVA,32HADDC A,42HMOV42H,A;第三字節(jié)加法并送結(jié)果MOVA,33HADDCA,43HMOV43H,A;第四字節(jié)加法并送結(jié)果,進位 位在CY中 SJMP $END MOVA,32H分支程序分支程序可以分為:單分支雙分支多分支分支程序分支程序可以分為:單分支單分支程序的基本結(jié)構(gòu):條件成立?程序段下條指令NY單分支單分支程

9、序的基本結(jié)構(gòu):條件成立?程序段下條指令NY雙分支雙分支程序的基本結(jié)構(gòu):程序段1條件成立?程序段2NY雙分支雙分支程序的基本結(jié)構(gòu):程序段1條件成立?程序段2NY多分支多分支程序的基本結(jié)構(gòu):程序段2條件N=?程序段N-10N程序段1程序段N1N-1多分支多分支程序的基本結(jié)構(gòu):程序段2條件N=?程序段N-10例:如圖所示,設計一段程序?qū)崿F(xiàn)功能:如果(A)中1的個數(shù)為奇數(shù),所有的二極管發(fā)光;如果全0,則只讓VD0-VD3發(fā)光;否則全滅。單分支程序舉例例:如圖所示,設計一段程序?qū)崿F(xiàn)功能:如果(A)中1的個數(shù)為奇開始位P=1?(A)=0?P1FFHP100HP10FH結(jié)束YYNN ORG 0000H JB

10、 P,JISH JZ QUAN MOV P2,#00H SJMP TOendJISHU:MOV P2,#0FFH SJMP TOendQUAN:MOV P2,#0FHTOend: SJMP $ END流程圖:源程序:判斷奇偶標志位的值判斷(A)的值是否為0(A)有偶數(shù)個1,二極管滅(A)有奇數(shù)個1,二極管全亮(A)為0,VD0-VD3亮注意:在MCS-51單片機中,實現(xiàn)單分支常用的指令有:JZ、JNZ、DJNZ、CJNE、JC、JNC、JB、JNB、JBC等。虛線框代表一個單分支開始位P=1?(A)=0?P1FFHP100HP10F雙分支程序設計例:內(nèi)部RAM的40H單元和50H單元各存放了一

11、個8位無符號數(shù),請比較這兩個數(shù)的大小,比較結(jié)果用發(fā)光二極管顯示(LED為低有效): 若(40H)(50H),則P1.0管腳連接的LED1發(fā)光; 若(40H)(50H),則P1.1管腳連接的LED2發(fā)光。雙分支程序設計 題意分析: 本例是典型的分支程序,根據(jù)兩個無符號數(shù)的比較結(jié)果(判斷條件),分別點亮相應的發(fā)光二極管。比較兩個無符號數(shù)常用的方法是將兩個數(shù)相減,然后判斷有否借位CY。若CY=0,無借位,則XY;若CY=1,有借位,則XY。程序的流程圖如下圖所示。 題意分析:兩數(shù)比較流程圖XYXY,LED1點亮CY1? XY, YNLED2點亮開始結(jié)束兩數(shù)比較流程圖XYXY,LED1點亮CY1? 源

12、程序如下: X DATA 40H ;數(shù)據(jù)地址賦值偽指令DATA Y DATA 50H ORG0000H MOV A, X ;(X) A CLRC ;CY=0 SUBBA,Y ;帶借位減法,A- (Y)-CYA 源程序如下: JC L1 ;CY=1,轉(zhuǎn)移到L1 CLRP1.0 ;CY=0,(40H)(50H),點亮P1.0 連 接的LED1 SJMP FIN ;直接跳轉(zhuǎn)到結(jié)束等待 L1:CLR P1.1 ;(40H)(50H),點亮P1.1接的LED2 FIN:SJMP $ END JC L1 多分支程序舉例例:在某單片機系統(tǒng)中,按下一按鍵,鍵值(代表哪個鍵被按下)存放在內(nèi)部RAM的40H單元內(nèi)

13、。設計一段程序?qū)崿F(xiàn)功能:如果(40H)=00H,調(diào)用子程序SUB1;如果(40H)=01H,調(diào)用子程序SUB2;如果(40H)=02H,調(diào)用子程序SUB3;如果(40H)=03H,調(diào)用子程序SUB4;如果(40H)=04H,調(diào)用子程序SUB5。多分支程序舉例例:在某單片機系統(tǒng)中,按下一按鍵,鍵值(代表哪流程圖.(40H)=?調(diào)SUB1調(diào)SUB2調(diào)SUB3調(diào)SUB4調(diào)SUB5=00H=02H=03H=04H=01H流程圖.(40H)=?調(diào)SUB1調(diào)SUB2調(diào)SUB3調(diào)程序清單 MOV 40H,A MOV DPTR,#TAB RL A ADD A,40H JMP A+DPTR TAB: LCALL

14、 SUB1 LCALL SUB2 LCALL SUB3 LCALL SUB4 LCALL SUB5設定表格首地址40H3 傳送給A 查表轉(zhuǎn)移轉(zhuǎn)移地址表 程序清單 設定表循環(huán)程序循環(huán)程序是一種很重要的程序結(jié)構(gòu)。結(jié)構(gòu)流程圖一般如下圖所示:循環(huán)次數(shù)夠否?循環(huán)初始化置循環(huán)次數(shù)循環(huán)體下一條指令NY循環(huán)程序循環(huán)程序是一種很重要的程序結(jié)構(gòu)。結(jié)構(gòu)流程圖一般如下圖例1:設計一段程序?qū)崿F(xiàn)功能:統(tǒng)計(A)中1的個數(shù),把結(jié)果存入30H單元中。循環(huán)程序舉例解題思路:要統(tǒng)計1的個數(shù),可以利用RLC指令把A帶上Cy循環(huán)左移,如果移入Cy的是1,就讓(30H)加1,重復8次,可以統(tǒng)計出結(jié)果。30H00HR208H(循環(huán)次數(shù))RLC ACy=0?30H (30H)+1(R2)-1=0?下一條指令NYYN MOV 30H,#00H MOV R2,#08H LOOP:RLC A JNC NEXT INC 30H NEXT:DJNZ R2,LOOP 30H賦初始值,置循環(huán)次數(shù) 移位,判斷Cy是否為1,為1則30H自加1 判斷是否結(jié)束 例1:設計一段程序?qū)崿F(xiàn)功能:統(tǒng)計(A)中1的個數(shù),把結(jié)果存入例:將內(nèi)部RAM單元中20H單元到2FH單元的數(shù)傳到外部RAM中的2000H到200FH單元中.R2 10H, R0 20HDPTR 2000HNA R0 DPTR AR0 (R0)+1DPTR(DPTR)+1(R2)-1=

溫馨提示

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

最新文檔

評論

0/150

提交評論