資源描述:
《MCS-51單片機匯編語言程序設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、§4-1偽指令§4-2匯編語言程序的編輯與匯編§4-3匯編語言程序設(shè)計●教學目的:本章主要學習偽指令,源程序的編輯與匯編,匯編語言的程序設(shè)計舉例。通過本章的學習,要掌握偽指令的含義及其使用方法,學會應(yīng)用基礎(chǔ)指令語句編寫具有分支、循環(huán)、子程序等的匯編語言程序,掌握應(yīng)用WAVE軟件編寫、編譯程序的方法,學會應(yīng)用WAVE軟件進行程序仿真與檢查。第四章MCS-51單片機語言程序設(shè)計§4-1偽指令一、偽指令在單片機編程中,有一些指令,如指定目標程序或數(shù)據(jù)存放的地址、給一些指定的標號賦值、表示源程序結(jié)束等指令,并不產(chǎn)生目標程序(機器碼),僅僅產(chǎn)生供匯編用的某些命令,用來對匯編過程進行某種控制或操作,
2、這類指令稱為偽指令。MCS-51的偽指令主要有:ORGENDEQUBITDBDWDS等§4-1偽指令ORG—定義起始地址偽指令格式:ORGaddr16功能:規(guī)定程序塊或數(shù)據(jù)存放的起始地址。Addr16表示一個16位的程序存儲器的空間地址,一般為一個確定的地址,也可以是預(yù)先定義的標號。例:ORG000HAJMPMAINORG0030HMAIN:MOVA,30H…注意:①在一個匯編語言源程序的開始,一般都要設(shè)置一條org偽指令來指定該程序在程序存儲器中存放的起始地址,如果省略,程序從0000H開始存放;②在一個程序中,可以有多個org,為不同的程序段指明存放位置,但必須從小到大,且存儲空間不
3、能重疊。END—定義匯編結(jié)束偽指令格式:END功能:表示匯編結(jié)束,在此之后的源程序?qū)⒉槐痪幾g。例:ORG000HAJMPMAINORG0030HMAIN:MOVA,30H…END§4-1偽指令EQU—標號賦值偽指令例:BLKEQU1000HGREENEQU30HORG000HAJMPMAINORG0030HMAIN:MOVA,GREEN…END§4-1偽指令格式:標號EQU[表達式]功能:將表達式的值賦給本語句中的標號,又稱為等值指令,可替代單字節(jié)、雙字節(jié)。注意:在被賦值后該標號將不能再被賦值。BIT—位地址賦值偽指令例:REDBIT20H.3ORG000HAJMPMAINORG0030
4、HMAIN:MOVP1.6,RED…END§4-1偽指令格式:標號BIT[表達式]功能:將表達式的值賦給本語句中的標號,以替代位。注意:在被賦值后該標號將不能再被賦值。DB—定義字節(jié)偽指令例:ORG000HAJMPMAINORG0030HMAIN:…MOVDPTR,#TABMOVCA,@A+DPTR…TAB:DB0C0H,0F9H,0A4H,99HDB86H,73H,89HDB“helloworld!”END§4-1偽指令格式:標號DB[字節(jié)表]功能:從標號指定的地址單元開始,在程序存儲器中定義字節(jié)數(shù)據(jù)。DW—定義字偽指令例:ORG000HAJMPMAINORG0030HMAIN:…TA
5、B:DW0C045H,0F9H,0A324H,99HEND§4-1偽指令格式:標號:DW[字表]功能:從標號指定的地址單元開始,在程序存儲器中存儲字數(shù)據(jù)。DS—預(yù)存存儲區(qū)偽指令例:ORG3000HMAIN:…TIMER:DS10H…END§4-1偽指令格式:標號:DS表達式功能:從標號指定的地址單元開始,定義一個存儲區(qū),以被源程序使用。存儲區(qū)內(nèi)預(yù)留的單元數(shù)由表達式的值決定。應(yīng)用軟件:WAVE,KeilCWAVE應(yīng)用初步(請看實際操作)§4-2匯編語言程序的編輯與匯編程序的四種執(zhí)行方式:順序程序分支程序循環(huán)程序子程序§4-3匯編語言程序設(shè)計分析問題確定算法畫框圖編寫程序調(diào)試開始一般處理判斷
6、編程技巧:劃分好功能模塊,按模塊編程寫好注釋,便于理解和事后分析對于內(nèi)部存儲器的應(yīng)用要合理分配子程序的堆棧保護和數(shù)據(jù)接口要設(shè)置好§4-3匯編語言程序設(shè)計編程舉例:§4-3匯編語言程序設(shè)計例4-1(P60)(順序程序)設(shè)20H單元中有一個8位的數(shù)據(jù),將其低4位送到21H內(nèi),并按相反的順序拼裝,高4位清零,即原(20H)=D7D6D5D4D3D2D1D0至(21H)=0000D0D1D2D3。(WAVE編程操作)編程舉例:§4-3匯編語言程序設(shè)計例4-2(P60)(分支程序)求16位二進制數(shù)的補碼。設(shè)16位二進制數(shù)的原碼放在R1,R0中,(低8位在R0中),求得的補碼放置在R3、R2中。(補
7、碼的概念:正數(shù)是本身,負數(shù)各數(shù)值位取反后加1得到。)(WAVE編程操作)編程舉例:§4-3匯編語言程序設(shè)計例4-3(P61)(分支程序)比較兩個無符號數(shù)的大小,兩個8位數(shù)分別存放在DATA1、DATA2單元,要求將大數(shù)放置在DATA3單元(三單元連續(xù))。(WAVE編程操作)編程舉例:§4-3匯編語言程序設(shè)計例4-4(P61)(循環(huán)程序)計算通用延時程序的延時時間。Delay:MOVR7,#250DEL1:MOVR6,#200DJNZ