匯編語(yǔ)言程序設(shè)計(jì)編程方法、技巧_第1頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)編程方法、技巧_第2頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)編程方法、技巧_第3頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)編程方法、技巧_第4頁(yè)
匯編語(yǔ)言程序設(shè)計(jì)編程方法、技巧_第5頁(yè)
已閱讀5頁(yè),還剩36頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、15:56第4章 匯編語(yǔ)言程序設(shè)計(jì)及知識(shí)4.1 4.1 編程的步驟、方法和技巧編程的步驟、方法和技巧4.2 4.2 匯編語(yǔ)言源程序的編輯和匯編匯編語(yǔ)言源程序的編輯和匯編15:564.1 4.1 編程的步驟、方法和技巧編程的步驟、方法和技巧4.1.1 4.1.1 編程的步驟編程的步驟4.1.2 4.1.2 編程的方法和技巧編程的方法和技巧4.1.3 4.1.3 匯編語(yǔ)言程序的基本結(jié)構(gòu)匯編語(yǔ)言程序的基本結(jié)構(gòu)15:564.1.1 4.1.1 編程的步驟編程的步驟一、分析問題一、分析問題二、確定算法二、確定算法三、畫程序流程圖三、畫程序流程圖四、編寫程序四、編寫程序15:56一、分析問題 對(duì)需要解決的

2、問題進(jìn)行分析,以求對(duì)問對(duì)需要解決的問題進(jìn)行分析,以求對(duì)問題由正確的理解。題由正確的理解。 解決問題的任務(wù)是什么?解決問題的任務(wù)是什么? 工作過程?工作過程? 現(xiàn)有的條件,已知數(shù)據(jù),對(duì)運(yùn)算的精度現(xiàn)有的條件,已知數(shù)據(jù),對(duì)運(yùn)算的精度和速度方面的要求?和速度方面的要求? 設(shè)計(jì)的硬件結(jié)構(gòu)是否方便編程?設(shè)計(jì)的硬件結(jié)構(gòu)是否方便編程?15:56二、確定算法 算法是如何將實(shí)際問題轉(zhuǎn)化成程序模塊算法是如何將實(shí)際問題轉(zhuǎn)化成程序模塊來(lái)處理。來(lái)處理。 在編程以前,先要對(duì)幾種不同的算法進(jìn)在編程以前,先要對(duì)幾種不同的算法進(jìn)行分析、比較,找出最適宜的算法行分析、比較,找出最適宜的算法15:56三、畫程序流程圖程序流程圖是使用

3、各種圖形、符號(hào)、有向線段等來(lái)說(shuō)明程序設(shè)計(jì)程序流程圖是使用各種圖形、符號(hào)、有向線段等來(lái)說(shuō)明程序設(shè)計(jì)過程的一種直觀的表示。過程的一種直觀的表示。流程圖步驟分得越細(xì)致,編寫程序是也越方便。流程圖步驟分得越細(xì)致,編寫程序是也越方便。畫流程圖是程序結(jié)構(gòu)設(shè)計(jì)是采用的一種重要手段。畫流程圖是程序結(jié)構(gòu)設(shè)計(jì)是采用的一種重要手段。一個(gè)系統(tǒng)軟件有總的流程圖(主程序框圖)和局部的流程圖。一個(gè)系統(tǒng)軟件有總的流程圖(主程序框圖)和局部的流程圖。流程圖常采用的圖形和符號(hào)。流程圖常采用的圖形和符號(hào)。15:56橢圓框橢圓框或桶形框或桶形框:表示程序的開始或結(jié)束。矩形框矩形框:表示要進(jìn)行的工作。:表示要進(jìn)行的工作。菱形框菱形框:

