資源描述:
《第4章 指令系統(tǒng)及匯編語言程序設計》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、第四章指令系統(tǒng)及匯編語言程序設計任課教師:劉忠國山東大學課程中心網站:http://course.sdu.edu.cn/G2S/stcmcu.cc宏晶官方網站:http://www.stcmcu.com/stc15系列單片機器件手冊等keilμvision軟件下載及指導手冊(Help→μvisionHelp)http://www.keil.com/何賓STC單片機原理及應用>http://www.gpnewtech.com/study/stc/KeilSoftware–Cx51編譯器用戶手冊:Cx51編譯器--對傳統(tǒng)和擴展的8051
2、微處理器的優(yōu)化的C編譯器和庫參考2第四章指令系統(tǒng)及匯編語言程序設計本章學習目標了解助記符、指令格式掌握單片機尋址方式掌握單片機指令系統(tǒng)掌握單片機匯編語言程序設計及開發(fā)環(huán)境參考資料:keilμVision軟件的幫助文件3*第四章指令系統(tǒng)及匯編語言程序設計語言4.1編程語言4.2指令格式及其分類4.3尋址方式4.4數據傳送類指令4.5邏輯操作類指令4.6算術運算類指令4.7位操作指令4.8控制類轉移指令4.9匯編語言程序設計4.10匯編語言程序調試4.11利用ISP工具將程序下載到單片機中驗證程序4*§4.9匯編語言程序設計4.9.1偽
3、指令(Pseudo-Instruction)用戶將編輯好的匯編語言源程序通過專門的軟件(稱為匯編程序)匯編成相應的機器語言程序時,需要有一些專門的說明性語句。例如,指定目標程序或數據存放的起始地址、給一些指定的標號賦值、在內存中予留工作單元、表示源程序結束等指令。指令并不產生對應CPU操作的機器碼,故稱偽指令,也叫指示性語句(Directives);相對應的,可產生實質性操作的指令叫指令性語句(Instructions),指令性語句表示CPU要進行的某種操作。例,MOVA,#30H,表示將立即數30H送到寄存器A中。5*4.9.1偽
4、指令1、起始地址設置偽指令ORG(ORIGIN)格式為:ORGxxxxHORG是起始地址設置偽指令的操作碼,xxxx是四位十六進制地址。該指令表明其后緊跟的指令性語句的機器碼放在以xxxxH為起始地址的單元中。例:ORG0100HDELAY:MOVR0,#30H6*1、起始地址設置偽指令ORG一般,在整個程序的起始處放置一條“ORG0000H”偽指令,表明下面開始的指令性語句從0000H開始存放。后面有一定獨立性的程序段也可以用這條指令指定程序段存放的起始地址。例如:ORG0000HSTART:LJMPMAINMOVA,#00H……
5、ORG0100HDELAY:MOVR0,#30H……7*0000H000000100001Haddr15~80002Haddr7~00100H011110000101H00110000…………0003H外部中斷0中服入口地址1、起始地址設置偽指令ORGORG偽指令的作用單片機復位時,一個重要操作是將程序計數器PC清零。在復位結束后,系統(tǒng)從程序存儲器存放的第一個地址單元0000H開始取指令。匯編時就需要告訴匯編程序將后面的語句經匯編后放在地址為0000H開始的區(qū)域;因此,整個程序起始地址用“ORG0000H”偽指令說明。后面延時子程序
6、DELAY在指令“ORG0100H”說明作用下,經匯編后被放置在地址為0100H開始的區(qū)域。在例子中,如果沒有“ORG0100H”這條語句,延時程序DALAY也會得到匯編,匯編后的機器碼緊接著前面的程序順序存放。8*4.9.1偽指令2、數據定義偽指令功能:定義一個數據存儲區(qū),其類型由數據定義偽指令指定,可以給存儲區(qū)賦初值,也可以僅僅給變量分配存儲單元,而不賦予特定的值。一般格式:[標號:]數據定義偽指令操作數[,操作數…][;注釋]方括號中的內容為可選項。偽指令后面的操作數可以不止一個。如有多個操作數,互相之間用逗號隔開。9*例如:
7、SEG:DB23H;定義一個字節(jié)標號SEG可以如下方式引用:MOVR0,#SEGMOVA,@R0標號SEG不能以變量方式被引用:MOVA,SEG2、數據定義偽指令常用的數據定義偽指令有DB和DW:(1)定義字節(jié)DB(DefineByte)[標號:]DB〈項或項表〉其中項或項表:指一個字節(jié)、數或數字串,或以引號括起來的ASCII碼字符串(一個字符用ASCII碼表示,相當于一個字節(jié))。該指令的功能是把項或項表的數值存入從標號開始的連續(xù)單元中,每個操作數存放時占1個字節(jié),多個操作數時,按排列順序首先從低地址存放。10*2、數據定義偽指令常
8、用的數據定義偽指令有DB和DW:(1)定義字節(jié)DB(DefineByte)[標號:]DB〈項或項表〉其中項或項表:指一個字節(jié)、數或數字串,或以引號括起來的ASCII碼字符串(一個字符用ASCII碼表示,相當于一個字節(jié))。MSG:DB'