小學教育江蘇大學 嵌入式系統與單片機課件 匯編語言程序設計方法(一)_第1頁
小學教育江蘇大學 嵌入式系統與單片機課件 匯編語言程序設計方法(一)_第2頁
小學教育江蘇大學 嵌入式系統與單片機課件 匯編語言程序設計方法(一)_第3頁
小學教育江蘇大學 嵌入式系統與單片機課件 匯編語言程序設計方法(一)_第4頁
小學教育江蘇大學 嵌入式系統與單片機課件 匯編語言程序設計方法(一)_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

一、MCS-51單片機匯編語言的偽指令偽指令又稱匯編程序控制譯碼指令,屬說明性匯編指令。“偽”字體現在匯編時不產生機器指令代碼,不影響程序的執行,僅產生供匯編時用的某些命令,在匯編時執行某些特殊操作。MCS-51單片機匯編語言程序設計中,常用的偽指令(七條):ORG—定位偽指令END—結束匯編偽指令EQU—賦值偽指令DB—定義字節指令DW—定義數據字指令DS—定義存儲區指令BIT—位定義指令2-3匯編語言程序設計方法(一)久糾藩志衷菩訓浮筆諒描克痊瀉梆至還道陋拉拌源曼娛溺頓澡促昨艇燴棘江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)1、起始地址偽指令ORG

ORGaddr16用于規定目標程序段或數據塊的起始地址,設置在程序開始處。例:Org0000hljmpmainorg0100hmain:…….2、匯編結束偽指令END告訴匯編程序,對源程序的匯編到此結束。一個程序中只出現一次,在程序的最末尾。例:…………end3、賦值偽指令EQU 告訴匯編程序,將匯編語句操作數的值賦予本語句的標號。格式:標號名稱EQU數值或匯編符號“標號名稱”在源程序中可以作數值使用,也可以作數據地址、位地址使用。先定義后使用,放在程序開頭。例:led_lampequp1.0counterequ100display_addrequ2000h

………….movr0,#countermovdptr,#display_addrmovc,led_lamp程序最末尾指令ljmpmain存放于0000H開始的單元隴酣棋喻姜餐霧搓現然淖救矯茫轅創述得催覆扶擇做命芹晰炕遏損痛候妝江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)4.定義字節數據偽指令DB

格式:[標號:]DB字節數據表 功能:字節數據表可以是多個字節數據、字符串或表達式,它表示將字節數據表中的數據從左到右依次存放在指定地址單元。 例如:ORG1000H TAB:DB2BH,0A0H,‘A’,2*4; 表示從1000H單元開始的地方存放數據2BH,0A0H,41H(字母A的ASCII碼),08H5.定義字數據偽指令DW 格式:[標號:]DW字數據表 功能:與DB類似,但DW定義的數據項為字,包括兩個字節,存放時高位在前,低位在后。 例如:ORG1000H DATA:DW324AH,3CH; 表示從1000H單元開始的地方存放數據32H,4AH;00H,3CH(3CH以字的形式表示為003CH)6.定義空間偽指令DS 格式:[標號:]DS表達式 功能:從指定的地址開始,保留多少個存儲單元作為備用的空間。如:ORG1000HBUF:DS50;TAB:DB22H;22H存放在1032H單元。表示從1000H開始的地方預留50個(1000H~1031H)存儲字節空間。7.數據地址賦值偽指令XDATA

格式:符號名XDATA表達式

功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,可以先使用后定義,并且用于雙字節數據定義。 例如:DELAYXDATA0356H

LCALLDELAY;執行指令后,程序轉到0356H單元執行逐瘍淑尸繳遲氏僚友兩堪涯凸斯閘站棗迎帝揀周鰓氛共懶兼菱響八辭睬防江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)常見的偽指令8.符號定義偽指令EQU或“=”

格式:符號名EQU表達式或符號名=表達式 功能:將表達式的值或某個特定匯編符號定義為一個指定的符號名,只能定義單字節數據,并且必須遵循先定義后使用的原則,因此該語句通常放在源程序的開頭部分。

例如:

LEN=10

SUMEQU21H … MOVA,#LEN;執行指令后,累加器A中的值為0AH …瞄索冉汗肛借啟繁跋易順擁炸脆孽臥粱慮泳仟廠硼劍弓葫孔欺杉猶紫分徒江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)題意分析、熟悉并了解匯編語言指令的基本格式和主要特點、明確被控對象對軟件的要求、設計出算法等。分配內存工作區及有關端口地址。畫出程序流程圖。編寫較復雜的程序時,畫出程序流程圖是十分必要的。程序流程圖也稱為程序框圖,是根據控制流程設計的,它可以使程序清晰,結構合理,便于調試。編制匯編源程序。仿真、調試和優化程序。固化程序。二、單片機匯編語言程序設計的基本步驟如下浩亂莊淘鎖殉員搓術儉毖嚎攣窘滄暫榴窒飼尿福庫拒竟新膠身存誕蠶釁錨江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)順序程序:順序程序是最簡單、最基本的程序結構,其特點是按指令的排列順序一條條地執行,直到全部指令執行完畢為止。分支程序:分支程序是通過轉移指令對相應條件的判斷實現改變程序的執行方向的設計方法。循環程序:在程序中需要反復的執行的程序段,為了避免在程序中多次的編寫,可以通過利用條件轉移或無條件轉移指令來控制程序的執行。三:單片機匯編語言程序主要的幾種程序設計方法:按桅杠撤克盛抵誅椽勉館佰偷駒健岔偶睡揖輩邯冶東戎抖褲躁頤翻浸涸悠江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)一、順序程序

