版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章 MCS51匯編語言程序設(shè)計知識4.1 匯編語言的格式4.2 偽指令 4.3 匯編語言源程序的匯編過程4.4 MCS51匯編語言實用程序舉例下一頁上一頁4.1 匯編語言的格式 ORG 0000H ; 整個程序起始地址 AJMP MAIN ; 跳向主程序 ORG 0030H ; 主程序起始地址 MAIN: CLR C ; MAIN為程序標(biāo)號 LOOP: MOV A , R0 ADDC A, R1 INC R0 DJNZ R1, LOOP ;相對轉(zhuǎn)移 SJMP NEXT MOV R1, #03H NEXT: DEC R0 SJMP $ ;相當(dāng)于 LOOP1: SJMP LOOP1 END ;
2、 結(jié)束標(biāo)記下一頁上一頁 匯編語言格式: 地址 機器碼 源程序 注釋 ORG 0000H ; 整個程序起始地址0000 20 00 30 LJMP MAIN ; 跳向主程序 ORG 0030H ; 主程序起始地址0030 C3 MAIN: CLR C ; MAIN為程序標(biāo)號0031 E6 LOOP: MOV A , R00032 37 ADDC A, R10033 08 INC R00034 DA FB DJNZ R1, LOOP ;相對轉(zhuǎn)移0036 80 03 SJMP NEXT0038 78 03 MOV R0, #03H003A 18 NEXT: DEC R0003B 80FE SJMP
3、$ ;HERE: SJMP HERE END ; 結(jié)束標(biāo)記下一頁上一頁返回4.2 偽操作指令一、定位偽指令ORG(Origin) (設(shè)置程序起始地址)格式: 標(biāo)號: ORG nnnn:16位二進制數(shù),代表地址。功能:規(guī)定偽指令后面程序的匯編地址。下一頁上一頁二、定義字節(jié)偽指令DB(Define Byte)格式: 標(biāo)號: DB 項或項表:單字節(jié)二進制、十進制、十六進制數(shù),或以 括起來的字符串。功能:把項或項表的數(shù)值(字符用ASCII碼)存入從標(biāo)號開始的連續(xù)的程序存儲器單元。例三、定義字偽指令DW(Define Word)格式: 標(biāo)號: DW 項或項表:雙字節(jié)二進制、十進制、十六進制數(shù),或以 括起
4、來的字符串。功能:同DB,不同的是為16位數(shù)據(jù)功能:同DB,不同的是為16位數(shù)據(jù)。 ORG 1000HSEG1: DB 53H,74H,78H,1 ,2SEG2: DB 23H,DAY END(1000H)=53H(1001H)=74H(1002H)=78H(1003H)=31H(1004H)=32H(1005H)=23H(1006H)=44H(1007H)=41H(1008H)=59H下一頁上一頁四、預(yù)留存儲區(qū)DS(Define Storage)格式:標(biāo)號: DS 功能:由標(biāo)號指定單元開始,定義一個存儲區(qū),存儲區(qū)預(yù)留存儲單元數(shù)由表達式的值決定。五、賦值命令EQU格式: EQU 功能:將一個數(shù)
5、或特定的匯編符號賦給規(guī)定的字符名稱。先定義后使用。下一頁上一頁六、數(shù)據(jù)地址賦值命令DATA格式: DATA 功能:將數(shù)據(jù)地址或代碼地址賦給規(guī)定的字符名稱 先賦值,后使用!七、匯編結(jié)束命令END格式:標(biāo)號: END功能:END是匯編語言源程序的匯編結(jié)束標(biāo)志,在它后面所寫的指令均不予處理。八、位地址賦值命令BIT格式: BIT 位地址功能:把BIT右邊的位地址賦給它左邊的字符名稱。下一頁上一頁4.2 匯編語言源程序的匯編過程源程序交叉匯編程序列表文件 .LST目標(biāo)文件 .HEX單片機調(diào)試運行串行通信單片機指令偽指令.ASM編輯軟件下一頁上一頁圖片4.4 MCS51匯編語言實用程序舉例一、匯編語言程
6、序設(shè)計的基本步驟1、分析題意,明確要求;2、建立思路,確定算法;3、編制框圖,繪出流程;4、編寫程序,上機調(diào)試;1)合理分配存儲器單元和了解I/O接口地址。 2)按功能設(shè)計程序,明確各程序之間的相互關(guān)系。 3)用注釋行說明程序,便于閱讀、修改和調(diào)試。畫流程圖 畫流程圖是指用各種圖形、符號、指向線等來說明程序設(shè)計的過程。國際通用的圖形和符號說明如下:下一頁上一頁橢圓框:起止框,在程序的開始和結(jié)束時使用。矩形框:處理框,表示要進行的各種操作。菱形框:判斷框,表示條件判斷,以決定程序的流向。指向線:流程線,表示程序執(zhí)行的流向。圓 圈:連接符,表示不同頁之間的流程連接。各種幾何圖形符號如下圖所示。下一
7、頁上一頁二、實用程序舉例1. 延時1ms程序 ORG 2000H MOV A, #0A6HLOOP: DEC A JNZ LOOP NOP END(一)循環(huán)程序設(shè)計指令周期(Tp)1121定時時間: 1 (12)1661 2s1000 s1ms下一頁上一頁2. 延時Nms程序(入口:設(shè)定時時間Nms送入R0)DLY: MOV A, #0A6HLOOP: DEC A JNZ LOOP DJNZ R0,DLY RET1122定時時間:(1) 1(12)1662 (R0) 22sNms(2N4) s2DLY: MOV A, #0A5H NOP LOOP: DEC A JNZ LOOP NOP DJN
8、Z R0,DLY RET1122211(2) 2(12)1653 (R0) 22sNms4 s下一頁上一頁3. 多重循環(huán)延時程序DLY: MOV R6, #data1DLY1: MOV R5, #data2DLY2: MOV R4, #data3 DJNZ R4,$ DJNZ R5,DLY2 DJNZ R6,DLY1 RET1122定時時間:211 1(R4)22 (R5) 2(R6)2 2 s12下一頁上一頁(二)查表程序的設(shè)計查表就是根據(jù)自變量x,在表格中尋找y,使y=f(x)。用于查表的指令有兩條:MOVC A,APC;MOVC A,ADPTR;例、設(shè)計二位十六進制數(shù)與ASCII碼的轉(zhuǎn)換
9、程序。設(shè)數(shù)值在R2中,結(jié)果低位存在R2中,高位存在R3中。分析:對于2位16進制數(shù)必須進行2次查表,因此,取數(shù)后通過屏蔽的方法來實現(xiàn)高低位分開。下一頁上一頁;(A)(A)+(DPTR)(PC)(PC)+1,(A)(A)+(PC)(1)利用PC作基址的參考程序如下:HEXA: MOV A,R2ANL A,#0FHADD A,#DIS1 MOVC A,A+PC ;查表 1XCH A, R2 2 ANL A, #0F0H 1SWAP A 2ADD A,#DIS2 1MOVC A,A+PC ;查表 1MOV R3,A 1RET TABLE: DB 0 ,1 ,F(xiàn) ;ASCII表02H09H下一頁上一頁
10、(PC)當(dāng)(PC)當(dāng)+1(PC)當(dāng)+3(PC)當(dāng)+4(PC)當(dāng)+6(PC)當(dāng)+7(PC)當(dāng)+8(PC)當(dāng)+9 MOVC A,+DPTR 這條指令的應(yīng)用范圍較為廣泛,一般情況下,大多使用該指令,使用該指令時不必計算偏移量,使用該指令的優(yōu)點是表格可以設(shè)在64K程序存儲器空間內(nèi)的任何地方,而不像 MOVC A,A+PC那樣只設(shè)在PC下面的256個單元中,使用較方便。 上面的程序可改成如下形式:(2)利用DPTR作基址的參考程序如下 HEXASC: MOV DPTR,#TABLE MOV A,R2ANL A,#0FH MOVC A,A+DPTR;查表 XCH A, R2 ANL A, #0F0HSWA
11、P A; MOVC A,A+DPTR;查表 MOV R3,A RETTABLE:DB 30H,31H,32H,33H,34H;ASCII表 DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H下一頁上一頁例4-1 將40H存放的4位二進制數(shù),轉(zhuǎn)換為ASCII碼,結(jié)果存放在41H。ORG 2000H START: MOV A, 40H ;取二進制數(shù)放入AANL A, #0FH ;屏蔽高4位CLR CPUSH ACCSUBB A, #0AH ;CJNE A,#0AH,L1POP ACCL1:JC NEXT ;該數(shù)10,則轉(zhuǎn)到NEXTADD A, #07
12、HNEXT: ADD A, #30HMOV 41H, A ; ASCII碼存入41HSJMP $END(三) 分支程序設(shè)計基本分支程序:(1)若(A) 14H, 轉(zhuǎn)NEXT, 否則繼續(xù)執(zhí)行 (A) 14H相當(dāng)于(A) 14H相當(dāng)于(A) 15H CJNE A, #15H, LOOPLOOP: JNC NEXT CJNE A, #14H, LOOPLOOP: JNC NEXT CJNE A, #14H, LOOPLOOP: JC NEXT CJNE A,#data,rel;(A)=#data,繼續(xù) Cy0(A)#data, 轉(zhuǎn) Cy0(A)#data, 轉(zhuǎn) Cy1特點:只有時,Cy1下一頁上一頁
13、例1:按下面公式編寫程序, x為無符號數(shù),存在20h單元 y存放在21h單元。 ORG 0030H MOV A, 20H CJNE A, # 21H, LOOP1LOOP1: JC NEXT1 CJNE A, #40H, LOOP2LOOP2: JNC NEXT2 MOV B, #2 MUL AB AJMP NEXT2NEXT1: CPL ANEXT2: MOV 21H, A END最終結(jié)果存在 21h中分支程序例1下一頁上一頁例 在一個以MCS-51為核心的溫度控制器中,溫度傳感器輸出的電壓與溫度為非線性關(guān)系,傳感器輸出的電壓已由A/D轉(zhuǎn)換為10位二進制數(shù)。 根據(jù)測得的不同溫度下的電壓值數(shù)據(jù)
14、構(gòu)成一個表,表中放溫度值y,x為電壓值數(shù)據(jù)。設(shè)測得的電壓值x放入R2R3中,根據(jù)電壓值x,查找對應(yīng)的溫度值y,仍放入R2R3中。本例的x和y均為雙字節(jié)無符號數(shù)。程序如下: LTB2:MOV DPTR,#TAB2 MOV A,R3 CLR C RLC A MOV R3, A XCH A, R2 RLC A XCH R2, A ADD A, DPL ;(R2R3)+(DPTR)(DPTR)MOV DPL,A MOV A,DPH ADDC A,R2 MOV DPH,A CLR A MOVC A,A+DPTR ;查第一字節(jié) MOV R2,A ;第一字節(jié)存入R2中 CLR A INC DPTR MOVC
15、 A,A+DPTR ;查第二字節(jié) MOV R3,A ;第二字節(jié)存入R3中 RET TAB2:DW ;溫度值表例設(shè)有一個巡回檢測報警裝置,需對16路輸入進行檢測,每路有一最大允許值,為雙字節(jié)數(shù)。運行時,需根據(jù)測量的路數(shù),找出每路的最大允許值。看輸入值是否大于最大允許值,如大于就報警。根據(jù)上述要求,編一個查表程序。 取路數(shù)為x(0 x15),y為最大允許值,放在表格中。設(shè)進入查表程序前,路數(shù)x已放于R2中,查表后最大值y放于R3R4中。本例中的x為單字節(jié)數(shù),y為雙字節(jié)數(shù)。查表程序如下:TB3:MOV A,R2 ADD A,R2 ;(R2)*2(A) MOV R3,A ;保存指針 ADD A,#6
16、;加偏移量MOVC A,A+PC ;查第一字節(jié)XCH A,R3 ADD A,#3 MOVC A,A+PC ;查第二字節(jié) MOV R4,ARET TAB3: DW 1520,3721,42645,7580 ;最大值 ;表 DW 3483,32657,883,9943 DW 10000,40511,6758,8931 DW 4468,5871,13284,27808例4 一批單字節(jié)無符號數(shù),以R0為首地址指針,R2中為字節(jié)數(shù),將這批數(shù)進行升序排列。程序框圖如圖所示。SORT:MOV A,R0 ;MOV R1,AMOV A,R2;字節(jié)數(shù)送入R5MOV R5,ACLR F0;互換標(biāo)志位F0清零DEC R5;MOV A,R1; LOOP:MOV R3,A;INC R1;CLR C;MOV A,R1;比較大小SUBB A,R3;JNC LOOP1;SETB F0;互換標(biāo)志位F0置1MOV A,R3;XCH A,R1;兩個數(shù)互換DEC R1;XCH A,R1;INC R1 LOOP1:MOV A,R1 DJNZ R5,LOOP JB F0,SORT RET(四)散轉(zhuǎn)程序設(shè)計根據(jù)R7中的內(nèi)容,轉(zhuǎn)向各個子程序。 R70,轉(zhuǎn)入Prog0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024節(jié)能燈購買合同
- 2024版權(quán)購買合同模板
- 2024版工程安全生產(chǎn)許可證協(xié)議
- 2025年度新型綠色建筑材料出口買賣合同4篇
- 2024版廣告公司承包經(jīng)營合同
- 2025年靜電場治療儀項目投資可行性研究分析報告
- 2024版模特隱私保密協(xié)議書范本
- 2024年起重機安裝與安全教育培訓(xùn)合同范本3篇
- 2025年裝修工程保險服務(wù)合同2篇
- 2025年度個人旅游貸款連帶責(zé)任保證擔(dān)保合同4篇
- 割接方案的要點、難點及采取的相應(yīng)措施
- 2025年副護士長競聘演講稿(3篇)
- 2025至2031年中國臺式燃?xì)庠钚袠I(yè)投資前景及策略咨詢研究報告
- 原發(fā)性腎病綜合征護理
- (一模)株洲市2025屆高三教學(xué)質(zhì)量統(tǒng)一檢測 英語試卷
- 第三章第一節(jié)《多變的天氣》說課稿2023-2024學(xué)年人教版地理七年級上冊
- 2025年中國電科集團春季招聘高頻重點提升(共500題)附帶答案詳解
- 2025年度建筑施工現(xiàn)場安全管理合同2篇
- 建筑垃圾回收利用標(biāo)準(zhǔn)方案
- 2024年考研英語一閱讀理解80篇解析
- 樣板間合作協(xié)議
評論
0/150
提交評論