4、表示要判斷的事情,菱形框內(nèi):表示要判斷的事情,菱形框內(nèi)的表達(dá)式表示要判斷的內(nèi)容。的表達(dá)式表示要判斷的內(nèi)容。圓圈圓圈:表示連接點(diǎn):表示連接點(diǎn)指向線指向線:表示程序的流向:表示程序的流向15:56四、編寫程序 用用89C51匯編語(yǔ)言編寫的源程序行(一條匯編語(yǔ)言編寫的源程序行(一條語(yǔ)句)包括四個(gè)部分,也叫四個(gè)字段:語(yǔ)句)包括四個(gè)部分,也叫四個(gè)字段:標(biāo)號(hào)標(biāo)號(hào):操作碼操作碼操作數(shù)操作數(shù);注釋注釋 每個(gè)字段之間要用分隔符分隔,而每個(gè)字段內(nèi)每個(gè)字段之間要用分隔符分隔,而每個(gè)字段內(nèi)部不能使用分隔符??梢杂米鞣指舴姆?hào):部不能使用分隔符。可以用作分隔符的符號(hào):空格空格“ ”、冒號(hào)、冒號(hào)“:”、逗號(hào)、逗號(hào)“,”

5、、分、分號(hào)號(hào)“;”等。等。例:例:LOOP:MOV A,#00H;立即數(shù);立即數(shù)00HA15:56標(biāo)號(hào) 標(biāo)號(hào)是用戶定義的符號(hào)地址。標(biāo)號(hào)是用戶定義的符號(hào)地址。 一條指令的標(biāo)號(hào)是該條指令的符號(hào)名字,標(biāo)號(hào)的值是一條指令的標(biāo)號(hào)是該條指令的符號(hào)名字,標(biāo)號(hào)的值是匯編這條指令時(shí)指令的地址。匯編這條指令時(shí)指令的地址。 標(biāo)號(hào)由以英文字母開始的標(biāo)號(hào)由以英文字母開始的18個(gè)字母或數(shù)字組成,以個(gè)字母或數(shù)字組成,以冒號(hào)冒號(hào)“:”結(jié)尾。結(jié)尾。 標(biāo)號(hào)可以由賦值偽指令賦值,如果沒有賦值,匯編程標(biāo)號(hào)可以由賦值偽指令賦值,如果沒有賦值,匯編程序把存放該指令目標(biāo)碼第一字節(jié)的存儲(chǔ)單元的地址賦序把存放該指令目標(biāo)碼第一字節(jié)的存儲(chǔ)單元的地

6、址賦給該標(biāo)號(hào),所以,標(biāo)號(hào)又叫指令標(biāo)號(hào)。給該標(biāo)號(hào),所以,標(biāo)號(hào)又叫指令標(biāo)號(hào)。15:56操作碼 操作碼是必不可少的。操作碼是必不可少的。 它用一組字母符號(hào)表示指令的操作碼。它用一組字母符號(hào)表示指令的操作碼。在在89C51中,由中,由89C51的指令助記符組成。的指令助記符組成。15:56操作數(shù)匯編語(yǔ)言指令可能要求或不要求操作數(shù),所以這一字段可能有也匯編語(yǔ)言指令可能要求或不要求操作數(shù),所以這一字段可能有也可能沒有??赡軟]有。若有兩個(gè)操作數(shù),操作數(shù)之間用逗號(hào)若有兩個(gè)操作數(shù),操作數(shù)之間用逗號(hào)“,”分開。分開。操作數(shù)包括的內(nèi)容有:操作數(shù)包括的內(nèi)容有:(1)工作寄存器:由)工作寄存器:由PSW.3和和PSW.

7、4規(guī)定的當(dāng)前工作寄存器區(qū)中規(guī)定的當(dāng)前工作寄存器區(qū)中的的R0R7。(2)特殊功能寄存器:)特殊功能寄存器:21個(gè)個(gè)SFR的名字。的名字。(3)標(biāo)號(hào)名:賦值標(biāo)號(hào))標(biāo)號(hào)名:賦值標(biāo)號(hào)由匯編指令由匯編指令EQU等賦值的標(biāo)號(hào);指令標(biāo)等賦值的標(biāo)號(hào);指令標(biāo)號(hào)號(hào)指令標(biāo)號(hào)指示的指令的第一字節(jié)地址是該標(biāo)號(hào)的值。指令標(biāo)號(hào)指示的指令的第一字節(jié)地址是該標(biāo)號(hào)的值。(4)常數(shù):可用二進(jìn)制()常數(shù):可用二進(jìn)制(B)、十進(jìn)制、十六進(jìn)制()、十進(jìn)制、十六進(jìn)制(H),若常),若常數(shù)以字符開頭,前面加數(shù)以字符開頭,前面加0。(5)$:用來(lái)表示程序計(jì)數(shù)器的當(dāng)前值。:用來(lái)表示程序計(jì)數(shù)器的當(dāng)前值。(6)表達(dá)式:匯編時(shí),計(jì)算出表達(dá)式的值填入目