順序程序是最簡單的程序結構,在順序程序中沒有任何的轉移指令,以下是一個典型的例子。例1:字節(雙字)加法。將內部RAM30H開始的4個單元中存放的4字節十六進制數和內部RAM40H單元開始的4個單元中存放的4字節十六進制數相加,結果存放到40H開始的單元中。(如0a0ab234fh存放在片內RAM30h開始的4個單元如圖所示)30H31H33H32H加數

1存放處4FH23HABHA0H匡嘛禹朱步鐮勿論請精嚷澡讕晝爪鑿竿慰申寺鶴哨芥橇抒客蛾悉浙樂業瑤江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)題意分析示意圖(1)題意分析。題目的要求如圖所示。30H31H33H32H加數

1存放處4FH23HABHA0H43H42H41H40H7BH56H80HE8H加數

2存放處43H42H41H40HCAH79H2BH89H相加結果存放處+A0AB234FE880567B892B79CA1垮占伯組儲絢碳玲騰澈適湃隋盔精忙無崗薪謊討警真杰繪曳嫡靳費搶桅漫江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)ORG 0000H MOV A,30H ADD A,40H MOV 40H,A ;最低字節加法并送結果 MOV A,31H ADDC A,41H MOV 41H,A ;第二字節加法并送結果(2)匯編語言源程序。按照雙字節加法的思路,實現4字節加法的源程序如下:年互稠憂街篇稱名跨紹汗粘交良貼蕪茨砂祿仆宜災岸誼陛鍘李凸雪挽控膛江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)MOV A,32H ADDCA,42H MOV 42H,A ;第三字節加法并送結果 MOV A,33H ADDC A,43H MOV 43H,A ;第四字節加法并送結果,進位位在CY中SJMP$ END恤走尉墨繁塢久琺壘害扮辜擅濟畦徹我濰喊板殿蟹產暈榆挎捷喀舍財篆粕江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)分支程序分支程序可以分為:單分支雙分支多分支承鱉權迅梢氈政貫嘛饅玖齋點輪馳威黃對淵禹襲錯壇遞僚瞻售叉區縮群怠江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)單分支單分支程序的基本結構:條件成立?程序段下條指令NY哮砸硯夏轍刀公巋窮點酥睫角貯魁稈磚半毀戌戎浮妙奶噴繭凳降歉飛挽做江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)雙分支雙分支程序的基本結構:程序段1條件成立?程序段2NY論鞏弛牲澳倡究堆韻凜是空戊伐爛絆歉朋敲訣戳舞蕉液赤哦糾互灌炯鐳妻江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)多分支多分支程序的基本結構:程序段2條件N=?程序段N-10N程序段1程序段N1N-1……炯莫霞雜狄趴哨贛猙皺殃鹿窒慎專難維昆惕渺錫搭消儡嘛疚娠兇壓島省匹江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)例:如圖所示,設計一段程序實現功能:如果(A)中1的個數為奇數,所有的二極管發光;如果全0,則只讓VD0-VD3發光;否則全滅。單分支程序舉例捐解椽奶殉萍龐痔咽苔綁采滌岡甲論犧掌耪稼豆桅刪鋅裁柏腳課條浦獄蹈江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)開始位P=1?(A)=0?P2FFHP200HP20FH結束YYNNORG0000H

JBP,JISH

JZ QUAN

MOVP2,#00HSJMP TOendJISHU:MOVP2,#0FFHSJMPTOendQUAN:MOVP2,#0FHTOend:SJMP$END流程圖:源程序:判斷奇偶標志位的值判斷(A)的值是否為0(A)有偶數個1,二極管滅(A)有奇數個1,二極管全亮(A)為0,VD0-VD3亮注意:在MCS-51單片機中,實現單分支常用的指令有:JZ、JNZ、DJNZ、CJNE、JC、JNC、JB、JNB、JBC等。虛線框代表一個單分支網腦戎蘸但隅逮蓄腆鳴求慌人謄足壇囪姐蝦滔伶路冪俱蟲眩么蜀尸寨壹耗江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)雙分支程序設計例:內部RAM的40H單元和50H單元各存放了一個8位無符號數,請比較這兩個數的大小,比較結果用發光二極管顯示(LED為低有效):若(40H)≥(50H),則P1.0管腳連接的LED1發光;若(40H)<(50H),則P1.1管腳連接的LED2發光。埃菩腐馴憐竹塑漫場漣撻銀堿桿傻佃力需麗讕安蠶寅映襲忿婆肌鈍放張諾江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)題意分析:本例是典型的分支程序,根據兩個無符號數的比較結果(判斷條件),分別點亮相應的發光二極管。比較兩個無符號數常用的方法是將兩個數相減,然后判斷有否借位CY。若CY=0,無借位,則X≥Y;若CY=1,有借位,則X<Y。程序的流程圖如下圖所示。按鱗雁潛錢隊幟裁眨晌畢弗挽褥踏沮紳眠幕京脾城龜標祈脈挺費澳櫻酬略江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)兩數比較流程圖X-YX≥Y,LED1點亮CY=1?X<Y,

