單片機(jī)匯編課件_第1頁
單片機(jī)匯編課件_第2頁
單片機(jī)匯編課件_第3頁
單片機(jī)匯編課件_第4頁
單片機(jī)匯編課件_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、2.3 匯編語言程序設(shè)計(jì)匯編語言程序設(shè)計(jì)主要內(nèi)容1. 匯編語言格式及構(gòu)成2. 匯編源程序設(shè)計(jì)步驟及匯編3. 順序程序設(shè)計(jì)4. 分支程序設(shè)計(jì)5. 循環(huán)和查表程序設(shè)計(jì)6. 子程序設(shè)計(jì)2.3.1 匯編語言格式標(biāo)號(hào)段:操作碼段 操作數(shù)段;注釋段如:LP1: MOV R2, #10; 設(shè)置循環(huán)次數(shù)標(biāo)號(hào)段:指明所在指令操作碼字節(jié)所在的內(nèi)存地址。標(biāo)號(hào)由大寫英文字母開頭的字母和數(shù)字串組成,長度為18個(gè)字符。標(biāo)號(hào)段可省略。2.3.2 匯編語言構(gòu)成1. 指令性語句(助記符語句)2. 指示性語句(偽指令) a. ORG(起始匯編)偽指令 例:ORG 2000H; 指定程序存儲(chǔ)地址從2000H開始 b. END(結(jié)束

2、匯編)偽指令 例:END c. EQU(賦值)偽指令 字符名稱 EQU 數(shù)據(jù)或匯編符 ;將右邊的數(shù)據(jù)或匯編符賦給左邊的字符名稱匯編語言格式及構(gòu)成例如:AA EQU R1 ;AA當(dāng)作寄存器R1使用 A10 EQU 10H ;A10=10H DELAY EQU 07E6H ; DELAY=07E6H MOV R0 , A10 MOV A , AA LCALL DELAYd. DATA(數(shù)據(jù)地址賦值)偽指令 字符名稱 DATA 表達(dá)式 ;將右邊表達(dá)式(8位)賦左邊, ;只能是數(shù)據(jù)或地址等DATA型 字符名稱 XDATA 表達(dá)式; 16位 例: AA DATA 35H DELAY XDATA 0A7E

3、6H e. DB(字節(jié)定義)偽指令 標(biāo)號(hào): DB 項(xiàng)或項(xiàng)表 例: TAB: DB 45H,73,A ;將45H、73、A依次存放 ;入TAB地址開始的存儲(chǔ)單元 匯編語言格式及構(gòu)成2.3.3 匯編源程序設(shè)計(jì)步驟及匯編源程序設(shè)計(jì)步驟:1)擬定設(shè)計(jì)任務(wù)書,設(shè)計(jì)任務(wù)書包括:程序功能、技術(shù)指標(biāo)、精度等級(jí)、實(shí)施方案、工程進(jìn)度、所需設(shè)備、研制費(fèi)用、人員分工2)建立數(shù)學(xué)模型3)確立算法4)繪制程序流程圖5)編制匯編語言源程序6)上機(jī)調(diào)試匯編語言源程序的匯編人工匯編機(jī)器匯編匯編語言格式及構(gòu)成返回2.3.4 順序程序設(shè)計(jì)例題1:求一個(gè)16位二進(jìn)制負(fù)數(shù)的補(bǔ)碼。設(shè)此16位二進(jìn)制數(shù)存于NUM、NUM+1單元 解:補(bǔ)碼=

4、反碼+1ORG 1000HNUM DATA 20HMOV R0,#NUMMOV A,R0 CPL AADD A,#01HMOV R0,AINC R0 MOV A,R0 CPL AADDC A,#00HMOV R0,ASJMP $END順序程序設(shè)計(jì)返回課72.3.6 循環(huán)和查表程序設(shè)計(jì)循環(huán)和查表程序設(shè)計(jì)例題3:已知內(nèi)部RAM ADDR為始址的無符號(hào)數(shù)數(shù)據(jù)塊的塊長存儲(chǔ)于LEN單元內(nèi),請(qǐng)編程找出數(shù)據(jù)塊中的最大數(shù)并存入MAX單元解: ORG 1000H LEN DATA 31H MAX DATA 32H MOV R0,#ADDR ;R0指向數(shù)據(jù)塊,初始化為數(shù)據(jù)塊首地址 MOV MAX, #00H ;M

5、AX單元初始化,清零LOOP:MOV A,R0 ;開始循環(huán)體,將一個(gè)數(shù)取到A CJNE A,MAX,BRCH;比較該數(shù)與MAX的大小BRCH:JC NEXT ;若該數(shù)小,則進(jìn)行下一次循環(huán) XCH A,MAX ;若該數(shù)大,則與MAX交換NEXT:INC R0 ;為下一次循環(huán)做準(zhǔn)備 DJNZ LEN,LOOP ;判斷循環(huán)次數(shù) SJMP $ END返回例題4:R0的低四位對(duì)應(yīng)一個(gè)16進(jìn)制數(shù)碼,編寫程序,將該數(shù)碼對(duì)應(yīng)字符的ASCII編碼送入R1。(例如:若R0的低4位為1110B,對(duì)應(yīng)16進(jìn)制數(shù)碼E,則將字符E的ASCII碼送入R1) 9 8 7 6 5 4 3 2 1 0 SJMP $ MOV R0