8、標(biāo)碼。)表達(dá)式:匯編時(shí),計(jì)算出表達(dá)式的值填入目標(biāo)碼。15:56注釋 注釋部分不是匯編語(yǔ)言的功能部分,只注釋部分不是匯編語(yǔ)言的功能部分,只是用語(yǔ)增加程序的可讀性。是用語(yǔ)增加程序的可讀性。 良好的注釋是匯編語(yǔ)言程序編寫中的重良好的注釋是匯編語(yǔ)言程序編寫中的重要組成部分。要組成部分。15:564.1.2 4.1.2 編程的方法和技巧編程的方法和技巧一、模塊化的程序設(shè)計(jì)方法一、模塊化的程序設(shè)計(jì)方法二、編程技巧二、編程技巧15:56一、模塊化的程序設(shè)計(jì)方法1、程序功能模塊化的優(yōu)點(diǎn)、程序功能模塊化的優(yōu)點(diǎn)2、劃分模塊的原則、劃分模塊的原則15:561、程序功能模塊化的優(yōu)點(diǎn) 單個(gè)模塊結(jié)構(gòu)的程序功能單一,易于編

9、寫、調(diào)試和修單個(gè)模塊結(jié)構(gòu)的程序功能單一,易于編寫、調(diào)試和修改。改。 便于分工,從而可使多個(gè)程序員同時(shí)進(jìn)行程序的編寫便于分工,從而可使多個(gè)程序員同時(shí)進(jìn)行程序的編寫和調(diào)試工作,加快軟件研制進(jìn)度。和調(diào)試工作,加快軟件研制進(jìn)度。 程序可讀性好,便于功能擴(kuò)充和版本升級(jí)。程序可讀性好,便于功能擴(kuò)充和版本升級(jí)。 對(duì)程序的修改可局部進(jìn)行,其它部分可以保持不變。對(duì)程序的修改可局部進(jìn)行,其它部分可以保持不變。 對(duì)于使用頻繁的子程序可以建立子程序庫(kù),便于多個(gè)對(duì)于使用頻繁的子程序可以建立子程序庫(kù),便于多個(gè)模塊調(diào)用。模塊調(diào)用。15:562、劃分模塊的原則 每個(gè)模塊應(yīng)具有獨(dú)立的功能,能產(chǎn)生一個(gè)明確的結(jié)果,每個(gè)模塊應(yīng)具有獨(dú)

10、立的功能,能產(chǎn)生一個(gè)明確的結(jié)果,即單模塊的功能高內(nèi)聚性。即單模塊的功能高內(nèi)聚性。 模塊之間的控制耦合應(yīng)盡量簡(jiǎn)單,數(shù)據(jù)耦合應(yīng)盡量少,模塊之間的控制耦合應(yīng)盡量簡(jiǎn)單,數(shù)據(jù)耦合應(yīng)盡量少,即模塊間的低耦合性??刂岂詈鲜侵改K進(jìn)入和退出即模塊間的低耦合性??刂岂詈鲜侵改K進(jìn)入和退出的條件及方式,數(shù)據(jù)耦合是指模塊間的信息交換方式、的條件及方式,數(shù)據(jù)耦合是指模塊間的信息交換方式、交換量的多少及交換頻繁程度。交換量的多少及交換頻繁程度。 模塊長(zhǎng)度適中。模塊長(zhǎng)度適中。20條條100條的范圍較合適。條的范圍較合適。15:56二、編程技巧1、盡量采用循環(huán)結(jié)構(gòu)和子程序。、盡量采用循環(huán)結(jié)構(gòu)和子程序。2、盡量少用無(wú)條件轉(zhuǎn)移

