版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第四章-1 本章重點:本章重點:匯編語言的構(gòu)成匯編語言的構(gòu)成 匯編語言程序設(shè)計匯編語言程序設(shè)計 講授內(nèi)容:講授內(nèi)容:程序設(shè)計方法和算法分析程序設(shè)計方法和算法分析 應用程序設(shè)計舉例應用程序設(shè)計舉例 第四章第四章 匯編語言程序設(shè)計匯編語言程序設(shè)計一、匯編語言的語句類型一、匯編語言的語句類型 MCS-51單片機匯編語言,包含兩類不同性質(zhì)的指單片機匯編語言,包含兩類不同性質(zhì)的指令語句。令語句。(1)指令性語句指令性語句:采用指令助記符構(gòu)成的匯編語言語:采用指令助記符構(gòu)成的匯編語言語句,必須符合匯編語言的語法規(guī)則。它們都是機器能句,必須符合匯編語言的語法規(guī)則。它們都是機器能夠執(zhí)行的指令,每一條指令語句在
2、匯編時都有對應的夠執(zhí)行的指令,每一條指令語句在匯編時都有對應的機器碼。機器碼。(2)偽指令語句:偽指令語句:匯編時用于控制匯編的指令語句。匯編時用于控制匯編的指令語句。它們都是機器不執(zhí)行的指令語句,匯編時不產(chǎn)生對應它們都是機器不執(zhí)行的指令語句,匯編時不產(chǎn)生對應的機器碼。的機器碼。 第四章-2 4.1 4.1 匯編語言的構(gòu)成匯編語言的構(gòu)成二、匯編語言的偽指令二、匯編語言的偽指令1. ORG匯編起始地址偽指令匯編起始地址偽指令 指令格式:指令格式: ORG m m為十六進制數(shù)或十進制。它規(guī)定了它下面的程序或數(shù)表應從為十六進制數(shù)或十進制。它規(guī)定了它下面的程序或數(shù)表應從ROM的的m地址處開始存放。一個
3、匯編語言源程序中,可以多次使用地址處開始存放。一個匯編語言源程序中,可以多次使用ORG命令,命令,地址一般應從小到大,且不能使各程序段出現(xiàn)重疊現(xiàn)象。地址一般應從小到大,且不能使各程序段出現(xiàn)重疊現(xiàn)象。2END 匯編結(jié)束偽指令匯編結(jié)束偽指令 指令格式:指令格式: END END指令用于終止源程序的匯編工作。一般一個源程序只能有一個指令用于終止源程序的匯編工作。一般一個源程序只能有一個END。 3EQU賦值偽指令賦值偽指令 指令格式:指令格式: 字符名稱字符名稱 EQU 匯編符號或數(shù)據(jù)匯編符號或數(shù)據(jù) EQU是將一個數(shù)據(jù)或匯編符號賦予規(guī)定的字符名稱,匯編程序會自是將一個數(shù)據(jù)或匯編符號賦予規(guī)定的字符名稱
4、,匯編程序會自動將動將EQU右邊的數(shù)據(jù)或匯編符號(地址或常數(shù))賦給左邊的字符名稱。右邊的數(shù)據(jù)或匯編符號(地址或常數(shù))賦給左邊的字符名稱。字符名稱應該先定義后使用,所以該偽指令通常應在源程序的開頭。字符名稱應該先定義后使用,所以該偽指令通常應在源程序的開頭。 第四章-34DB定義字節(jié)偽指令定義字節(jié)偽指令指令格式:指令格式:標號:標號:DB 字節(jié)常數(shù)或數(shù)表。表明從該標號地址單元開始字節(jié)常數(shù)或數(shù)表。表明從該標號地址單元開始定義一個或若干個字節(jié)的數(shù)。例如:定義一個或若干個字節(jié)的數(shù)。例如: ORG 1000H TAB:DB 12H,34H,56H;從;從1000H單元開始存放數(shù)單元開始存放數(shù) DB 78
5、H,9AH,00H;換行,仍要先寫;換行,仍要先寫DB5DW定義字偽指令定義字偽指令指令格式:標號:指令格式:標號:DW 字常數(shù)或字數(shù)表字常數(shù)或字數(shù)表類似類似DB,但,但DW指從該標號地址單元開始,存放一個或若干個字的數(shù)。指從該標號地址單元開始,存放一個或若干個字的數(shù)。例如:例如: ORG 1500H TAB1:DW 1234H,9AH,10 偽指令偽指令DW則定義則定義1500H1505H單元的內(nèi)容依次為單元的內(nèi)容依次為12H、34H、00H、9AH、00H、0AH。第四章-46DATA數(shù)據(jù)地址賦值偽指令數(shù)據(jù)地址賦值偽指令指令格式:指令格式: 字符名稱字符名稱 DATA 表達式表達式作用類似
6、于作用類似于EQU,但是,但是EQU必須先定義后使用,而可以必須先定義后使用,而可以DATA先使用后定先使用后定義。義。7DS預留空間偽指令預留空間偽指令指令格式:指令格式:標號:標號: DS表達式表達式DS指定從標號地址單元開始,保留若干字節(jié)單元備用。例如:指定從標號地址單元開始,保留若干字節(jié)單元備用。例如: TAB2: DS100;通知匯編程序從;通知匯編程序從TAB2開始保留開始保留100個字節(jié)單元,以備源程序另用。個字節(jié)單元,以備源程序另用。8BIT位地址賦值偽指令位地址賦值偽指令指令格式:指令格式:字符名稱字符名稱 BIT 位地址位地址一般用來將位地址賦給字符名稱,以用戶編程和程序閱
7、讀。例如:一般用來將位地址賦給字符名稱,以用戶編程和程序閱讀。例如: M0 BIT 20H.0 MOV C, M0第四章-5 用匯編語言編寫程序,一般可分為以下幾個步驟:用匯編語言編寫程序,一般可分為以下幾個步驟: 1) 擬定設(shè)計任務書;擬定設(shè)計任務書; 2) 建立數(shù)學模型;建立數(shù)學模型; 3) 分析被控對象,確定算法分析被控對象,確定算法; 4) 繪制程序流程圖繪制程序流程圖; 5) 確定數(shù)據(jù)結(jié)構(gòu):合理分配內(nèi)存單元及工作寄存器確定數(shù)據(jù)結(jié)構(gòu):合理分配內(nèi)存單元及工作寄存器; 6) 編寫匯編語言源程序;編寫匯編語言源程序; 7) 上機調(diào)試程序。上機調(diào)試程序。 4.2 4.2 匯編語言程序設(shè)計方法匯
8、編語言程序設(shè)計方法 第四章-6一、簡單程序設(shè)計一、簡單程序設(shè)計例例4-1 :將:將30H單元內(nèi)的兩位壓縮單元內(nèi)的兩位壓縮BCD碼拆開并轉(zhuǎn)換成碼拆開并轉(zhuǎn)換成ASCII碼,存入碼,存入RAM的的31H、32H兩個單元中。兩個單元中。ORG1000HMOVA,30H ;取值;取值A(chǔ)NLA,#0FH ;取低;取低4位位ADDA,#30H ;轉(zhuǎn)換成;轉(zhuǎn)換成ASCII碼碼MOV32H,A ;保存結(jié)果;保存結(jié)果MOVA,30H ;取值;取值SWAPA ;高;高4位與低位與低4位互換位互換ANLA,#0FH ;取低;取低4位(原來的高位(原來的高4位)位)ADDA,#30H ;轉(zhuǎn)換成;轉(zhuǎn)換成ASCII碼碼MO
9、V31H,A ;保存結(jié)果;保存結(jié)果 SJMP$ END 結(jié)束取數(shù)據(jù)低4位轉(zhuǎn)換成ASCII碼存ASCII碼取數(shù)據(jù)高4位轉(zhuǎn)換成ASCII碼存ASCII碼開始第四章-7例例4-2 :將兩個三字節(jié)無符號數(shù)相加,其中一個加數(shù)在內(nèi)部:將兩個三字節(jié)無符號數(shù)相加,其中一個加數(shù)在內(nèi)部RAM的的32H, 31H和和30H單元;另一個加數(shù)在內(nèi)部單元;另一個加數(shù)在內(nèi)部RAM的的35H, 34H和和33H單元,要求相加后的和存入單元,要求相加后的和存入32H, 31H和和30H單元,單元,進位存到位尋址區(qū)的進位存到位尋址區(qū)的20H單元。單元。ORG2000HMOVR0,#30H ;取值;取值MOVR1,#33HMOVA
10、,R0ADDA,R1MOVR0 ,A ;保存結(jié)果;保存結(jié)果INCR0 ;取中間字節(jié);取中間字節(jié)INCR1MOVA,R0 第四章-8ADDCA, R1MOVR0 ,A ;保存結(jié)果;保存結(jié)果INCR0 ;取高字節(jié);取高字節(jié)INCR1MOVA,R0 ADDCA,R1MOVR0,A ;保存結(jié)果;保存結(jié)果MOV 20H, CEND 條件滿足?AYN(a)條件滿足?ABNY(b)(c)A0A1AnK=0K=1K=nK=?二、分支程序設(shè)計二、分支程序設(shè)計 第四章-9例例4-3 :求單字節(jié)有符號二進制數(shù)的補碼。:求單字節(jié)有符號二進制數(shù)的補碼。解:正數(shù)的補碼是其本身,負數(shù)的補碼是除去符號位的其余各位取反加解:正
11、數(shù)的補碼是其本身,負數(shù)的補碼是除去符號位的其余各位取反加1。因此程序首先判斷被轉(zhuǎn)換數(shù)的符號。設(shè)二進制數(shù)放在累加器因此程序首先判斷被轉(zhuǎn)換數(shù)的符號。設(shè)二進制數(shù)放在累加器A中,其補碼中,其補碼結(jié)果放回結(jié)果放回A中。中。 ORG2000H JNBACC.7,NEG ;(A)0,不需轉(zhuǎn)換,不需轉(zhuǎn)換 MOVC,ACC.7 ;保存符號位;保存符號位 MOV00H,C CPLA ADDA,#01H MOVC,00H MOVACC.7, C ;恢復符號位;恢復符號位 NEG: SJMP $ END第四章-10例例4-4:設(shè):設(shè)X,Y均為帶符號數(shù),均為帶符號數(shù),存放在地址為存放在地址為M和和N單元中單元中, 編程
12、計算編程計算Y=f(x) 1 當當x0 Y = 0 當當x=0 -1 當當x0?存結(jié)果1AYN圖3-8 計算 y=f(x)程序流程圖第四章-11 M EQU 40H ;定義數(shù)據(jù)地址;定義數(shù)據(jù)地址 N EQU 41H ORG 0100H MOV A,M ;取出;取出X JZ NEXT2 ;當;當X=0,則跳轉(zhuǎn)到,則跳轉(zhuǎn)到NEXT2 JNB ACC.7,NEXT1 ;當;當X0,則跳轉(zhuǎn)到,則跳轉(zhuǎn)到NEXT1 MOV A,#0FFH ;當;當X0,01H送送ANEXT2: MOV N,A ;存結(jié)果;存結(jié)果 SJMP $ END程序清單:程序清單:第四章-12當程序出現(xiàn)多重分支時,常用變址尋址轉(zhuǎn)移指令
13、實現(xiàn)散轉(zhuǎn)當程序出現(xiàn)多重分支時,常用變址尋址轉(zhuǎn)移指令實現(xiàn)散轉(zhuǎn)。JMP A+DPTR MOV DPTR, #JTAB ;轉(zhuǎn)移指令表首地址送轉(zhuǎn)移指令表首地址送DPTR MOV A, NAMBER ;轉(zhuǎn)移分支編號(轉(zhuǎn)移分支編號(04)送)送A MOV B, #03H MUL AB JMP A+DPTR下面是一個實現(xiàn)下面是一個實現(xiàn)5種分支轉(zhuǎn)移的程序:種分支轉(zhuǎn)移的程序:JTAB: LJMP CASE0 LJMP CASE1 LJMP CASE2 LJMP CASE3 LJMP CASE4第四章-13u 循環(huán)程序一般包括如下循環(huán)程序一般包括如下四個部分四個部分: 1)初始化)初始化 2)循環(huán)體)循環(huán)體 3)
14、循環(huán)控制)循環(huán)控制 4)結(jié)束)結(jié)束u 循環(huán)程序按結(jié)構(gòu)形式,有單重循環(huán)與多重循環(huán);在多循環(huán)程序按結(jié)構(gòu)形式,有單重循環(huán)與多重循環(huán);在多重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán),不允許循環(huán)相重循環(huán)中,只允許外重循環(huán)嵌套內(nèi)重循環(huán),不允許循環(huán)相互交叉,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部?;ソ徊?,也不允許從循環(huán)程序的外部跳入循環(huán)程序的內(nèi)部。u 循環(huán)程序通常有兩種結(jié)構(gòu):一種為直到型循環(huán)結(jié)構(gòu);循環(huán)程序通常有兩種結(jié)構(gòu):一種為直到型循環(huán)結(jié)構(gòu);一種為當型循環(huán)結(jié)構(gòu),如圖所示:一種為當型循環(huán)結(jié)構(gòu),如圖所示:第四章-14三、循環(huán)程序設(shè)計三、循環(huán)程序設(shè)計 開始初始化部分修改控制變量結(jié)束部分循環(huán)結(jié)束?其他:.結(jié)束YN循環(huán)
15、控制循環(huán)體部分圖3-10 記數(shù)循環(huán)程序流程圖開 始初 始 化 部 分修 改 控 制 變 量循 環(huán) 結(jié) 束 ?YN循 環(huán) 體 部 分結(jié) 束 部 分其 他 : . . .結(jié) 束循 環(huán)控 制第四章-15例例4-5:在內(nèi):在內(nèi)RAM 40H開始存放了一串單字節(jié)數(shù),串長度為開始存放了一串單字節(jié)數(shù),串長度為8,編程求其中,編程求其中最大值并送最大值并送R7中。中。解題思路:對數(shù)據(jù)塊中的數(shù)逐一兩兩相比較,較大值暫存于解題思路:對數(shù)據(jù)塊中的數(shù)逐一兩兩相比較,較大值暫存于A中,直到整中,直到整 串比完,串比完,A中的值就為最大值。中的值就為最大值。 MOV R0,#40H ;數(shù)據(jù)塊首址送地址指針;數(shù)據(jù)塊首址送地
16、址指針R0 MOV R2,#7 ;循環(huán)次數(shù)送;循環(huán)次數(shù)送R2 MOV A,R0 ;取第一個數(shù),當作極大值;取第一個數(shù),當作極大值 LOOP: INC R0 ;修改地址指針;修改地址指針 MOV B,R0 ;暫存;暫存B中中 CJNE A,B,NEXT ;比較后產(chǎn)生標志(;比較后產(chǎn)生標志(CY) NEXT: JNC NEXT1 ;CY=0? MOV A,R0 ;更大數(shù)送;更大數(shù)送A NEXT1:DJNZ R2,LOOP ; 循環(huán)次數(shù)結(jié)束?循環(huán)次數(shù)結(jié)束? MOV R7,A ;存最大值;存最大值1. 單循環(huán)程序單循環(huán)程序第四章-16練習:外部練習:外部RAM3000H 開始有開始有5050個數(shù)傳送到
17、內(nèi)部個數(shù)傳送到內(nèi)部RAM 30H開始的區(qū)域開始的區(qū)域算法分析:取地址指針算法分析:取地址指針DPTR=3000H、 R0=30H、計數(shù)器、計數(shù)器R7=50 ORG 2000H MOV DPTP,#3000H MOV R0,#30H MOV R7,# 32HLOOP:MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,LOOP SJMP $ END第四章-17例例4-6:設(shè)在外部:設(shè)在外部RAM的的TAB處開始有一個處開始有一個ASCII字符串,字符串,該字符串以該字符串以0結(jié)尾,編程把它們從結(jié)尾,編程把它們從8051的的P1口輸出??谳敵?。 ORG 100
18、0H MOV DPTR,#TAB ;設(shè)字符串首地址指針;設(shè)字符串首地址指針 SOUT:MOVX A,DPTR ;取字符;取字符 JZ NEXT ;整串結(jié)束則轉(zhuǎn)跳;整串結(jié)束則轉(zhuǎn)跳 MOV P1, A INC DPTR ;修改地址指針;修改地址指針 SJMP SOUT ;沒結(jié)束繼續(xù)取數(shù)發(fā)送;沒結(jié)束繼續(xù)取數(shù)發(fā)送 NEXT: ;結(jié)束處理;結(jié)束處理 ORG 2000H TAB: DB XXH,XXH, ;定義定義ASCII字符串字符串 DB XXH,00H ;以;以0結(jié)尾結(jié)尾 END第四章-182. 2. 多重循環(huán)程序多重循環(huán)程序 多重循環(huán)程序就是循環(huán)的嵌套,既一個循環(huán)程序包含了其它循環(huán)程多重循環(huán)程序就
19、是循環(huán)的嵌套,既一個循環(huán)程序包含了其它循環(huán)程序,即循環(huán)內(nèi)套循環(huán)的結(jié)構(gòu)形式,也稱多重循環(huán)。一般內(nèi)層循環(huán)完成后,序,即循環(huán)內(nèi)套循環(huán)的結(jié)構(gòu)形式,也稱多重循環(huán)。一般內(nèi)層循環(huán)完成后,外層才執(zhí)行一次,然后再逐次類推,層次分明。外層才執(zhí)行一次,然后再逐次類推,層次分明。 外循環(huán)外循環(huán)中循環(huán)中循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)外循環(huán)外循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)外循環(huán)外循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)內(nèi)循環(huán)(a)嵌套正確)嵌套正確(b)嵌套正確)嵌套正確(c)交叉不正確)交叉不正確第四章-19例例4-7:2ms延時程序延時程序,已知晶振頻率為已知晶振頻率為12MHZ,則機器周期為,則機器周期為1s。解:解:DELAY2ms:MOV R7,#10 ;
20、1T DL1:MOV R6,#48 ;1T DL2:NOP ;1T NOP ;1T DJNZ R6,DL2 ;2T DJNZ R7,DL1 ;2T RET ;2T該段程序耗時為該段程序耗時為: 1+1+(1+1+2)48+210+2 = 1953 (s)第四章-20四、子程序及其調(diào)用程序設(shè)計四、子程序及其調(diào)用程序設(shè)計 所謂調(diào)用子程序,就是暫時中斷主程序的執(zhí)行,而轉(zhuǎn)到子程序的入口所謂調(diào)用子程序,就是暫時中斷主程序的執(zhí)行,而轉(zhuǎn)到子程序的入口地址去執(zhí)行子程序,子程序執(zhí)行完后返回主程序繼續(xù)執(zhí)行。地址去執(zhí)行子程序,子程序執(zhí)行完后返回主程序繼續(xù)執(zhí)行。子程序的形式與要求:子程序的形式與要求:1)名稱、地址、
21、功用()名稱、地址、功用(標明子程序的入口地址或名稱,以方便調(diào)用);標明子程序的入口地址或名稱,以方便調(diào)用);2)指出入口與出口參數(shù),以正確進行)指出入口與出口參數(shù),以正確進行參數(shù)傳遞參數(shù)傳遞; 參數(shù)傳遞參數(shù)傳遞 在調(diào)用子程序前,主程序應先把有關(guān)參數(shù)(即入口參在調(diào)用子程序前,主程序應先把有關(guān)參數(shù)(即入口參數(shù))放到某些約定的位置,子程序在運行結(jié)束返回前,也應該把運算結(jié)果數(shù))放到某些約定的位置,子程序在運行結(jié)束返回前,也應該把運算結(jié)果(出口參數(shù))送到約定的位置(出口參數(shù))送到約定的位置/單元。單元。常采常采用累加器或工作寄存器、地址指針用累加器或工作寄存器、地址指針寄存器或堆棧來傳遞參數(shù)。寄存器或
22、堆棧來傳遞參數(shù)。3 3)注意保護現(xiàn)場;)注意保護現(xiàn)場;4 4)子程序的末尾用)子程序的末尾用RET指令結(jié)束。指令結(jié)束。 第四章-21 有關(guān)指令:有關(guān)指令:1. 進棧操作進棧操作 PUSH direct;2. 出棧操縱出棧操縱 POP direct;3. 子程序的調(diào)用子程序的調(diào)用 1 1)絕對調(diào)用指令)絕對調(diào)用指令 ACALL addr11;PC PC+2,SPSP+1,(SP)PC70 SP SP+1,(,(SP) PC158,PC100addr11 2)長調(diào)用指令)長調(diào)用指令 LCALL addr16 ;PCPC+3,SPSP+1,(,(SP)PC70 SPSP+1,(,(SP)PC158
23、, PCaddr16 4. 子程序返回指令子程序返回指令 RET ;PC158 (SP),),SPSP-1 ;PC70 (SP),),SPSP-1第四章-221. 1. 用累加器用累加器A A或工作寄存器或工作寄存器RnRn傳遞參數(shù)傳遞參數(shù)例例4-8 :把:把A中一個十六進制數(shù)的中一個十六進制數(shù)的ASCII字符轉(zhuǎn)換為一位十六進制數(shù)。字符轉(zhuǎn)換為一位十六進制數(shù)。主程序部分:主程序部分:START: MOV A,#34H;設(shè)置入口參數(shù)于;設(shè)置入口參數(shù)于A中中子程序:子程序:ASCH: CLRC SUBB A,#30H CJNE A,#10,$+3 ;$+3為下條指令的首址為下條指令的首址 JC NE
24、XT ;(A)10,轉(zhuǎn),轉(zhuǎn)NEXT SUBB A,#07H ;(A) 0AH,則再減,則再減07H(共減(共減37H)NEXT: NOP RET第四章-23 例例4-9:在片內(nèi):在片內(nèi)RAM40H、50H開始的空間中,分別存有單字節(jié)的無符號數(shù)據(jù)塊,開始的空間中,分別存有單字節(jié)的無符號數(shù)據(jù)塊,長度分別為長度分別為12和和8。編程求這兩個數(shù)據(jù)塊中的最大數(shù),存入。編程求這兩個數(shù)據(jù)塊中的最大數(shù),存入MAX單元。單元。解題思路:用子程序求某數(shù)據(jù)塊的最大值,解題思路:用子程序求某數(shù)據(jù)塊的最大值,入口參數(shù):數(shù)據(jù)塊的首地址存入入口參數(shù):數(shù)據(jù)塊的首地址存入R0,長度存入,長度存入R2,出口參數(shù)在,出口參數(shù)在A中
25、,即最大數(shù)。中,即最大數(shù)。 ORG 1200HFMAX: MOV A,R0 ;取第一個數(shù);取第一個數(shù)LOOP0: INC R0 MOV B,R0 ;取下一個數(shù);取下一個數(shù) CJNE A,B,$+3 ;比較;比較 JNC LOOP1 MOV A, B ;把大的數(shù)送;把大的數(shù)送ALOOP1: DJNZ R2,LOOP0 RET ;出口參數(shù)在;出口參數(shù)在A中中第四章-242. 2. 用寄存器作指針來傳遞參數(shù)用寄存器作指針來傳遞參數(shù) 主程序主程序 ORG 1000H MAX EQU 30H MOV R0,#40H;設(shè)置入口參數(shù);設(shè)置入口參數(shù)R0,R2 MOV R2,#11 ACALL FMAX MOV
26、 MAX,A;出口參數(shù)暫存;出口參數(shù)暫存MAX中中 MOV R0,#50H;設(shè)置入口參數(shù);設(shè)置入口參數(shù)R0,R2 MOV R2,#7 ACALL FMAX CJNE A,MAX,$+3;比較兩個數(shù)中較大值;比較兩個數(shù)中較大值 JC NEXT MOV MAX,ANEXT:SJMP $ END第四章-25方法:在調(diào)用子程序之前,先把參與運算的操作數(shù)壓入堆棧;在執(zhí)行子程方法:在調(diào)用子程序之前,先把參與運算的操作數(shù)壓入堆棧;在執(zhí)行子程序過程中,通過堆棧指針序過程中,通過堆棧指針SPSP間接訪問到堆棧中的操作數(shù),取出參加運算,間接訪問到堆棧中的操作數(shù),取出參加運算,最后把運算的結(jié)果壓入堆棧,由主程序再從
27、堆棧中彈出結(jié)果。最后把運算的結(jié)果壓入堆棧,由主程序再從堆棧中彈出結(jié)果。注意問題:注意問題:由于調(diào)用子程序時,主程序的斷點地址被自動壓入堆棧,占用由于調(diào)用子程序時,主程序的斷點地址被自動壓入堆棧,占用了堆棧的兩個字節(jié),所以在子程序中彈出參數(shù)時一定要用修改了堆棧的兩個字節(jié),所以在子程序中彈出參數(shù)時一定要用修改SPSP指針,指指針,指向該參數(shù);同時,在子程序返回指令向該參數(shù);同時,在子程序返回指令RETRET之前一定要作相應修改之前一定要作相應修改SPSP指令,指令,以便以便SPSP指向斷點地址,確保能正確返回主程序。指向斷點地址,確保能正確返回主程序。 3. 3. 用堆棧來傳遞函數(shù)用堆棧來傳遞函數(shù)第四章-26解:解: FB: CPL P1.0 ;P1.0取反 ACALL DL10ms SJMPFB DL10ms: ;延時10ms的子程序 RET第四章-27 4.3 4.3 應用程序設(shè)計舉例應用程序設(shè)計舉例 例例4-10:要求在P1.0腳上產(chǎn)生周期為20ms的方波。例例4-11:如圖所示,編程實:如圖所示,編程實現(xiàn)當按現(xiàn)當按K K一次則蜂鳴器一次則蜂鳴器“嘀、嘀、嘀嘀”響二聲。響二聲。 S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個人店面租賃合同租賃費用調(diào)整辦法
- 二零二五年度高層建筑消防改造勞務分包合同范本2篇
- 二零二五年度內(nèi)部承包合作協(xié)議范本12篇
- 《特種設(shè)備安全法》解析-浙江
- 酒店管理工作中的客戶服務
- 科技應用在小班教育中的探索計劃
- 二零二五年度個人租賃山地別墅及園林使用權(quán)合同4篇
- 二零二五年度寵物領(lǐng)養(yǎng)合同范本3篇
- 二零二五年度企業(yè)收入證明修訂協(xié)議3篇
- 二零二五年度離婚方式適用條件及技巧解析合同3篇
- 廣西南寧市2024-2025學年八年級上學期期末義務教育質(zhì)量檢測綜合道德與法治試卷(含答案)
- 2025年供應鏈管理培訓課件
- 2025中智集團招聘高頻重點提升(共500題)附帶答案詳解
- 《攜程旅行營銷環(huán)境及營銷策略研究》10000字(論文)
- 餐飲行業(yè)優(yōu)化食品供應鏈管理計劃
- 復工復產(chǎn)六個一方案模板
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 浙江省2024年高考化學模擬試題(含答案)2
- 2024新人教七年級英語上冊 Unit 2 Were Family!(大單元教學設(shè)計)
- 中國醫(yī)美行業(yè)2024年度洞悉報告-德勤x艾爾建-202406
- 藥用植物種植制度和土壤耕作技術(shù)
評論
0/150
提交評論