




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章 80C51第4章 80C51(1)機(jī)器語二進(jìn)制、十六進(jìn)制供機(jī)器直接執(zhí)行,不易為人們識(shí)別和讀寫(2)匯編語助記符指令和機(jī)器指令一一對(duì)應(yīng),代碼率高,執(zhí)行速度快,占用序器少能直接管理和控制硬件編程難。匯編語言是面向計(jì)算機(jī)的,編程員必須掌握硬缺乏通用(3)高級(jí)語缺點(diǎn):需經(jīng)過解釋(BASIC)或編譯目標(biāo)程序1執(zhí)行速度慢匯編語言格:操作碼操作匯編語言格:操作碼;注釋(1)標(biāo)號(hào)語句地址的標(biāo)志符號(hào),用來指明指令的地址。其它指令可該符號(hào),作為地址或數(shù)據(jù)標(biāo)號(hào)規(guī)定由18個(gè)ASCII字符組成,開頭必須是字一個(gè)標(biāo)號(hào)是唯一的,即不能重復(fù)定符,可以有標(biāo)號(hào),也可以沒操作碼指令助記符。是匯編指令中唯一不能省略的部操作數(shù)
2、指令對(duì)應(yīng)的操作對(duì)象,可能是數(shù)據(jù),地址,主要注釋開頭用“;”,對(duì)指令進(jìn)行注釋,便于程序閱讀2(5)分界符例子LJUMPMAIN;上電,轉(zhuǎn)向主程;T0中斷地; 轉(zhuǎn)向中斷服務(wù)程SP,;設(shè)堆棧指;設(shè)循環(huán)次MOV#01H ;設(shè)置T0工作于模式例子LJUMPMAIN;上電,轉(zhuǎn)向主程;T0中斷地; 轉(zhuǎn)向中斷服務(wù)程SP,;設(shè)堆棧指;設(shè)循環(huán)次MOV#01H ;設(shè)置T0工作于模式MOVMOVTH0,#3CH SETB TR0SETBSETB;裝入計(jì)數(shù)值低8;裝入計(jì)數(shù)值高8;啟動(dòng)定時(shí)器;允許T0中;允許CPU中;等待中$3指令性語句:匯編指令性語句:匯編語句語【特點(diǎn)】:編譯后產(chǎn)生機(jī)器指示型語句:偽指格式(起始匯編)
3、偽指16位地功能:是規(guī)定該偽指令后面程序的匯編地址,即匯編后生成目標(biāo)序存放的起始地址A,可以出現(xiàn)在程序的任何地方,當(dāng)它出現(xiàn)時(shí)下一條指令4地址就可以由此從新定(2)END(結(jié)束匯編)偽指格式:標(biāo)號(hào)(2)END(結(jié)束匯編)偽指格式:標(biāo)號(hào)功能:指示源程序到此全部結(jié)注:一定放在程序末尾!匯編程序?qū)ND后語句不予理(3)EQU(賦值)偽指字符名稱格式數(shù)值或匯編功能:EQU右邊的“數(shù)據(jù)或匯編符”賦給左邊的“字符名稱例:MOVMOV注:“字符名稱”必須先賦值后使用,故該語句通常放在源程序的頭(4)DATA(數(shù)據(jù)地址賦值)偽指格式字符名表達(dá)功能:與EQU類注:可先使用后定義,放于程序開頭、結(jié)尾均可5(5)D
4、B(Define Byte,定義字(5)DB(Define Byte,定義字節(jié))偽指格式項(xiàng)或項(xiàng)功能:它通知匯編程序從當(dāng)前ROM地址開始,保留一字節(jié)或字中的I舉例單經(jīng)匯編后,則有6(6)DW(Define Word,定義字)(6)DW(Define Word,定義字)偽指格式16位數(shù)據(jù)項(xiàng)或項(xiàng)W11義一個(gè)地址舉例匯編后,則有注ABC;不合法,因超過2個(gè)字(2)常以DB定義數(shù)據(jù),用DW定義地址7(7)DS(Define Storage,定空間)偽指標(biāo)號(hào)(7)DS(Define Storage,定空間)偽指標(biāo)號(hào)格式表達(dá)功能:從指定地址開始,保留由表達(dá)式指定的若干字節(jié)空間作為用空間例;從100AH開始存
5、放71H、11H、11H(8)BIT(位地址賦值)偽指格式:字符名位地功能: 把位地址賦于規(guī)定的字符名稱例84.2.1 4.2.1 94.2.2 目標(biāo)程序的產(chǎn)生過程如下圖4.2.2 目標(biāo)程序的產(chǎn)生過程如下圖人工匯人工匯人工直接把匯編語言源程序翻譯成機(jī)器碼,也叫人工“代真”無分支程序一次可完有分支程序需兩次才可完第一次匯編:查指令表,寫下指令碼和起始地第二次匯第二次匯編:確定第一次匯編過程中未確定的標(biāo)號(hào)或地址偏移量值地址偏移量=目標(biāo)地址-轉(zhuǎn)移指令起始地址-轉(zhuǎn)移指令字節(jié)機(jī)器匯用機(jī)器代替機(jī)器匯用機(jī)器代替人腦,自動(dòng)把匯編語言源程序(助記符形式)翻譯成標(biāo)代碼效率高,出錯(cuò)率低“匯編程序”是一種系,也稱工。
6、4.3,4.4,4.3,4.4,匯編語言程序的基本結(jié)構(gòu)形簡單程序(順序程序)設(shè)分支程序設(shè)循環(huán)程序設(shè)查表程序設(shè)子程序設(shè)運(yùn)算程序設(shè)4.3.1 簡單程序:又稱直線程4.3.1 簡單程序:又稱直線程序、順序程序、無分支程序【特點(diǎn)】:程序執(zhí)行時(shí)一條接一條地按順序執(zhí)行指令,中間無任何例子:三字節(jié)無符號(hào)數(shù)相加,其中被加數(shù)(高、中、低字RAM的50H,51H和52H單元中,加數(shù)在RAM在53H,54H和55H單元中,要求把相加之和存放在50H,51H52H單元中,進(jìn)位存放在位尋址區(qū)的00H位中注:多字節(jié)數(shù)加法,考慮是用ADD指令還是用ADDC指令R0#52H第一個(gè)加數(shù).R1#55H第二個(gè)加數(shù).A,A,R1 R
7、0,R0#52H第一個(gè)加數(shù).R1#55H第二個(gè)加數(shù).A,A,R1 R0,DEC 第一個(gè)加數(shù)地址減1,進(jìn)入;第二個(gè)加數(shù)地址減1,進(jìn)入A,AR1中間字節(jié).R0A ; 中間字節(jié)相加結(jié)果A,AR1高字節(jié),R0, A; 00HC進(jìn)位送00H4.3.2 4.3.2 分支程序主要指令 判斷累加器A是否為零:JZ 比較條件轉(zhuǎn)移指令 減1條件轉(zhuǎn)移指令 判斷進(jìn)位標(biāo)志是否為1:JC, 位狀態(tài)條件轉(zhuǎn)移舉例分支結(jié)34。(1)舉例分支結(jié)34。(1)算當(dāng)累加器A的為1時(shí)此數(shù)據(jù)為負(fù)數(shù),否則此數(shù)為正(2)流程(3)程ACC.7,;如果為負(fù)數(shù),轉(zhuǎn)B,35H;將35H中的數(shù)據(jù)存;轉(zhuǎn)B,34H ;將34H中的數(shù)據(jù)存舉例:多路分支結(jié)構(gòu)
8、(散轉(zhuǎn)程序散轉(zhuǎn)舉例:多路分支結(jié)構(gòu)(散轉(zhuǎn)程序散轉(zhuǎn)指K=n-例(AJM已知3HR128轉(zhuǎn)向n分轉(zhuǎn)向n-1分轉(zhuǎn)向1分轉(zhuǎn)向0分說明:此程序要求128個(gè)轉(zhuǎn)移目的地址(ROUT00 ROUT127說明:此程序要求128個(gè)轉(zhuǎn)移目的地址(ROUT00 ROUT127)例2(用多條CJNE指令):某溫度控制系統(tǒng)的溫例2(用多條CJNE指令):某溫度控制系統(tǒng)的溫度(Ta)在累加器A中,此外在54H單元存放控制溫度下限值(T54),在55H單元中存放控制溫度上限值(T55)55,程序轉(zhuǎn)向JW降溫處理若若54程序轉(zhuǎn)向SW,升溫處理如溫度在范圍T54 55,程序轉(zhuǎn)向FH返回主程序程序流程圖程:CJNE A, 55H,
9、;;55,轉(zhuǎn)向55返;CY=0,;轉(zhuǎn)降溫處理程序CJNE A, 54H, ;54,轉(zhuǎn)向54返; CY=1,表;程:CJNE A, 55H, ;;55,轉(zhuǎn)向55返;CY=0,;轉(zhuǎn)降溫處理程序CJNE A, 54H, ;54,轉(zhuǎn)向54返; CY=1,表;轉(zhuǎn)升溫處理程序; T54 ;程55,返回4.4.1 循4.4.1 循環(huán)程序設(shè)計(jì)是為了重復(fù)執(zhí)行一個(gè)程序段兩種編制方法例4.9:已RAM的BLOCK單元開始有一個(gè)無符號(hào)例4.9:已RAM的BLOCK單元開始有一個(gè)無符號(hào)數(shù)據(jù)塊,長在LEN單元。請(qǐng)編寫求數(shù)據(jù)塊中各數(shù)累加和并存入SUM單元程序法1:先判斷后處理跳轉(zhuǎn)LENA共累加LEN法2:先處理后判斷跳法2
10、:先處理后判斷跳轉(zhuǎn)LEN-次A共累加LEN4.4.2 4.4.2 查表程序設(shè)計(jì)(例3.6已講過查表,在此略4.5.1 子程序設(shè)子程序:4.5.1 子程序設(shè)子程序:指完成確定任務(wù)并能為其它程序反復(fù)調(diào)用的程序段采用的指令好處:使整個(gè)程序結(jié)構(gòu)簡單,減少空間的占子程序是允許嵌套的,嵌套深度和堆棧區(qū)的大小有關(guān)編寫子程序時(shí)應(yīng)注意以下問題(地址主程序調(diào)用子程序是通過安排在主程序中的調(diào)用指令實(shí)的,子程序返回主程序必須執(zhí)行安排在子程序末尾的一條RET回指令器和內(nèi)存單元的內(nèi)容,如果需要保護(hù)和恢復(fù),必須在子程序27開(4)為了使所編子程序可以(4)為了使所編子程序可以放在64K內(nèi)存的任意子域,并能被主序所調(diào)用,子程
11、代碼(5)子程序參數(shù)分必須使用相對(duì)轉(zhuǎn)移指令,以匯編生成浮和出口參數(shù):可約定通過R0-R7,特殊能寄存器SFR,內(nèi)存單元和堆棧等傳送和接:常見方法利用寄存器或片內(nèi)RAM傳遞子程序參利用寄存器傳遞子程序參數(shù)的地利用堆棧傳遞子程序參利用位地址傳遞子程序參(6)提供足夠的調(diào)用信息,說明文檔要做好,如:子程序名、子程序功能參數(shù)和出口參數(shù)、子程序占用的硬件資源序中調(diào)用的其他子程序名例4.16(用累加器A傳遞參數(shù)):設(shè)MDA和MDB內(nèi)有兩數(shù)a和b,寫求ca2+b2,并把c送入MDC的程序。設(shè)a,b皆為小于10的整數(shù)分析例4.16(用累加器A傳遞參數(shù)):設(shè)MDA和MDB內(nèi)有兩數(shù)a和b,寫求ca2+b2,并把c
12、送入MDC的程序。設(shè)a,b皆為小于10的整數(shù)分析主程序通過累加器A傳送子程序參數(shù)a或b,子程序也通過加器A傳送出口參數(shù)a2或b2給主程序,子程序?yàn)榍笃椒降耐ㄓ米映藾ATA MOV;確立堆棧MOV;求參數(shù)a程DATA MOV;確立堆棧MOV;求參數(shù)a送MOVMOV;a2送;求參數(shù)b送ADD MOVMDCa2+b2送;存入;結(jié);地址調(diào);查平方;返$A,MOVCA,A+PC DB DB25,36,49,64,81 例4.17(用堆棧傳遞參數(shù)):在HEX單元中存有兩個(gè)十六進(jìn)制數(shù)試通過例4.17(用堆棧傳遞參數(shù)):在HEX單元中存有兩個(gè)十六進(jìn)制數(shù)試通過編程分別把它們轉(zhuǎn)換成ASCII碼存入ASC和ASC+1單元分析I主 執(zhí)行ACALL指令時(shí)堆棧變子程序?qū)⒁獔?zhí)RET指令時(shí)的堆主 執(zhí)行ACALL指令時(shí)堆棧變子程序?qū)⒁獔?zhí)RET指令時(shí)的堆子程序返回后堆棧出口參棧出口參棧參子程子程運(yùn)算程序設(shè)MCS-51只運(yùn)算程序設(shè)MCS-51只有單字節(jié)運(yùn)算指令,實(shí)際常用多字節(jié)的運(yùn)算,可寫成子序的形式供調(diào)用包括有符號(hào)、無符號(hào)的多字節(jié)加、減、乘、除運(yùn)算的程序分析:兩個(gè)8位有符號(hào)數(shù)的和可能超過8位數(shù)的表示范圍,可先將展最進(jìn)位丟失不R2、R3R2、R3分別存放兩個(gè)加數(shù)的擴(kuò)展例4.21(無符號(hào)多字節(jié)乘法):
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考前全天候備戰(zhàn)2023年高考數(shù)學(xué)試題及答案
- 精打細(xì)算的數(shù)學(xué)試題及答案
- 材料密封性能質(zhì)量控制重點(diǎn)基礎(chǔ)知識(shí)點(diǎn)
- 行政管理課程設(shè)置與試題答案建議
- 趨勢(shì)分析的行政管理試題及答案
- 火災(zāi)保潔的應(yīng)急預(yù)案方案(3篇)
- 車輛火災(zāi)應(yīng)急預(yù)案范文(3篇)
- 病房火災(zāi)應(yīng)急預(yù)案腳本(3篇)
- 2025年軟件設(shè)計(jì)師考試解題思路試題及答案
- 學(xué)習(xí)節(jié)奏的個(gè)性化調(diào)整2025年計(jì)算機(jī)二級(jí)VB考試試題及答案
- 《安全生產(chǎn)法解讀課件》
- (二模)臨沂市2025年高三高考模擬考試英語試題卷(含答案)
- 湖南省天壹名校聯(lián)盟2025屆高三5月適應(yīng)性考試(物理)
- 2025年上海長寧區(qū)高三二模高考英語試卷試題(含答案詳解)
- 印刷企業(yè)管理制度匯編
- 果洛藏族自治州瑪沁縣2024屆六年級(jí)下學(xué)期小升初真題數(shù)學(xué)試卷含解析
- DL/T 5352-2018 高壓配電裝置設(shè)計(jì)規(guī)范
- 甲烷氫呼氣試驗(yàn)ppt課件
- 不銹鋼方管尺寸及理論重量重量表
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院醫(yī)療質(zhì)量管理制度(共10頁)
- CNS4158H2040表面處理用鹽水噴霧試驗(yàn)法
評(píng)論
0/150
提交評(píng)論