11、指令。、盡量少用無(wú)條件轉(zhuǎn)移指令。3、對(duì)于通用的子程序,考慮到其通用性,除了用于存放子程、對(duì)于通用的子程序,考慮到其通用性,除了用于存放子程序入口參數(shù)的寄存器外,子程序中用到的其他寄存器的內(nèi)容序入口參數(shù)的寄存器外,子程序中用到的其他寄存器的內(nèi)容應(yīng)壓入堆棧(返回前再?gòu)棾觯?,即保護(hù)現(xiàn)場(chǎng)。應(yīng)壓入堆棧(返回前再?gòu)棾觯幢Wo(hù)現(xiàn)場(chǎng)。4、在中斷處理程序中,除了要保護(hù)處理程序中用到的寄存器、在中斷處理程序中,除了要保護(hù)處理程序中用到的寄存器外,還要保護(hù)標(biāo)志寄存器。外,還要保護(hù)標(biāo)志寄存器。5、用累加器傳遞入口參數(shù)或返回參數(shù)比較方便,在子程序中,、用累加器傳遞入口參數(shù)或返回參數(shù)比較方便,在子程序中,一般不必把累加

12、器內(nèi)容壓入堆棧。一般不必把累加器內(nèi)容壓入堆棧。15:564.1.3 4.1.3 匯編語(yǔ)言程序的基本結(jié)構(gòu)匯編語(yǔ)言程序的基本結(jié)構(gòu)一、順序程序一、順序程序二、分支程序二、分支程序三、循環(huán)程序三、循環(huán)程序15:56一、順序程序 順序程序是最簡(jiǎn)單的程序結(jié)構(gòu),即順序程序是最簡(jiǎn)單的程序結(jié)構(gòu),即順序結(jié)構(gòu)。順序結(jié)構(gòu)。 程序按順序一條一條地執(zhí)行指令程序按順序一條一條地執(zhí)行指令。15:56二、分支程序 程序分支是通過條件轉(zhuǎn)移指令實(shí)現(xiàn)的,即根據(jù)條件對(duì)程序程序分支是通過條件轉(zhuǎn)移指令實(shí)現(xiàn)的,即根據(jù)條件對(duì)程序的執(zhí)行進(jìn)行判斷、滿足條件則進(jìn)行程序轉(zhuǎn)移,不滿足條件的執(zhí)行進(jìn)行判斷、滿足條件則進(jìn)行程序轉(zhuǎn)移,不滿足條件就順序執(zhí)行程序。

13、就順序執(zhí)行程序。 分為分為單分支單分支和和多分支多分支結(jié)構(gòu)結(jié)構(gòu)。 條件判斷指令條件判斷指令JZ、JNZ、CJNE、DJNZ等等 位狀態(tài)作為條件的指令位狀態(tài)作為條件的指令JC、JNC、JB、JNB、JBC JMP A+DPTR 散轉(zhuǎn)指令散轉(zhuǎn)指令15:56圖4-1 分支程序結(jié)構(gòu)散轉(zhuǎn)指令轉(zhuǎn)向0分支轉(zhuǎn)向1分支轉(zhuǎn)向n-1分支轉(zhuǎn)向n分支K=0K=1K=n-1K=n15:56例例4-1: 128種分支轉(zhuǎn)移程序。種分支轉(zhuǎn)移程序。功能:根據(jù)入口條件轉(zhuǎn)移到功能:根據(jù)入口條件轉(zhuǎn)移到128個(gè)目的地址。個(gè)目的地址。入口:(入口:(R3)=轉(zhuǎn)移目的地址的序號(hào)轉(zhuǎn)移目的地址的序號(hào)00H7FH。出口:轉(zhuǎn)移到相應(yīng)子程序入口。出口

14、:轉(zhuǎn)移到相應(yīng)子程序入口。128個(gè)子程序首址JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP A+DPTRJMPTAB:AJMP ROUT00 AJMP ROUT01 AJMP ROUT7F說(shuō)明:此程序要求說(shuō)明:此程序要求128個(gè)轉(zhuǎn)移目的地址(個(gè)轉(zhuǎn)移目的地址(ROUT00 ROUT7FH)必須駐留)必須駐留在與絕對(duì)轉(zhuǎn)移指令在與絕對(duì)轉(zhuǎn)移指令A(yù)JMP相同的一個(gè)相同的一個(gè)2KB存儲(chǔ)區(qū)內(nèi)。存儲(chǔ)區(qū)內(nèi)。RL指令對(duì)變址部分乘以指令對(duì)變址部分乘以2,因?yàn)槊織l,因?yàn)槊織lAJMP指令占兩個(gè)字節(jié)。指令占兩個(gè)字節(jié)。15:56三、循環(huán)程序 在程序運(yùn)行時(shí),有時(shí)需要連續(xù)重復(fù)執(zhí)行某段程序,可

