版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 匯編語(yǔ)言程序設(shè)計(jì),4.1 匯編語(yǔ)言基本概念 4.2 匯編語(yǔ)言程序設(shè)計(jì),4.1 匯編語(yǔ)言基本概念,4.1.1 程序設(shè)計(jì)語(yǔ)言 4.1.2 匯編語(yǔ)言的語(yǔ)句結(jié)構(gòu) 4.1.3 偽指令,返回本章首頁(yè),4.1.1 程序設(shè)計(jì)語(yǔ)言,按照語(yǔ)言的結(jié)構(gòu)及其功能可以分為三種: 1機(jī)器語(yǔ)言:機(jī)器語(yǔ)言是用二進(jìn)制代碼0和1表示指令和數(shù)據(jù)的最原始的程序設(shè)計(jì)語(yǔ)言。 2匯編語(yǔ)言:在匯編語(yǔ)言中,指令用助記符表示,地址、操作數(shù)可用標(biāo)號(hào)、符號(hào)地址及字符等形式來描述。 3高級(jí)語(yǔ)言:高級(jí)語(yǔ)言是接近于人的自然語(yǔ)言,面向過程而獨(dú)立于機(jī)器的通用語(yǔ)言。,返回本節(jié),4.1.2 匯編語(yǔ)言的語(yǔ)句結(jié)構(gòu),1匯編語(yǔ)言的指令類型 MCS-51單片機(jī)匯編語(yǔ)
2、言,包含兩類不同性質(zhì)的指令。 (1)基本指令:即指令系統(tǒng)中的指令。它們都是機(jī)器能夠執(zhí)行的指令,每一條指令都有對(duì)應(yīng)的機(jī)器碼。 (2)偽指令:匯編時(shí)用于控制匯編的指令。它們都是機(jī)器不執(zhí)行的指令,無機(jī)器碼。,2匯編語(yǔ)言的語(yǔ)句格式 匯編語(yǔ)言源程序是由匯編語(yǔ)句(即指令)組成的。匯編語(yǔ)言一般由四部分組成。 其典型的匯編語(yǔ)句格式如下: 標(biāo)號(hào):操作碼操作數(shù);注釋 START:MOVA,30H;A(30H),返回本節(jié),4.1.3 偽指令,1ORG:匯編起始地址 用來說明以下程序段在存儲(chǔ)器中存放的起始地址。 例如程序:ORG1000H START:MOVA,#20H MOVB,#30H 2EQU:賦值 給變量標(biāo)號(hào)
3、賦予一個(gè)確定的數(shù)值。,3DB:定義數(shù)據(jù)字節(jié) 把數(shù)據(jù)以字節(jié)數(shù)的形式存放在存儲(chǔ)器單元中。 4DW:定義數(shù)據(jù)字 按字的形式把數(shù)據(jù)存放在存儲(chǔ)單元中。 5DS:定義存儲(chǔ)區(qū) 從指定的地址單元開始,保留一定數(shù)量存儲(chǔ)單元。 6BIT:位定義 確定字符名為確定的位地址值。 7END:匯編結(jié)束,返回本節(jié),4.2 匯編語(yǔ)言程序設(shè)計(jì),4.2.1 匯編語(yǔ)方程序設(shè)計(jì)步驟 4.2.2 順序程序 4.2.3 分支程序 4.2.4 循環(huán)程序 4.2.5 子程序 4.2.6 位操作程序,返回本章首頁(yè),4.2.1 匯編語(yǔ)方程序設(shè)計(jì)步驟,1分析問題 2確定算法 3設(shè)計(jì)程序流程圖 4分配內(nèi)存單元 5編寫匯編語(yǔ)言源程序 6調(diào)試程序,返回
4、本節(jié),4.2.2 順序程序,順序程序是一種最簡(jiǎn)單,最基本的程序。 特點(diǎn):程序按編寫的順序依次往下執(zhí)行每一條指令,直到最后一條。 【例4.1】 將30H單元內(nèi)的兩位BCD碼拆開并轉(zhuǎn)換成ASCII碼,存入RAM兩個(gè)單元中。程序流程如圖4-1所示。參考程序如下: ORG2000H MOVA,30H;取值 ANLA,#0FH;取低4位,ADDA,#30H;轉(zhuǎn)換成ASCII碼 MOV32H,A;保存結(jié)果 MOVA,30H;取值 SWAPA;高4位與低4位互換 ANLA,#0FH;取低4位(原來的高4位) ADDA,#30H;轉(zhuǎn)換成ASCII碼 MOV31H,A;保存結(jié)果 SJMP$ END,圖4-1 拆
5、字程序流程圖,圖4-2 例4.2程序流程圖,【例4.2】 設(shè)X、Y兩個(gè)小于10的整數(shù)分別存于片內(nèi)30H、31H單元,試求兩數(shù)的平方和并將結(jié)果存于32H單元。 解:兩數(shù)均小于10,故兩數(shù)的平方和小于100,可利用乘法指令求平方。程序流程如圖4-2所示。參考程序如下: ORG2000H MOVA,30H;取30H單元數(shù)據(jù) MOVB,A;將X送入B寄存器,MULAB;求X2,結(jié)果在累加器中 MOVR1,A;將結(jié)果暫存于R1寄存器中 MOVA,31H;取31H單元數(shù)據(jù) MOVB,A;將Y送入B寄存器 MULAB;求Y2,結(jié)果在累加器中 ADDA,R1;求X2+ Y2 MOV32H,A;保存數(shù)據(jù) SJM
6、P$;暫停 END,圖4-2 例4.2程序流程圖,返回本節(jié),4.2.3 分支程序,1分支程序的基本形式 分支程序有三種基本形式,如圖4-3所示。 分支程序的設(shè)計(jì)要點(diǎn)如下: (1)先建立可供條件轉(zhuǎn)移指令測(cè)試的條件。 (2)選用合適的條件轉(zhuǎn)移指令。 (3)在轉(zhuǎn)移的目的地址處設(shè)定標(biāo)號(hào)。,圖4-3 分支程序結(jié)構(gòu)流程圖,2雙向分支程序設(shè)計(jì)舉例 【例4.3】 設(shè)X存在30H單元中,根據(jù)下式 X+2X0 Y =100X=0 求出Y值,將Y值存入31H單元。 XX0 解:根據(jù)數(shù)據(jù)的符號(hào)位判別該數(shù)的正負(fù),若最高位為0,再判別該數(shù)是否為0。程序流程如圖4-4所示。 參考程序如下:ORG1000H,MOVA,30H
7、;取數(shù) JBACC.7,NEG;負(fù)數(shù),轉(zhuǎn)NEG JZZER0 ;為零,轉(zhuǎn)ZER0 ADDA,#02H;為正數(shù),求X+2 AJMP SAVE;轉(zhuǎn)到SAVE,保存數(shù)據(jù) ZER0:MOVA,# 64H;數(shù)據(jù)為零,Y=100 AJMP SAVE;轉(zhuǎn)到SAVE,保存數(shù)據(jù) NEG:DEC A;CPLA;求X SAVE:MOV31H,A;保存數(shù)據(jù) SJMP;暫停,圖4-4 例4.3程序流程圖,3多向分支程序設(shè)計(jì)舉例 【例4.4】 根據(jù)R0的值轉(zhuǎn)向7個(gè)分支程序。 R010,轉(zhuǎn)向SUB0; R020,轉(zhuǎn)向SUB1; R060,轉(zhuǎn)向SUB5; R060,轉(zhuǎn)向SUB6; 解:利用JMP A+DPTR 指令直接給PC
8、賦值,使程序?qū)崿F(xiàn)轉(zhuǎn)移。程序流程如圖4-5所示。,參考程序如下: ORG 2000H MOV DPTR,#TAB;轉(zhuǎn)移指令表首地址 MOV A,R0;取數(shù) MOVB,#10 DIVAB ;A10,商在A中 CLRC RLC A;A2A JMP A+DPTR;PC A+DPTR TAB:AJMPSUB0;轉(zhuǎn)移指令表 AJMP SUB1 AJMPSUB2 AJMP SUB5 AJMPSUB6,圖4-5 多向分支程序流程圖,返回本節(jié),4.2.4 循環(huán)程序,1循環(huán)程序的結(jié)構(gòu)(如圖4-6所示) 循環(huán)程序一般包括如下四個(gè)部分: (1)初始化 (2)循環(huán)體 (3)循環(huán)控制 (4)結(jié)束 循環(huán)程序按結(jié)構(gòu)形式,有單
9、重循環(huán)與多重循環(huán)。 在多重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán)。 不允許循環(huán)相互交叉,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部(如圖4-7所示)。,圖4-6 循環(huán)結(jié)構(gòu)程序流程圖,圖4-7 多重循環(huán)示意圖,2循環(huán)程序設(shè)計(jì)舉例 【例4.5】有一數(shù)據(jù)塊從片內(nèi)RAM的30H單元開始存入,設(shè)數(shù)據(jù)塊長(zhǎng)度為10個(gè)單元。根據(jù)下式: X+2 X0 Y= 100 X=0 求出Y值,并將Y值放回原處。 X X0 解:設(shè)置一個(gè)計(jì)數(shù)器控制循環(huán)次數(shù),每處理完一個(gè)數(shù)據(jù),計(jì)數(shù)器減1。程序流程如圖4-8所示。,參考源程序如下: ORG2000H MOVR0,#10 MOVR1,#30H START:MOVA,R1;取數(shù) JBA
10、CC.7,NEG;若為負(fù)數(shù),轉(zhuǎn)NEG JZZER0;若為零,轉(zhuǎn)ZER0 ADDA,#02H;若為正數(shù),求X+2 AJMPSAVE;轉(zhuǎn)到SAVE,保存數(shù)據(jù) ZER0: MOVA,# 64H;數(shù)據(jù)為零,Y=100,AJMPSAVE;轉(zhuǎn)到SAVE,保存數(shù)據(jù) NEG: DECA CPLA;求X SAVE:MOVR1,A;保存數(shù)據(jù) INCR1;地址指針指向下一個(gè)地址 DJNZR0,START ;數(shù)據(jù)未處理完,繼續(xù)處理 SJMP;暫停,圖4-8 例4.5的程序流程圖,返回本節(jié),4.2.5 子程序,1子程序概念 所謂調(diào)用子程序,暫時(shí)中斷主程序的執(zhí)行,而轉(zhuǎn)到子程序的入口地址去執(zhí)行子程序。如圖4-10所示。調(diào)用
11、子程序應(yīng)注意: (1)子程序占用的存儲(chǔ)單元和寄存器。 (2)參數(shù)的傳遞。 (3)子程序經(jīng)過調(diào)用后得到的數(shù)據(jù)來完成程序之間的參數(shù)傳遞。 (4)嵌套調(diào)用與遞歸調(diào)用。如圖4-11所示。,圖4-10 子程序的調(diào)用與返回,圖4-11 子程序的嵌套調(diào)用與返回,2子程序設(shè)計(jì)舉例 【例4.8】 將4.4節(jié)中的例4.5改為子程序結(jié)構(gòu)。 解:數(shù)據(jù)塊中的十個(gè)數(shù)都需要進(jìn)行符號(hào)判斷并作相應(yīng)處理,可把一部分工作交給子程序完成,主程序只負(fù)責(zé)讀取數(shù)據(jù)、調(diào)用判斷處理子程序、保存數(shù)據(jù)、循環(huán)控制工作。源程序如下: ORG0000H MOVR0,#10 MOVR1,#30H,START:MOVA,R1;取數(shù) ACALLDISPOSE
12、;調(diào)用判斷、處理子程序 SAVE:MOVR1,A;保存數(shù)據(jù) INCR1;修改地址指針,指向下一個(gè)地址 DJNZR0,START;數(shù)據(jù)未處理完,繼續(xù)處理 SJMP;暫停 ORG0200H DISPOSE:JBACC.7,NEG;若為負(fù)數(shù),轉(zhuǎn)NEG,JZZER0;若為零,轉(zhuǎn)ZER0 ADDA,#02H;若為正數(shù),求X+2 AJMPBACK;轉(zhuǎn)到SAVE,保存數(shù)據(jù) ZER0:MOVA,#64H;數(shù)據(jù)為零,Y=100 AJMPBACK;轉(zhuǎn)到SAVE,保存數(shù)據(jù) NEG:DECA CPLA;求X BACK:RET,返回本節(jié),4.2.6 位操作程序,【例4.9】 編寫一程序,實(shí)現(xiàn)圖4-12中的邏輯運(yùn)算電路。其中P3.1、P1.1、P1.0分別是單片機(jī)端口線上的信息,RS0、RS1是PSW寄存器中的兩個(gè)標(biāo)志位,30H、31H是兩個(gè)位地址,運(yùn)算結(jié)果由P1.0輸出。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 機(jī)電設(shè)備維修工安全生產(chǎn)規(guī)范模擬考核試卷含答案
- 水泥制成工班組協(xié)作水平考核試卷含答案
- 中藥炮炙工崗前實(shí)操掌握考核試卷含答案
- 杜美絲制造工崗前履職考核試卷含答案
- 2025年鑄鐵及相關(guān)金屬制衛(wèi)生、廚房器具、餐具合作協(xié)議書
- 2025年雕刻雕銑設(shè)備控制系統(tǒng)合作協(xié)議書
- 2025廣東深圳市人才流動(dòng)中心有限公司招聘筆試筆試歷年參考題庫(kù)附帶答案
- 2026年智能保溫取餐柜項(xiàng)目項(xiàng)目建議書
- 2025年江蘇省無錫市中考語(yǔ)文真題卷含答案解析
- 牛年介紹教學(xué)
- 消化內(nèi)鏡ERCP技術(shù)改良
- 云南師大附中2026屆高三1月高考適應(yīng)性月考卷英語(yǔ)(六)含答案
- 2026湖北隨州農(nóng)商銀行科技研發(fā)中心第二批人員招聘9人筆試備考試題及答案解析
- 騎行美食活動(dòng)方案策劃(3篇)
- 2026年上海市松江區(qū)初三語(yǔ)文一模試卷(暫無答案)
- 石化企業(yè)環(huán)保培訓(xùn)課件
- 2026年呂梁職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試備考試題帶答案解析
- 清華大學(xué)教師教學(xué)檔案袋制度
- 2025年新疆師范大學(xué)輔導(dǎo)員招聘考試真題及答案
- 人教版九年級(jí)物理上學(xué)期期末復(fù)習(xí)(知識(shí)速記+考點(diǎn)突破+考點(diǎn)練習(xí)題)含答案
- 電梯更新改造方案
評(píng)論
0/150
提交評(píng)論