6、, A MOVC A, A+PC 解: ORG 1000H MOV A, R0 ANL A, #0FH ADD A, #03H MOVC A, A+PC ; 查表指令 MOV R1, A ;指令長度為一個(gè)字節(jié) SJMP $ ;指令長度為兩個(gè)字節(jié)ASCTAB:DB 0, 1, 2, 3, 4 ; 制表 DB 5, 6, 7, 8, 9 DB A, B, C, D, E , F END循環(huán)和查表程序設(shè)計(jì)2.3.7 子程序設(shè)計(jì) 子程序可自動(dòng)保護(hù)斷點(diǎn)(即主程序中下一條指令的地址),但不會(huì)自動(dòng)保護(hù)現(xiàn)場(chǎng)(即運(yùn)行子程序前的寄存器狀態(tài)),若要保護(hù)現(xiàn)場(chǎng),則在子程序的開始部分用壓入堆棧命令保護(hù)現(xiàn)場(chǎng),在結(jié)束部分用彈

7、出堆棧命令恢復(fù)現(xiàn)場(chǎng) 可利用寄存器、存儲(chǔ)單元或堆棧進(jìn)行子程序的入口參數(shù)和出口參數(shù)傳遞例題5:設(shè)MDA和MDB內(nèi)有兩數(shù)a和b,請(qǐng)編出求c=a2+b2并把c送入MDC的程序,設(shè)a和b皆為小于10的整數(shù) SQRTABSQR100 81 64 49 36 25 表 16 9 4 1 0 RETMOVC A,A+PC子程序設(shè)計(jì) ORG 1000H MDA DATA 20H MDB DATA 21 MDC DATA 22H MOV A, MDA ;入口參數(shù)傳遞 ACALL SQR ;調(diào)用子程序 MOV R1, A MOV A, MDB ACALL SQR ADD A, R1 MOV MDC, A SJMP

8、$SQR:ADD A, #01 ;子程序 MOVC A, A+PC RET ;RET為一個(gè)字節(jié)SQRTAB:DB 0, 1, 4, 9, 16 ;平方表 DB 25, 36, 49, 64, 81 END子程序設(shè)計(jì)練習(xí)1:外部RAM從2000H到2100H有一數(shù)據(jù)塊,請(qǐng)編出將它們傳送到3000H到3100H區(qū)域的程序。練習(xí)2:某系有200名學(xué)生參加外語統(tǒng)考,若成績存放在8031外部RAM始址為ENGLISH的連續(xù)存儲(chǔ)單元,現(xiàn)決定給成績?cè)?5分100分之間的學(xué)生頒發(fā)A級(jí)合格證書,給成績?cè)?0分94分之間的學(xué)生頒發(fā)B級(jí)合格證書。試編一程序,可以統(tǒng)計(jì)A級(jí)和B級(jí)證書的學(xué)生人數(shù),并把統(tǒng)計(jì)結(jié)果分別存入內(nèi)部

9、RAM的GRADA和GRADB單元。練習(xí)3(思考):已知:在內(nèi)部RAM中,共有兩組無符號(hào)四字節(jié)被加數(shù)和加數(shù)分別存放在FIRST和SECOND為始址的區(qū)域(低字節(jié)在前,高字節(jié)在后),請(qǐng)編程求和(設(shè)和也為四字節(jié)),并把和存于SUM開始的區(qū)域。練習(xí)4:已知MDA和MDB內(nèi)分別存有兩個(gè)小于5的整數(shù),請(qǐng)用查表子程序?qū)崿F(xiàn)C=a2+2ab+b2,并把和存于MDC單元練習(xí)5:設(shè)晶振頻率為6MHz,試編寫一能延時(shí)20ms的子程序。匯編語言程序設(shè)計(jì)練習(xí)6(思考):已知內(nèi)部RAM單元MA和MB中分別有兩個(gè)有符號(hào)數(shù),請(qǐng)編一減法子程序,并把差存入RESULT和RESULT+1中問題:有符號(hào)數(shù)的減法,如(-98)-98因?yàn)?8D=62H=0110 0010B -98D=1001 1110則 1001 1110B- 0110 0010B=0011 1100B=3CH=3*16+12=60,結(jié)果不對(duì)算法:將帶符號(hào)數(shù)進(jìn)行兩字節(jié)擴(kuò)展,則高字節(jié)的各個(gè)位都與符號(hào)位相同 -98=1111 1111 1001 1110B 98=0000 0000 0110 0010B (-98)-98=1111 1111 0011 1100B 為負(fù)數(shù),轉(zhuǎn)換為10進(jìn)制數(shù):減1

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論