15、在程序運(yùn)行時(shí),有時(shí)需要連續(xù)重復(fù)執(zhí)行某段程序,可以使用循環(huán)程序。其結(jié)構(gòu)包括四部分:以使用循環(huán)程序。其結(jié)構(gòu)包括四部分: 1、置循環(huán)初值、置循環(huán)初值 2、循環(huán)體(循環(huán)工作部分)、循環(huán)體(循環(huán)工作部分) 3、修改控制變量、修改控制變量 4、循環(huán)控制部分、循環(huán)控制部分 其組織方式如圖其組織方式如圖4-2所示。所示。15:561、置循環(huán)初值 對(duì)于循環(huán)程序中所使用的工作單元,在對(duì)于循環(huán)程序中所使用的工作單元,在循環(huán)開始時(shí)應(yīng)置初值。循環(huán)開始時(shí)應(yīng)置初值。 例如,工作寄存器設(shè)置計(jì)數(shù)初值,累加例如,工作寄存器設(shè)置計(jì)數(shù)初值,累加器器A清清0,以及設(shè)置地址指針、長(zhǎng)度等。,以及設(shè)置地址指針、長(zhǎng)度等。15:562、循環(huán)體(

16、循環(huán)工作部分) 重復(fù)執(zhí)行的程序段部分,分為循環(huán)工作重復(fù)執(zhí)行的程序段部分,分為循環(huán)工作部分和循環(huán)控制部分。部分和循環(huán)控制部分。 循環(huán)控制部分每循環(huán)一次,檢查結(jié)束條循環(huán)控制部分每循環(huán)一次,檢查結(jié)束條件,當(dāng)滿足條件時(shí),就停止循環(huán),往下件,當(dāng)滿足條件時(shí),就停止循環(huán),往下繼續(xù)執(zhí)行其他程序繼續(xù)執(zhí)行其他程序15:563、修改控制變量 在循環(huán)程序中,必須給出循環(huán)結(jié)束條件。在循環(huán)程序中,必須給出循環(huán)結(jié)束條件。 常見的是計(jì)數(shù)循環(huán),當(dāng)循環(huán)了一定的次常見的是計(jì)數(shù)循環(huán),當(dāng)循環(huán)了一定的次數(shù)后,就停止循環(huán)。數(shù)后,就停止循環(huán)。 在單片機(jī)中,一般用一個(gè)工作寄存器在單片機(jī)中,一般用一個(gè)工作寄存器Rn作為計(jì)數(shù)器,對(duì)該計(jì)數(shù)器賦初值作

