版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度油氣田打井工程結(jié)算合同樣本4篇
- 2025年度能源管理系統(tǒng)承包合同示例4篇
- 2025年度深井探測(cè)與打井技術(shù)合作框架協(xié)議4篇
- 2025年度地下車庫租賃合同(含充電樁安裝)4篇
- 二零二五美容院管理軟件合作開發(fā)協(xié)議4篇
- 二零二五美容院員工培訓(xùn)與發(fā)展合作協(xié)議書4篇
- 《執(zhí)業(yè)規(guī)范體系》課件
- 2025年度醇基液體燃料燃燒設(shè)備回收與再利用合同3篇
- 2025年抵押合同(個(gè)人與企業(yè))
- 2025年度門式起重機(jī)安裝調(diào)試及租賃一體化服務(wù)合同4篇
- 小學(xué)數(shù)學(xué)六年級(jí)解方程練習(xí)300題及答案
- 電抗器噪聲控制與減振技術(shù)
- 中醫(yī)健康宣教手冊(cè)
- 2024年江蘇揚(yáng)州市高郵市國有企業(yè)招聘筆試參考題庫附帶答案詳解
- 消費(fèi)醫(yī)療行業(yè)報(bào)告
- 品學(xué)課堂新范式
- GB/T 1196-2023重熔用鋁錠
- 運(yùn)輸行業(yè)員工崗前安全培訓(xùn)
- 公路工程安全風(fēng)險(xiǎn)辨識(shí)與防控手冊(cè)
- 幼兒園教師培訓(xùn):計(jì)數(shù)(數(shù)數(shù))的核心經(jīng)驗(yàn)
- 如何撰寫和發(fā)表高水平的科研論文-good ppt
評(píng)論
0/150
提交評(píng)論