《實(shí)用程序及其設(shè)計(jì)方法.ppt》由會員分享,可在線閱讀,更多相關(guān)《實(shí)用程序及其設(shè)計(jì)方法.ppt(17頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、,,第四章 實(shí)用程序及其設(shè)計(jì)方法,4.1 源程序格式 4.2 實(shí)用程序舉例,4.1 源程序格式,語句格式、偽指令,標(biāo)號: 操作碼 操作數(shù) ;注釋,4.1 源程序格式,語句格式:,ORG 起始匯編 END匯編結(jié)束 EQU賦值 DATA 數(shù)據(jù)地址賦值 BIT位地址符號 DB定義字節(jié) DW定義字 DS定義存儲空間,偽指令:,4.2 源程序格式,偽指令用法:,標(biāo)號:,ORG,(16位地址)起始匯編,例:,標(biāo)號:,END,,ORG 3000H,START:MOV A,#45H MOV R0, A END,4.2 源程序格式,(匯編結(jié)束),偽指令用法:,4.2 源程序格式,字符名 EQU數(shù)據(jù)或匯編符號
2、(賦值) REG EQU R7 HT1 EQU20H 字符名DATA數(shù)據(jù)或表達(dá)試(數(shù)據(jù)地址賦值) INDAT DATA8000H 字符名BIT位地址位地址符號 A1BIT30H,偽指令用法:,4.2 源程序格式,標(biāo)號:DB字節(jié)常數(shù)或字符(定義字節(jié)) ORG8000H TABLE1:DB78H,100,A,01001001B 標(biāo)號:DW字常數(shù)或字表(定義字) ORG8000H TB1:DW6754H,7AH,0CH 標(biāo)號:DS表達(dá)式(定義存儲空間) ORG8000H SPP:DS10 TB1:DB54H,7AH,0CH,4.2 實(shí)用程序舉例,1. 子程序(補(bǔ)充) 2. 延時(shí)子程序(補(bǔ)充)
3、 3. N分支轉(zhuǎn)移程序(4.1) 4. 128分支轉(zhuǎn)移程序(4.2) 5. 多精度無符號加法子程序(4.7) 6. 16進(jìn)制轉(zhuǎn)換為ASCII碼子程序(4.20) 7. I/O端口程序之一、之二(4.23、4.24略),1. 子程序(補(bǔ)充),用程序?qū)崿F(xiàn)C=a2+b2。設(shè)a、b均小于10。a存在21H單元,b存在22H單元,結(jié)果C存在20H單元。,ORG 1000H MAIN:MOVA, 21H LCALL SQR MOV20H,A MOVA,22H LCALL SQR ADDA,20H SJMP $ ORG2000H SQR:MOVB,A MULAB RET,4.2 實(shí)用程序舉例,2. 延時(shí)子程
4、序(補(bǔ)充),設(shè)計(jì)一個(gè)延時(shí)時(shí)間為10mS的子程序,設(shè)晶振頻率為6MHz。,ORG 1000H MOV R6,#0AH DL2:MOVR7,#XUTH DL1:NOP NOP DJNZR7,DL1 DJNZR6,DL2 RET,(1+1+2)*2*XUT=1000(uS) XUT=125=7DH,4.2 實(shí)用程序舉例,3. N分支轉(zhuǎn)移程序(參考4.1),N_JMP:MOVA,R3 MOVCPTR,#JMPTBL MOVCA,A+DPTR JMPA+DPTR JMPTBL:DBMEM0-JMPTBL DBMEM1-JMPTBL DBMEM2-JMPTBL MEM0: MEM1: MEM2:,根據(jù)入口
5、(R3)內(nèi)容(0、1、2、3)轉(zhuǎn)向N個(gè)程序段,4.2 實(shí)用程序舉例,4. 128種分支轉(zhuǎn)移程序(參考4.2),LJMP_128:MOV A6,R3 RLA MOVDPTR, #TABLE JMPA + DPTR JMPTAB:AJMPROUT00 AJMPROUT01 AJMPROUT02 AJMPROUT7F 功能:根據(jù)入口(R3)的內(nèi)容,轉(zhuǎn)移到128個(gè)以內(nèi)的地址 入口:R3,出口:ROUT00、 ROUT01、 ROUT7F,A中必須是偶數(shù),雙字節(jié)指令,4.2 實(shí)用程序舉例,,最多128個(gè)子程序入口,5. 多精度無符號加法子程序(4.7),ORG 10
6、00H ADD2:CLRC ADD12:MOV A,R0 ADDC A,R1 MOV R0, A INCR0 INCR1 DJNZR2,ADD12 JNCGET MOVR0,#01H SJMP$ RET GET:DECR0 RET,4.2 實(shí)用程序舉例,ORG 1000H MOVA,R0 ANLA,#0FH ADDA,#03H MOVCA,A+PC INCR0 MOVR0,A RET ASCT:DB30H,31H,32H,33H DB34H,35H,36H,37H DB38H,39H,41H,42H DB43H,44H,45H,46,6. 16進(jìn)制轉(zhuǎn)換為ASCII碼子程序(4.20),設(shè)一位1
7、6進(jìn)制數(shù)放在(R0)的低4位,要求將轉(zhuǎn)換后的ASCII碼送回(R0)的下一個(gè)地址(查表程序)。,,,3個(gè)字節(jié),R0,3,4.2 實(shí)用程序舉例,5 6,56H,補(bǔ)充:字符顯示子程序,設(shè)計(jì)一個(gè)將R0中十進(jìn)制數(shù)轉(zhuǎn)換成可以用數(shù)碼管顯示的字符碼。(補(bǔ)充),,ORG 1000H MOV A,R0 ANLA,#0FH ADDA,#02H MOVCA,A+PC MOVR0,A RET ASCT:DB03FH,06H,5BH,,,2個(gè)字節(jié),R0,,0 1 0 1 1 0 1 1,例:R=02H,4.2 實(shí)用程序舉例,7. I/O端口程序(4.23),略,4.2 實(shí)用程序舉例,習(xí)題7,4-1. 匯編語言的主要偽指令有幾條? 4.2.若晶振為12MHz,試編寫延時(shí)2mS和1S的子程序。 4.3.試編寫程序?qū)2R3中的二進(jìn)制數(shù)轉(zhuǎn)換成BCD碼,并存入R0指向的單元中。,