17、為循作為計(jì)數(shù)器,對(duì)該計(jì)數(shù)器賦初值作為循環(huán)次數(shù)。每循環(huán)一次,計(jì)數(shù)器的值減環(huán)次數(shù)。每循環(huán)一次,計(jì)數(shù)器的值減1,即修改循環(huán)控制變量,當(dāng)計(jì)數(shù)器的置件即修改循環(huán)控制變量,當(dāng)計(jì)數(shù)器的置件為為0時(shí),就停止循環(huán)。時(shí),就停止循環(huán)。15:564、循環(huán)控制部分 根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。根據(jù)循環(huán)結(jié)束條件,判斷是否結(jié)束循環(huán)。 89C51可采用可采用DJNZ指令來(lái)自動(dòng)修改控制變量指令來(lái)自動(dòng)修改控制變量并能結(jié)束循環(huán)。并能結(jié)束循環(huán)。15:56置初值循環(huán)體循環(huán)修改循環(huán)控制退出循環(huán)未完完(a)置初值循環(huán)體循環(huán)修改循環(huán)控制退出循環(huán)未完完(b)圖4-2 循環(huán)組織方式流程圖15:56程序設(shè)計(jì)舉例程序設(shè)計(jì)舉例一 簡(jiǎn)單程序設(shè)計(jì)

18、舉例二 分支程序三 循環(huán)程序四 子程序設(shè)計(jì)舉例五 代碼轉(zhuǎn)換程序設(shè)計(jì)舉例六 運(yùn)算類程序設(shè)計(jì)舉例BACK15:56一、一、 簡(jiǎn)單程序設(shè)計(jì)舉例簡(jiǎn)單程序設(shè)計(jì)舉例例1 :拆字。將片內(nèi)RAM 20H單元的內(nèi)容拆成兩段,每段四位。并將它們分別存入21H與22H單元中。程序如下:解:解: ORG ORG 2000H2000HSTARTSTART:MOVMOVA A,20H20H ;(;(20H20H)A AANLANLA A,#0FH #0FH ;A#0FHAA#0FHAMOVMOV21H21H,A A ;(;(A A)(21H21H)MOVMOVA A,20H20H ;(;(20H20H)A ASWAPSW

19、APA A, ;A A0 03 3 AA4 47 7ANLANLA A,#0FH #0FH ;A#0FHAA#0FHAMOVMOV22H22H,A A ;(;(A A)(22H22H)SJMPSJMP$ $15:56例2:16位數(shù)求補(bǔ)。設(shè)16位二進(jìn)制數(shù)在R1R0中,求補(bǔ)結(jié)果存于R3R2中。解:解:ORGORG1000H1000HSTART:START: MOVMOVA A,R0R0CPLCPLA AADDADDA A,#01H#01HMOVMOVR2R2,A AMOVMOVA A,R1R1CPLCPLA AADDC ADDC A A,#00H#00HMOV MOV R3R3,A ASJMPSJ

20、MP$ $Back15:56例1:片內(nèi)RAM ONE和TWO兩個(gè)單元中存有兩個(gè)無(wú)符號(hào)數(shù),將兩個(gè)數(shù)中的小者存入RES單元。程序如下:二、二、 分支程序分支程序 解:解: ONE DATA 22H ONE DATA 22H; ;定義定義ONEONE TWO DATA 23H TWO DATA 23H;定義;定義TWOTWO RES DATA 30H RES DATA 30H;定義;定義RESRESBackMOV A,ONESTART:CJNE A,TWO,BIGSJMP STOREBIG:JCSTOREMOV A,TWOSTORE:MOV RES,A15:56三三 、循環(huán)程序、循環(huán)程序例1:數(shù)據(jù)塊

21、傳送。將片內(nèi)RAM 20H單元開始的10個(gè)字節(jié),傳送到片外RAM 1000H單元開始的單元中去。 解:程序如下:解:程序如下:ORGORG0800H0800HSTART:START: MOV MOV R0R0,#20H#20H MOVMOVDPTR,#1000HDPTR,#1000HMOVMOVR7,#0AHR7,#0AHLOOP:LOOP: MOVMOVA,R0A,R0MOVXMOVXDPTR,ADPTR,AINCINCR0R0INCINCDPTRDPTRDJNZDJNZR7,LOOPR7,LOOP SJMPSJMP$ $Back15:56三三 、循環(huán)程序、循環(huán)程序例2:統(tǒng)計(jì)字串長(zhǎng)度。內(nèi)存從

22、STRING開始有一字串,該字串以$(ASCII碼為24H)結(jié)束,試統(tǒng)計(jì)該字串長(zhǎng)度,結(jié)果存于NUM單元中 解:程序如下:ORG0800H NUMDATA 20H STRINGDATA 21H START:CLRAMOV R0,#STRING LOOP:CJNER0,#24H,NEXT SJMP COMP NEXT:INCA INCR0SJMPLOOP COMP:MOV NUM,ASJMP$Back15:56四、四、 子程序設(shè)計(jì)舉例子程序設(shè)計(jì)舉例例1:用查表法編一子程序,獲取數(shù)據(jù)表中第(40H)個(gè)數(shù)據(jù)。入口:待轉(zhuǎn)換數(shù)在(40H)出口:轉(zhuǎn)換后的數(shù)(40H) 解:解:ORGORG1000H1000H

23、TAB: TAB: DBDB30H,31H,32H,33H,34H,35H,36H,37H,30H,31H,32H,33H,34H,35H,36H,37H, 38H,39H38H,39HSUB1SUB1: MOV MOV A A,40H40H MOV MOV DPTRDPTR,#TAB#TABMOVC MOVC A A,A+DPTRA+DPTRMOV MOV 40H,A40H,ARETRET若將30H單元內(nèi)容為序號(hào)查表,利用SUB1子程序。 ORG ORG 2000H 2000H MAIN: MAIN: MOVMOV 40H 40H,30H30HLCALL SUB1LCALL SUB1MOV

24、MOV 30H 30H,40H40HSJMPSJMP $ $Back15:56五、五、 代碼轉(zhuǎn)換程序設(shè)計(jì)舉例代碼轉(zhuǎn)換程序設(shè)計(jì)舉例例:片外例:片外RAM2000H單元中有數(shù)字(單元中有數(shù)字(0-9),編一子程序?qū)⑵滢D(zhuǎn)換成),編一子程序?qū)⑵滢D(zhuǎn)換成ASCII碼字符。碼字符。ORGORG0100H0100HBAS2:BAS2: MOV MOV DPTRDPTR,#2000H#2000HMOVX MOVX A A,DPTRDPTRADD ADD A,#30HA,#30HMOVXMOVXDPTR,ADPTR,ARET 15:56六六 、運(yùn)算類程序設(shè)計(jì)舉例、運(yùn)算類程序設(shè)計(jì)舉例例1:片內(nèi)RAM30H單元開始有

