版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、4.1 匯編語言的格式匯編語言的格式4.2 偽指令偽指令 4.3 匯編語言源程序的匯編過程匯編語言源程序的匯編過程4.4 MCS51匯編語言實(shí)用程序舉例匯編語言實(shí)用程序舉例 ORG 0000H ; 整個(gè)程序起始地址整個(gè)程序起始地址 AJMP MAIN ; 跳向主程序跳向主程序 ORG 0030H ; 主程序起始地址主程序起始地址 MAIN: CLR C ; MAIN為程序標(biāo)號(hào)為程序標(biāo)號(hào) LOOP: MOV A , R0 ADDC A, R1 INC R0 DJNZ R1, LOOP ;相對(duì)轉(zhuǎn)移;相對(duì)轉(zhuǎn)移 SJMP NEXT MOV R1, #03H NEXT: DEC R0 SJMP $ ;相
2、當(dāng)于;相當(dāng)于 LOOP1: SJMP LOOP1 END ; 結(jié)束標(biāo)記結(jié)束標(biāo)記 匯編語言格式:匯編語言格式: 地址地址 機(jī)器碼機(jī)器碼 源程序源程序 注釋注釋 ORG 0000H ; 整個(gè)程序起始地址整個(gè)程序起始地址0000 20 00 30 LJMP MAIN ; 跳向主程序跳向主程序 ORG 0030H ; 主程序起始地址主程序起始地址0030 C3 MAIN: CLR C ; MAIN為程序標(biāo)號(hào)為程序標(biāo)號(hào)0031 E6 LOOP: MOV A , R00032 37 ADDC A, R10033 08 INC R00034 DA FB DJNZ R1, LOOP ;相對(duì)轉(zhuǎn)移;相對(duì)轉(zhuǎn)移003
3、6 80 03 SJMP NEXT0038 78 03 MOV R0, #03H003A 18 NEXT: DEC R0003B 80FE SJMP $ ;HERE: SJMP HERE END ; 結(jié)束標(biāo)記結(jié)束標(biāo)記一、定位偽指令一、定位偽指令ORG(Origin) (設(shè)置程序起始地址)(設(shè)置程序起始地址)格式格式: 標(biāo)號(hào):標(biāo)號(hào): ORG nnnn:16位二進(jìn)制數(shù),代表地址。位二進(jìn)制數(shù),代表地址。功能功能:規(guī)定偽指令后面程序的匯編地址。規(guī)定偽指令后面程序的匯編地址。二、定義字節(jié)偽指令二、定義字節(jié)偽指令DB(Define Byte)格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DB 項(xiàng)或項(xiàng)表:項(xiàng)或項(xiàng)表:單字節(jié)單字
4、節(jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以以 括起來的字符串。括起來的字符串。功能功能:把項(xiàng)或項(xiàng)表的數(shù)值(字符用:把項(xiàng)或項(xiàng)表的數(shù)值(字符用ASCII碼)存入從標(biāo)號(hào)開始碼)存入從標(biāo)號(hào)開始的連續(xù)的程序存儲(chǔ)器單元。的連續(xù)的程序存儲(chǔ)器單元。三、定義字偽指令三、定義字偽指令DW(Define Word)格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DW 項(xiàng)或項(xiàng)表:項(xiàng)或項(xiàng)表:雙字節(jié)雙字節(jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以 括起來的字符串。括起來的字符串。功能:功能:同同DB,不同的是為,不同的是為16位數(shù)據(jù)位數(shù)據(jù)功能:同功能:同DB,不同的,不同的是為是為16位數(shù)據(jù)。位數(shù)
5、據(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ù)留存儲(chǔ)區(qū)四、預(yù)留存儲(chǔ)區(qū)DS(Define Storage) 格式:格式:標(biāo)號(hào):標(biāo)號(hào): DS 功能功能:由標(biāo)號(hào)指定單元開始,定義一個(gè)存儲(chǔ)區(qū),存儲(chǔ)區(qū)預(yù)留存由標(biāo)號(hào)指定單元開始,定義一個(gè)存儲(chǔ)區(qū),存儲(chǔ)區(qū)預(yù)留存儲(chǔ)單元數(shù)由表達(dá)式的值決定。儲(chǔ)單元數(shù)由表達(dá)式的值決定。五、賦值命令五
6、、賦值命令EQU格式格式: EQU 功能:功能:將一個(gè)數(shù)或特定的匯編符號(hào)賦給規(guī)定的字符名稱。將一個(gè)數(shù)或特定的匯編符號(hào)賦給規(guī)定的字符名稱。先定先定義后使用。義后使用。六、數(shù)據(jù)地址賦值命令六、數(shù)據(jù)地址賦值命令DATA格式格式: DATA 功能:功能:將數(shù)據(jù)地址或代碼地址賦給規(guī)定的字符名稱將數(shù)據(jù)地址或代碼地址賦給規(guī)定的字符名稱 先賦值,后使用!先賦值,后使用!格式:格式:標(biāo)號(hào):標(biāo)號(hào): END功能:功能:END是匯編語言源程序的匯編結(jié)束標(biāo)志,是匯編語言源程序的匯編結(jié)束標(biāo)志,在它后面所寫的指令均不予處理。在它后面所寫的指令均不予處理。格式:格式: BIT 位地址位地址功能:功能:把把BIT右邊的位地址賦
7、給它左邊的字符右邊的位地址賦給它左邊的字符名稱。名稱。源源程程序序交叉交叉匯編匯編程序程序列表文件列表文件 .LST目標(biāo)文件目標(biāo)文件 .HEX單片機(jī)單片機(jī)調(diào)試運(yùn)行調(diào)試運(yùn)行串行通信串行通信單片機(jī)單片機(jī)指令指令偽指令偽指令.ASM編輯軟件編輯軟件一、匯編語言程序設(shè)計(jì)的基本步驟一、匯編語言程序設(shè)計(jì)的基本步驟1、分析題意,明確要求;、分析題意,明確要求;2、建立思路,、建立思路,確定算法確定算法;3、編制框圖,、編制框圖,繪出流程;繪出流程;4、編寫程序,上機(jī)調(diào)試;、編寫程序,上機(jī)調(diào)試;1 1)合理分配存儲(chǔ)器單元和了解)合理分配存儲(chǔ)器單元和了解I/OI/O接口地址。接口地址。 2 2)按功能設(shè)計(jì)程序,
8、明確各程序之間的相互關(guān)系。)按功能設(shè)計(jì)程序,明確各程序之間的相互關(guān)系。 3 3)用注釋行說明程序,便于閱讀)用注釋行說明程序,便于閱讀、修改和調(diào)試。修改和調(diào)試。畫流程圖畫流程圖 畫流程圖是指用各種圖形、符號(hào)、指向線等來說明畫流程圖是指用各種圖形、符號(hào)、指向線等來說明程序設(shè)計(jì)的過程。國際通用的圖形和符號(hào)說明如下:程序設(shè)計(jì)的過程。國際通用的圖形和符號(hào)說明如下:l橢圓框:起止框,在程序的開始和結(jié)束時(shí)使用。橢圓框:起止框,在程序的開始和結(jié)束時(shí)使用。l矩形框:處理框,表示要進(jìn)行的各種操作。矩形框:處理框,表示要進(jìn)行的各種操作。l菱形框:判斷框,表示條件判斷,以決定程序的流向。菱形框:判斷框,表示條件判斷
9、,以決定程序的流向。l指向線:流程線,表示程序執(zhí)行的流向。指向線:流程線,表示程序執(zhí)行的流向。l圓圓 圈:連接符,表示不同頁之間的流程連接。圈:連接符,表示不同頁之間的流程連接。l各種幾何圖形符號(hào)如下圖所示。各種幾何圖形符號(hào)如下圖所示。1. 延時(shí)延時(shí)1ms程序程序 ORG 2000H MOV A, #0A6HLOOP: DEC A JNZ LOOP NOP END指令周期(指令周期(Tp)1121定時(shí)時(shí)間:定時(shí)時(shí)間: 1 (12)1661 2 s1000 s1msDLY: MOV A, #0A6HLOOP: DEC A JNZ LOOP DJNZ R0,DLY RET1122定時(shí)時(shí)間:定時(shí)時(shí)間
10、:(1) 1(12)1662 (R0) 22 sNms(2N4) s2DLY: MOV A, #0A5H NOP LOOP: DEC A JNZ LOOP NOP DJNZ R0,DLY RET1122211(2) 2(12)1653 (R0) 22 sNms4 sDLY: MOV R6, #data1DLY1: MOV R5, #data2DLY2: MOV R4, #data3 DJNZ R4,$ DJNZ R5,DLY2 DJNZ R6,DLY1 RET1122定時(shí)時(shí)間:定時(shí)時(shí)間:211 1(R4)22 (R5) 2(R6)2 2 s12l用于查表的指令有兩條:用于查表的指令有兩條:lM
11、OVC A,APC;lMOVC A,ADPTR;例、設(shè)計(jì)二位十六進(jìn)制數(shù)與例、設(shè)計(jì)二位十六進(jìn)制數(shù)與ASCII碼的轉(zhuǎn)換程序。碼的轉(zhuǎn)換程序。設(shè)數(shù)值在設(shè)數(shù)值在R2中,結(jié)果低位存在中,結(jié)果低位存在R2中,高位存中,高位存在在R3中。中。分析:分析:對(duì)于對(duì)于2位位16進(jìn)制數(shù)必須進(jìn)行進(jìn)制數(shù)必須進(jìn)行2次查表,因此,取數(shù)后通次查表,因此,取數(shù)后通過屏蔽的方法來實(shí)現(xiàn)高低位分開。過屏蔽的方法來實(shí)現(xiàn)高低位分開。;(A)(A)+(DPTR)(PC)(PC)+1,(A)(A)+(PC)(1)利用)利用PC作基址的參考程序如下:作基址的參考程序如下:HEXA: MOV A,R2ANL A,#0FHADD A,#DIS1 M
12、OVC 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(PC)當(dāng)當(dāng)(PC)當(dāng)當(dāng)+1(PC)當(dāng)當(dāng)+3(PC)當(dāng)當(dāng)+4(PC)當(dāng)當(dāng)+6(PC)當(dāng)當(dāng)+7(PC)當(dāng)當(dāng)+8(PC)當(dāng)當(dāng)+9 MOVC A,+DPTR 這條指令的應(yīng)用范圍較為這條指令的應(yīng)用范圍較為廣泛,一般情況下,大多使用該指令,使用該指令廣泛,一般情況下,大多使用該指令,使用該指令時(shí)不必計(jì)算偏移量,使用該指令的優(yōu)點(diǎn)是表格可以時(shí)不必
13、計(jì)算偏移量,使用該指令的優(yōu)點(diǎn)是表格可以設(shè)在設(shè)在64K程序存儲(chǔ)器空間內(nèi)的任何地方,而不像程序存儲(chǔ)器空間內(nèi)的任何地方,而不像 MOVC A,A+PC那樣只設(shè)在那樣只設(shè)在PC下面的下面的256個(gè)單元個(gè)單元中,使用較方便。中,使用較方便。 上面的程序可改成如下形式:上面的程序可改成如下形式:l(2)利用利用DPTR作基址的參考程序如下作基址的參考程序如下 lHEXASC: MOV DPTR,#TABLE MOV A,R2ANL A,#0FH MOVC A,A+DPTR;查表;查表l XCH A, R2 l ANL A, #0F0HlSWAP A;l MOVC A,A+DPTR;查表;查表l MOV R
14、3, A l RETlTABLE: DB 30H,31H,32H,33H,34H ;ASCII表表l DB 35H,36H,37H,38H,39Hl DB 41H,42H,43H,44H,45H,46H例例4-1 將將40H存放的存放的4位二進(jìn)制數(shù),轉(zhuǎn)換為位二進(jìn)制數(shù),轉(zhuǎn)換為ASCII碼,結(jié)果存碼,結(jié)果存放在放在41H。ORG 2000H START: MOV A, 40H ;取二進(jìn)制數(shù)放入取二進(jìn)制數(shù)放入AANL A, #0FH ;屏蔽高屏蔽高4位位CLR CPUSH ACCSUBB A, #0AH ;CJNE A,#0AH,L1POP ACCL1:JC NEXT ;該數(shù)該數(shù)10,則轉(zhuǎn)到,則轉(zhuǎn)到
15、NEXTADD A, #07HNEXT: ADD A, #30HMOV 41H, A ; ASCII碼存入碼存入41HSJMP $END基本分支程序基本分支程序:(1)若()若(A) 14H, 轉(zhuǎn)轉(zhuǎn)NEXT, 否則繼續(xù)執(zhí)行否則繼續(xù)執(zhí)行 (A) 14H相當(dāng)于(相當(dāng)于(A) 14H相當(dāng)于(相當(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ù),繼續(xù) Cy0(A)#data, 轉(zhuǎn)轉(zhuǎn)
16、 Cy0(A)#data, 轉(zhuǎn)轉(zhuǎn) Cy1特點(diǎn):只有時(shí),特點(diǎn):只有時(shí),Cy1例例1:按下面公式編寫程序,:按下面公式編寫程序, x為無符號(hào)數(shù),存在為無符號(hào)數(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é)果存在最終結(jié)果存在 21h中中204020240 xxxxxxyl例例 在一個(gè)
17、以在一個(gè)以MCS-51為核心的溫度控制器中,溫度傳感為核心的溫度控制器中,溫度傳感器輸出的電壓與溫度為非線性關(guān)系,傳感器輸出的電壓已器輸出的電壓與溫度為非線性關(guān)系,傳感器輸出的電壓已由由A/D轉(zhuǎn)換為轉(zhuǎn)換為10位二進(jìn)制數(shù)。位二進(jìn)制數(shù)。 根據(jù)測得的不同溫度下的電壓值數(shù)據(jù)構(gòu)成一個(gè)表,根據(jù)測得的不同溫度下的電壓值數(shù)據(jù)構(gòu)成一個(gè)表,表中放溫度值表中放溫度值y,x為電壓值數(shù)據(jù)。設(shè)測得的電壓值為電壓值數(shù)據(jù)。設(shè)測得的電壓值x放入放入R2R3中,根據(jù)電壓值中,根據(jù)電壓值x,查找對(duì)應(yīng)的溫度值,查找對(duì)應(yīng)的溫度值y,仍放入,仍放入R2R3中。本例的中。本例的x和和y均為雙字節(jié)無符號(hào)數(shù)。均為雙字節(jié)無符號(hào)數(shù)。程序如下:程序
18、如下: 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é);查第一字節(jié) MOV R2,A ;第一字節(jié)存入;第一字節(jié)存入R2中中 CLR A INC DPTR MOVC A,A+DPTR ;查第二字節(jié);查第二字節(jié) MOV R3,A ;第二字節(jié)存入;第二字節(jié)存入R3中中 RET TAB2:DW ;溫度
19、值表;溫度值表例例設(shè)有一個(gè)巡回檢測報(bào)警裝置,需對(duì)設(shè)有一個(gè)巡回檢測報(bào)警裝置,需對(duì)16路輸入進(jìn)行檢路輸入進(jìn)行檢測,每路有一最大允許值,為雙字節(jié)數(shù)。運(yùn)行時(shí),測,每路有一最大允許值,為雙字節(jié)數(shù)。運(yùn)行時(shí),需根據(jù)測量的路數(shù),找出每路的最大允許值。看輸需根據(jù)測量的路數(shù),找出每路的最大允許值。看輸入值是否大于最大允許值,如大于就報(bào)警。根據(jù)上入值是否大于最大允許值,如大于就報(bào)警。根據(jù)上述要求,編一個(gè)查表程序。述要求,編一個(gè)查表程序。 取路數(shù)為取路數(shù)為x(0 x15),y為最大允許值,放在表格中。設(shè)為最大允許值,放在表格中。設(shè)進(jìn)入查表程序前,路數(shù)進(jìn)入查表程序前,路數(shù)x已放于已放于R2中,查表后最大中,查表后最大值
20、值y放于放于R3R4中。本例中的中。本例中的x為單字節(jié)數(shù),為單字節(jié)數(shù),y為雙字為雙字節(jié)數(shù)。查表程序如下:節(jié)數(shù)。查表程序如下:TB3: MOV A,R2 ADD A,R2 ;(R2)*2(A) MOV R3,A ;保存指針;保存指針 ADD A,#6 ;加偏移量;加偏移量MOVC A,A+PC ;查第一字節(jié);查第一字節(jié)XCH A,R3 ADD A,#3 MOVC A,A+PC ;查第二字節(jié);查第二字節(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é)無符號(hào)數(shù),以一批單字節(jié)無符號(hào)數(shù),以R0為首地址指針,為首地址指針,R2中中為字節(jié)數(shù),將這批數(shù)進(jìn)行
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村建房工程合同樣本
- 離婚協(xié)議書中教育投資規(guī)劃
- 增強(qiáng)現(xiàn)實(shí)行業(yè)關(guān)聯(lián)交易管理辦法
- 2024年度互聯(lián)網(wǎng)醫(yī)療服務(wù)平臺(tái)建設(shè)與運(yùn)營合同
- 城市大型學(xué)校周邊道路改造合同
- 城市綠化景觀養(yǎng)護(hù)施工合同
- 商用面包車出租合同范本
- 科技別墅租賃合同
- 體檢機(jī)構(gòu)醫(yī)師聘用合同模板
- 知識(shí)產(chǎn)權(quán)金融服務(wù)指南
- 企業(yè)如何利用新媒體做好宣傳工作課件
- 如何培養(yǎng)孩子的自信心課件
- 中醫(yī)藥膳學(xué)全套課件
- 頸脊髓損傷-匯總課件
- 齒輪故障診斷完美課課件
- 2023年中國鹽業(yè)集團(tuán)有限公司校園招聘筆試題庫及答案解析
- 大班社會(huì)《特殊的車輛》課件
- 野生動(dòng)物保護(hù)知識(shí)講座課件
- 早教托育園招商加盟商業(yè)計(jì)劃書
- 光色變奏-色彩基礎(chǔ)知識(shí)與應(yīng)用課件-高中美術(shù)人美版(2019)選修繪畫
- 前列腺癌的放化療護(hù)理
評(píng)論
0/150
提交評(píng)論