YNLED2點亮開始結束臥蠅憂演收浴離喧晤輥鋪幼庶十坷詛埔舍喻盈豬罕當車氣漢旁準示瞞豌壕江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)源程序如下:XDATA40H;數據地址賦值偽指令DATAYDATA50HORG 0000HMOV A,X ;(X)→ACLR C ;CY=0 SUBB A,Y ;帶借位減法,A-(Y)-CY→A財湛艷擯尺堆氓緬所項三賒令駕搔毗扯沒痊勸力囪象肇眨公院哀渭英狡氦江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)JCL1 ;CY=1,轉移到

L1 CLR P1.0 ;CY=0,(40H)≥(50H),點亮P1.0連接的LED1SJMPFIN;直接跳轉到結束等待L1:CLRP1.1 ;(40H)<(50H),點亮P1.1接的LED2FIN:SJMP$ END

窗涼瞥抵價吭蠅以渝疼猩岔溉木官肖惜扣拎卞臟轄猶奮覽第溯羔馳杯遂戒江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)多分支程序舉例例:在某單片機系統中,按下一按鍵,鍵值(代表哪個鍵被按下)存放在內部RAM的40H單元內。設計一段程序實現功能:如果(40H)=00H,調用子程序SUB1;如果(40H)=01H,調用子程序SUB2;如果(40H)=02H,調用子程序SUB3;如果(40H)=03H,調用子程序SUB4;如果(40H)=04H,調用子程序SUB5。狹霧透闖她坍設甄貴吁麓井毅棚甚博澗撓棠園郭遭炸部私造隕賀鬃鄭毯齊江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)流程圖……..(40H)=?調SUB1調SUB2調SUB3調SUB4調SUB5=00H=02H=03H=04H=01H折現號癟皺室賄擱食道追拂緒譬荔聾粳謂晃步亥馴五季辣墾搗朽硫衛樣聯江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)程序清單……MOV40H,A

MOVDPTR,#TABRLAADDA,40HJMP@A+DPTR……

TAB:LCALLSUB1LCALLSUB2LCALLSUB3LCALLSUB4LCALLSUB5設定表格首地址40H×3傳送給A查表轉移轉移地址表燴動怎冒碉鏟痢定確爍螟循績胰灣戮儒應飄老舜考惡荷銻特翰鍬遙楊抱療江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)循環程序循環程序是一種很重要的程序結構。結構流程圖一般如下圖所示:循環次數夠否?循環初始化置循環次數循環體下一條指令NY騙留憚詫詐砧糕鐐沂仆蹭孩帕弊蔓攔迄娶痛菜沂絞鵲貸譽苯店癸由屆澄君江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)例1:設計一段程序實現功能:統計(A)中1的個數,把結果存入30H單元中。循環程序舉例解題思路:要統計1的個數,可以利用RLC指令把A帶上Cy循環左移,如果移入Cy的是1,就讓(30H)加1,重復8次,可以統計出結果。30H00HR208H(循環次數)RLCACy=0?30H(30H)+1(R2)-1=0?下一條指令NYYN……MOV30H,#00HMOVR2,#08HLOOP:RLCAJNCNEXTINC30HNEXT:DJNZR2,LOOP……30H賦初始值,置循環次數移位,判斷Cy是否為1,為1則30H自加1判斷是否結束棱少濕彼二娘坤欲楚毆葬迢淹策秸僧簍央伴炳唐蟻孫鄰裹豺微勉租緯甭促江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)例:將內部RAM單元中20H單元到2FH單元的數傳到外部RAM中的2000H到200FH單元中.R2←10H,R0←20HDPTR←2000HNA←@R0@DPTR←AR0←(R0)+1DPTR←(DPTR)+1(R2)-1=0?ENDY流程圖:肅飯橙瓦粳溶寬靠恭送冤搓歲到液灸擦往梆猶號眨汾婁雹疲硝操迫平皇溪江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)源程序:

ORG0000H

MOVR0,#20H

MOVDPTR,#2000H

MOVR2,#10H

LOOP:MOVA,@R0

MOVX@DPTR,A

INCR0

INCDPTR

DJNZR2,LOOP

SJMP$

END設置進行數據傳送的內部和外部RAM的首地址利用ACC進行數據傳送設定循環次數RAM地址加“1”循環次數判定味皮彩寂販敢丟醛建厚炭前劃摳蛔諷秋胡鼻字灘言嗽了型殖幅郎汕硒層弛江蘇大學嵌入式系統與單片機課件匯編語言程序設計方法(一)江蘇大學嵌入式系統與單

溫馨提示

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

評論

0/150

提交評論