25、10個(gè)字節(jié)的二進(jìn)制數(shù)。編一子程序,求它們的和。(和256)將和存入20H單元中。解:方法解:方法1 1ORG ORG 1000H1000HASUB1:ASUB1: MOV MOV R0R0,#30H#30HCLRCLRA AMOV MOV R7R7,#0AH#0AHCLRCLRC CLOOPLOOP: ADDCADDCA A,R0R0INCINCR0R0DJNZ DJNZ R7R7,LOOPLOOPMOV MOV 20H20H,A ARETRET方法方法2 2ORGORG2000H2000HASUB2:ASUB2: MOVMOVR0R0,#30H#30HMOVMOVA A,R0R0MOVMOVR7R7,#09#09CLRCLRC CLOOPLOOP: INCINCR0R0ADDC ADDC A A,R0R0DJNZ DJNZ R7R7,LOOPLOOPMOVMOV20H20H,A ARETRET15:56Back七、延時(shí)程序設(shè)計(jì)舉例七、延時(shí)程序設(shè)計(jì)舉例查表注意到執(zhí)行DJNZ指令要用兩個(gè)機(jī)器周期 執(zhí)行MOV Rn,#data要一個(gè)機(jī)器周期 執(zhí)行MOV dir,#data要兩個(gè)機(jī)器周期因此可以精確算出程序執(zhí)行時(shí)間。例:以機(jī)器周期為單位,計(jì)算以下程序的執(zhí)行時(shí)間。 MOV R7,#64H LOOP: MOV R6,#0FAH DJNZ R6,$

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論