微機原理與接口技術(樓順天)-第4章綜合程序設計示例課件_第1頁
微機原理與接口技術(樓順天)-第4章綜合程序設計示例課件_第2頁
微機原理與接口技術(樓順天)-第4章綜合程序設計示例課件_第3頁
微機原理與接口技術(樓順天)-第4章綜合程序設計示例課件_第4頁
微機原理與接口技術(樓順天)-第4章綜合程序設計示例課件_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

本教案內容第4章

匯編語言程序設計匯編語言程序設計基礎源程序的匯編、連接與調試分支程序設計技術循環(huán)程序設計技術子程序設計技術綜合程序設計示例4.6.4綜合程序設計示例本節(jié)介紹一些匯編語言設計的綜合示例,包括各種題型:選擇題、分析題和編程題。例4.16單項選擇題1.在偽指令BUFDB20DUP(2,2DUP(8))定義的緩沖區(qū)中,數據字0208H的個數有:①20 ②40 ③0 ④192.將DX:AX構成的雙字(有符號數)除以2的指令為:①SARAX,1②SHRAX,1RCRDX,1RCRDX,1③SARDX,1④

SARDX,1RORAX,1RCRAX,1

4.6.4綜合程序設計示例3.MOVBL,55HAND0F0H指令執(zhí)行后,(BL)的內容為:①55H②0F0H ③50H ④05H解:答案依次為④④③。例4.17多項選擇題1.能使(AX)和CF同時清零的指令有①MOVAX,0 ②SUBAX,AX③CMPAX,AX④XORAX,AX ⑤ANDAX,AX2.已有定義 DATASEGMENTVAR1 DW10DUP(?)DATA ENDS則源操作數為立即尋址的指令有:①MOVAX,DATA ②MOVAX,VAR1③MOVAX,OFFSETVAR1④MOVAX,LENGTHVAR1⑤MOVAX,SIZEVAR14.6.4綜合程序設計示例3.使用AL寄存器的指令有:①SAHF ②XALT ③AAA ④MOVSB ⑤STOSB解:1.②④⑤2.①③④⑤ 3.②③⑤例4.18分析下列程序段完成的功能:MOVCX,100LEASI,FIRSTLEADI,SECONDCLDREPMOVSB解:只要搞清楚MOVSB指令的用法,就容易分析出該程序段的功能:從緩沖區(qū)FIRST傳送100個字節(jié)到緩沖區(qū)SECOND。4.6.4綜合程序設計示例例4.19分析下列程序段:LEADI,STRINGMOVCX,200CLDMOVAL,20HREPZSCASBJNZFOUNDJMPNOT_FOUND問:轉移到FOUND的條件。解:只要搞清楚SCASB指令和重復前綴REPZ的用法,就可以分析出該程序段的功能:在200個字節(jié)的緩沖區(qū)STRING中,如果找到非空格字符(ASCII碼為20H)則轉到FOUND;如果全是空格,則轉到NOT_FOUND。

4.6.4綜合程序設計示例例4.20分析下列子程序FUNC1,并回答相應的問題。FUNC1PROCNEARXORCX,CXMOVDX,01MOVCL,XJCXZA20INCDXINCDXDECCXJCXZA20A10:MOVAX,02SHLAX,CL

ADDDX,AXLOOPA104.6.4綜合程序設計示例

A20:MOVY,DXRETFUNC1ENDP若該子程序的入口參數為X(0≤X≤10),其輸出參數為Y,則:(1)該子程序的功能是Y=f(X)=

;(2)若X=0,則Y=

; 若X=3,則Y=

;若X=5,則Y=

。解:分析題是近年來出現的比較多的考題.對于分析題,應該邊分析邊畫流程草圖,特別要注意搞清楚數據緩沖區(qū)的結構、指針及其操作過程,這樣便于理解程序的功能和思路。4.6.4綜合程序設計示例通過分析該子程序,很容易獲知,當X=0時,直接轉到A20,即Y=1;當X=1時,Y=3;當X=2時,Y=7;當X=3時,Y=15;如此等等,當X=n時,有因此第(1)題為;由分析過程和得到的表達式,第(2)題三個空應依次填1,15,63。例4.21已知N(3<N<100)個8位無符號數已存放在緩存區(qū)INX中,其中第一個字節(jié)存放個數N,從第二個字節(jié)開始存放數據,下列的FUNC2子程序完成對這N個數據按由大到小排序,在劃線處填入必要指令,使子程序完整。

4.6.4綜合程序設計示例FUNC2PROCNEARLEASI,INXXORCX,CXMOVCL,[SI]DECCXB10:INCSIMOVDI,SIPUSHSI

①MOVAL,[SI]B20:INCSICMPAL,[SI]

4.6.4綜合程序設計示例

MOVAL,[SI]MOVDI,SIB30:LOOPB20POPCXPOPSIMOVAH,[SI]MOV[SI],ALMOV[DI],AHLOOPB10

③FUNC2ENDP

4.6.4綜合程序設計示例解:指令填空題也是出現較多的考題,它有可能會替代編程題。求解指令填空題時,應該理解題義,緊跟程序思路,從而找出缺少的指令。一般來說,題目中會有一些暗示,例如在子程序中應該確保PUSH和POP數量上的對等;子程序要有RET指令等等。對于本題,第③空顯然應該填入RET;而且PUSH與POP并不對等,因此初步分析,第①空應該填入PUSHCX指令。為全面分析程序,需要搞清楚數據緩沖區(qū)INX的結構,如圖4.9所示,指針SI指向緩沖區(qū)INX,并且隨著比較操作而增加,4.6.4綜合程序設計示例但DI用于指定某個適當的位置,根據LOOP指令的前三條指令的交換操作,SI為緩沖區(qū)數據的首地址(第一次循環(huán)時),而題目要求將數據由大到小排序,因此,找到的DI位置應該存放著最大值,第②空處的指令應該大于等于時轉移到B30的指令,再根據題目給出的是無符號數,所以,第②空應該填入JAEB30指令。程序段完整后,再仔細看一遍,是否能夠完成題目給定的任務。4.6.4綜合程序設計示例例4.22假設X和X+2單元的內容為雙精度數P,Y和Y+2單元的內容為雙精度數Q(P,Q均為無符號數,其中X,Y為低位數),下列的子程序FUNC3完成:當2P>Q時,(AX)=1;當2P≤Q時,(AX)=-1,在劃線處填入必要指令,使子程序完整。FUNC3PROCNEARMOVDX,X+2MOVAX,XADDAX,AXADCDX,DXJCC1

CMPDX,Y+2

①C20

②C104.6.4綜合程序設計示例

CMPAX,Y

③C20C10:MOVAX,1

④C30C20:MOVAX,-1C30:RETFUNC3ENDP解:雙精度數占用2個字,低位字在前,高位字在后。分析該子程序,發(fā)現這4個空全是有條件轉移指令,由于題目給定的數據為無符號數,因此應該采用JA、JB等指令。子程序的前4條指令完成2×P,當2×P有進位時表示超出32位二進制數的范圍,這時可以肯定2×P>Q,程序應轉向C10。當2×P≤Q時,應轉向C20。

4.6.4綜合程序設計示例只有當高位字相等時,才需要比較低位字,因此根據以上分析,可以確定各處填入的指令分別為:第①空填入JB;第②空填入JA;第③空填入JBE;第④空填入JMP。例4.23編寫子程序COMPT4DIV1,完成4字節(jié)(即雙字)的無符號數除以1字節(jié)。解:設要完成的操作為A=P÷Q,其中Q為一個字節(jié),P由4個字節(jié)構成。將P的4個字節(jié)從高位到低位分別表示成P4、P3、P2和P1,則這樣可以將計算分成下列4個步驟:(1)先計算,其商為結果A的31~24位;4.6.4綜合程序設計示例(2)應該特別注意上一步操作的余數(記作R1),它應該與P3構成一個字,因此這時應完成,其商可能是16位,應該加到A的31~16位;(3)與(2)步類似,完成,其商加到A的23~8位;(4)與(2)步類似,完成,其商加到A的15~0位;

子程序COMPT4DIV1的入口參數為:DX:AX(參數P)和CL(參數Q),出口參數為:DX:AX(計算結果,即參數A),采用寄存器參數傳遞方式,用到的寄存器為:DX和AX。利用匯編語言編寫的子程序COMPT4DIV1及其應用示例如下:

4.6綜合程序設計示例STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDSDATASEGMENTCONSTDW42XDATDD987654321YDAT DD? ;166D1BBHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AX4.6綜合程序設計示例MOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP MOVCX,CONST MOVAX,WORDPTRXDAT MOVDX,WORDPTRXDAT+2CALLCOMPT4DIV1 MOVWORDPTRYDAT,AX MOVWORDPTRYDAT+2,DX XCHGAX,DX ;顯示計算結果 CALLDISPAX XCHGAX,DX CALLDISPAX4.6綜合程序設計示例CALLDISPCRMOVAH,4CH;返回DOSMOVAL,0INT21HCOMPT4DIV1PROCNEAR PUSHBX PUSHCX PUSHSI XORCH,CH CMPCX,1 JECOMPTDIV1 MOVSI,CX PUSHAX ;保存低位字 MOVAX,DX4.6綜合程序設計示例XORDX,DX XORBX,BX ;結果暫存在BX:CX XORCX,CX PUSHAX ;保存高位字 XORAL,AL ;最高位字節(jié)除以Q XCHGAL,AH DIVSI ADDBH,AL MOVAH,DL ;次高位字節(jié)除以Q POPDX MOVAL,DL XORDX,DX DIVSI ADDBL,AL4.6綜合程序設計示例ADCBH,AH MOVAH,DL ;第三位字節(jié)除以Q POPDX ;取出低位字 PUSHDX MOVAL,DH XORDX,DX DIVSI ADDCH,AL ADCBL,AH MOVAH,DL ;最低位字節(jié)除以Q POPDX ;取出低位字 MOVAL,DL XORDX,DX DIVSI4.6綜合程序設計示例ADDCL,AL ADCCH,AH MOVAX,CX MOVDX,BXCOMPTDIV1: POPSI POPCX POPBXRETCOMPT4DIV1ENDPCODEENDSENDSTART◆當除數Q=1時,A=P,可以直接得到結果,不需要進行復雜的運算。4.6綜合程序設計示例例4.24在首址為XDAT的字型數組中,第一個字存放某單位的人數N(N<1000),第二個字存放B(個人所得稅起征額),從第三個字開始分別存放該單位N個人的A(本月收入總額,A<300000)。要求編寫匯編語言程序實現:根據個人所得稅率表和個人所得稅計算公式計算個人應納稅和單位應納稅總額,將結果存儲在首址為YDAT的字型組中,其中第一個字存放單位人數,第二個字存放單位納稅總額,從第三個字開始分別存放該單位N個人的個人應納稅。個人所得稅率如表4.5所示。4.6綜合程序設計示例表4.5個人所得稅率表級數E(全月應納稅所得額單位:元)C(稅率(%))D(速算扣除數單位:元)10<E<500502500<=E<2000102532000<=E<50001512545000<=E<200002037552000<=E<40000251375640000<=E<60000303375760000<=E<80000356375880000<=E<10000040103759E>=10000045153754.6綜合程序設計示例個人所得稅計算公式為:S(應納稅)=E(全月應納稅總額)×C(稅率)-D(速算扣除數)其中,E=A(本月收入總額)-B(個人所得稅起征額)。例如,若張三的A=1200元,個人所得稅起征額B=1600,由E=A-B<0,得S=0。若李四的A=2600元,個人所得稅起征額B=1600,由E=A-B=1000元,查“個人所得稅率表”可得C=10%,D=25元,因此李四應納稅為:S=(A-B)×C-D=(2600-1600)×10%-25=75(元)4.6綜合程序設計示例解:題目的要求比較復雜,而且有一定的難度。為此,應該先搞清楚緩沖區(qū)結構,輸入緩沖區(qū)XDAT和輸出緩沖區(qū)YDAT的結構如圖4.10所示。在XDAT中,第一個字為某單位的人數N,第二個字表示個人所得稅起征額B,從第三個字開始,每兩個字存放一位員工的工資A。在YDAT中,第一個字為某單位的人數N,第二、三個字用于存放全單位應交個人所得稅的總和,從第四個字開始,每兩個字用于存放每位員工應交個人所得稅S。在程序設計中,分別采用指針SI和DI來指示。4.6綜合程序設計示例為了計算方便,將表4.5中的個人所得稅9個等級變換成三個數據表:INCOME(個人所得稅界線值,雙字型變量)、TAXRATE(稅率,字型變量)、DEDUCTION(速算扣除數,字型變量),其結構如圖4.11所示。INCOME存放每個等級的上限值,最后一級可以給定一個較大的值,比如300000(由題目限定)。編寫子程序INCOMERATE實現個人所得稅的計算,其入口參數為DX:AX(工資A)和BX(個人所得稅起征額B),出口參數為DX:AX(個人所得稅S),采用寄存器參數傳遞方式。4.6綜合程序設計示例圖4.11個人所得稅界線值、稅率和速算扣除數的結構4.6綜合程序設計示例在子程序INCOMERATE中,先計算出E=A-B,然后將E與INCOME中的上限值比較,確定出征稅的等級,并通過TAXRATE和DEDUCTION找出稅率C和速算扣除數D,由S=E×C-D就可以計算出個人所得稅。為了方便操作,在子程序INCOMERATE中,通過(BX)+(SI)的值作為INCOME的表內偏移地址,每次BX和SI都進行加2操作,一旦確定出等級,就可以直接采用BX或SI訪問TAXRATE和DEDUCTION數據表,如圖4.11所示。實際上,E×C運算相當于實現E×dd÷100(其中dd為相應的稅率×100),因此,可以利用例4.23計算4字節(jié)除以1字節(jié)的子程序COMPT4DIV1,完成除以100的運算。4.6綜合程序設計示例匯編語言程序如下:STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDSDATASEGMENTTAXRATEDW5,10,15,20,25,30,35,40,45DEDUCTIONDW0,25,125,375,1375,3375,6375,10375,15375INCOMELABELWORDDD500,2000,5000,20000,40000,60000,80000,100000,300000XDAT DW19,1600 DD1200,2600,3000,4000,5000,6000,7000,80004.6綜合程序設計示例

DD9000,10000,15000,20000,30000,40000,50000,59900 DD60000,65000,200000YDAT DW? DD50DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AX4.6綜合程序設計示例

LEASP,TOP LEASI,XDAT MOVCX,[SI] ADDSI,2 MOVBX,[SI] ADDSI,2 LEADI,YDAT+6 MOVYDAT,CX MOVYDAT+2,0 MOVYDAT+4,0L1: MOVAX,[SI] ;取出一位員工的工資 MOVDX,[SI+2] ADDSI,44.6綜合程序設計示例CALLINCOMERATE ;計算個人所得稅 MOV[DI],AX ;保存?zhèn)€人所得稅 MOV[DI+2],DX ADDDI,4 ADDYDAT+2,AX ;統(tǒng)計單位個人所得稅總額 ADCYDAT+4,DX XCHGAX,DX ;顯示 CALLDISPAX XCHGAX,DX CALLDISPAX CALLDISPCR LOOPL1 CALLDISPCR4.6綜合程序設計示例MOVAX,YDAT+4 ;顯示單位個人所得稅總額 CALLDISPAX MOVAX,YDAT+2 CALLDISPAX CALLDISPCR MOVAH,4CH INT21HINCOMERATEPROCNEAR ;計算個人所得稅子程序 PUSHBX PUSHCX PUSHSI SUBAX,BX ;E=A-B SBBDX,0 JSINCRATE4 ;不需納稅出口4.6綜合程序設計示例

XORBX,BX ;判定納稅等級 XORSI,SI MOVCX,9INCRATE1: CMPDX,INCOME[BX][SI+2] JBINCRATE2 JAINCRATE3 CMPAX,INCOME[BX][SI] JBINCRATE2INCRATE3: ADDBX,2 ADDSI,2 LOOPINCRATE1INCRATE2: ;根據納稅等級計算E×dd4.6綜合程序設計示例

PUSHAX MOVAX,DX MULTAXRATE[BX] POPCX PUSHAX MOVAX,CX MULTAXRATE[BX] POPCX ADDDX,CX MOVCX,100 CALLCOMPT4DIV1 ;計算E×dd÷100 SUBAX,DEDUCTION[BX] ;計算S SBBDX,0 JMPINCRATE54.6綜合程序設計示例INCRATE4: MOVDX,0 MOVAX,0INCRATE5: POPSI POPCX POPBX RETINCOMERATEENDPCOMPT4DIV1PROCNEARCOMPT4DIV1ENDPCODEENDS ENDSTART4.6綜合程序設計示例例4.25設已經編寫好8個子程序(SUB0~SUB7),要求編寫程序實現從鍵盤輸入0~7進行選擇。解:如果采用比較指令,則會使程序變得復雜。為此,這里介紹跳轉表的方法,即利用偽指令DW構成各個子程序入口地址的跳轉表,然后根據鍵盤輸入進行調用。匯編語言程序如下:STACKSEGMENTSTACK'STACK'DW100HDUP(?)TOPLABELWORDSTACKENDS4.6綜合程序設計示例DATASEGMENTTABLE DWSUB0,SUB1,SUB2,SUB3,SUB4,SUB5,SUB6,SUB7STRINGDB'Pleaseinput0~7toselectsubroutines',0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP4.6綜合程序設計示例ST1: MOVAH,9 ;顯示提示字符串 LEADX,STRING ING21H MOVAH,1 ;輸入一個字符 INT21H SUBAL,30H JBST1 CMPAL,8 JAEST1 SHLAL,1 ;(AL)×2 XORAH,AH MOVBX,AX CALLTABLE[BX] ;通過跳轉表調用各個子程序4.6綜合程序設計示例JMPST1 ;循環(huán)執(zhí)行 MOVAH,4CH ;返回DOS操作系統(tǒng) INT21HCODEENDSENDSTART例4.26在AVG緩沖區(qū)中保存有按報考號順序排列的研究生考生平均成績,在MIN緩沖區(qū)保存有與AVG相對應的考生單科最低成績,報考學生總人數存儲在字變量NUM中,給定錄取條件為:(1)最低單科成績不得低于60分;(2)選定錄取分數線,按平均成績從高分到低分錄取,但錄取人數不超過800人。編程求取錄取分數線N1和實際錄取人數N2。4.6綜合程序設計示例解:首先,根據考生的單科最低成績,剔除不合格的考生;然后將合格考生按平均成績由高分到低分進行排序,在排序時,應該保留考生的考號信息。當合格考生人數超出計劃錄取人數時,錄取分數線就是第800位考生的平均成績;當合格考生人數不足計劃錄取人數時,錄取分數線就是最后一位合格考生的平均成績。匯編語言程序如下:STACKSEGMENTSTACK'stack'DW256HDUP(?)TOPLABELWORDSTACKENDS4.6綜合程序設計示例N=2000 ;考生人數M=800 ;計劃錄取人數DATASEGMENTNUMDWN;學生總人數AVGDBNDUP(?);平均成績MINDBNDUP(?);最低單科成績N1DB? ;存放錄取分數線N2DW? ;存放實際錄取人數BUF1DBNDUP(?);暫存平均成績BUF2 DWNDUP(?);暫存學號DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK4.6綜合程序設計示例START:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEASP,TOP MOVCX,NUM CALLPRODUCT ;產生模擬數據 XORSI,SI ;剔除單科不合格的考生 XORDI,DI XORBX,BX MOVCX,NUM4.6綜合程序設計示例ELIMINATE: CMPMIN[SI],60 JBELIMINATE1 MOVAL,AVG[SI] MOVBUF1[DI],AL ;保存合格考生的平均成績 INCDI MOVBUF2[BX],SI ;保存合格考生的考號 ADDBX,2ELIMINATE1: INCSI LOOPELIMINATEMOVCX,DI ;對合格考生按平均成績由高分到低分排序 LEASI,BUF1 LEADI,BUF24.6綜合程序設計示例CALLSORTCMPCX,M;合格考生數是否大于計劃錄取人數?JBEMATRI00MOVCX,MMATRI00: MOVBX,CX MOVAL,BUF1[BX] ;錄取分數線 MOVN1,AL MOVN2,BX ;實際錄取人數 MOVAL,N1 ;顯示錄取分數線 CALLDISPAL CALLDISPCR MOVAX,N2 ;顯示實際錄取人數4.6綜合程序設計示例CALLDISPAX CALLDISPCR MOVAH,4CH ;返回DOS系統(tǒng)INT21HSORT PROCNEAR ;數據排序程序 PUSHAX PUSHCX PUSHSI PUSHDI DECCX ADDSI,CX ;SI指向BUF1末地址 ADDDI,CX ;SI指向BUF2末地址 ADDDI,CX4.6綜合程序設計示例LP1: ;外循環(huán)開始PUSHCXPUSHSI PUSHDILP2: ;內循環(huán)開始MOVAL,[SI]CMPAL,[SI-1]JBENOXCHGXCHGAL,[SI-1] ;交換操作MOV[SI],AL MOVAX,[DI] ;考生考號也同步交換 XCHGAX,[DI-2] MOV[DI],AX4.6綜合程序設計示例NOXCHG:DECSI DECDI DECDILOOPLP2 POPDIPOPSIPOPCXLOOPLP1 POPDI POPSI POPCX POPAX RET4.6綜合程序設計示例SORT ENDPPRODUCTPROCNEAR ;產生模擬數據 PUSHAX PUSHCX MOVAL,17 MOVBH,59 LEASI,AVGPR1: ADDAL,BH CMPAL,100 JAEPR1 CMPAL,40 JBPR1 MOV[SI],AL4.6綜合程序設計示例INCSI LOOPPR1 POPCX MOVAL,5 MOVBH,3 LEASI,AVG LEADI,MINPR2: ADDAL,BH CMPAL,15 JAEPR2 MOVBL,[SI] SUBBL,AL4.6綜合程序設計示例MOV[DI],BL INCSI INCDI LOOPPR2 POPAX RETPRODUCTENDPCODEENDSENDSTART4.6綜合程序設計示例例4.27在首地址為XDAT的字節(jié)型數組中,第一個單元存放數的個數N(N<100),第二、三單元分別存放門限T1和T2(T1<T2<256),從第4個單元開始存放N個無符號數(每個數占用一個字節(jié))。編寫匯編語言程序實現:先對這N個數進行剔除奇異值處理,再進行滑窗式濾波處理,要求將濾波結果按四舍五入取整后存儲在YDAT開始的內存單元中,并將數據個數存放在字節(jié)變量NUM中。設x(n)為數據原值,M為剔除奇異值后剩余數據的個數,則剔除奇異值方法為:4.6綜合程序設計示例滑窗式濾波方法為:例如,設N=10,T1=1,T2=5,則●原數據:3,1,4,7,5,4,3,2,6,4●剔除奇異值后:3,1,4,5,4,3,2,4●濾波且四舍五入取整:3,1,3,3,4,4,2,44.6綜合程序設計示例解:在實際的信號處理和控制系統(tǒng)中,經常采用DSP、CPU或單片機構成,這樣對數據進行處理就遠比在普通微機上的復雜,因此,有必要進行說明。在實際環(huán)境的數據采集中,會受到干擾和噪聲的影響,也可能會產生不可預見的錯誤數據,導致數據明顯偏移正常范圍,這些值稱為奇異值。在對數據區(qū)進行處理之前,應該將奇異值剔除,這樣雖然會對處理精度有一定的影響,但不至于使算法失效,實際上,這樣的奇異值只有很少幾個,對系統(tǒng)精度幾乎沒有影響。

平滑濾波是常用的一種信號處理方法,這里采用5點平滑,并對結果要進行四舍五入處理。由于程序采用整數表示數據,因此,應該在除法之前完成四舍五入運算。4.6綜合程序設計示例記:則將分成兩部分:5的整倍數和余數,這樣四舍五入運算實際上就是對余數進行適當的處理:其中,f(.)表示四舍五入運算。直接利用整數運算的特性,可以簡化成:4.6綜合程序設計示例這表示,計算的四舍五入結果時,只需要將先加2,再完成除以5的操作.一般情況下,計算的四舍五入結果時,其結果為,其中int(.)表示取整運算。匯編語言程序如下:NEQU100 ;數據個數T1EQU10 ;低門限T2EQU50 ;高門限STACKSEGMENT DW256DUP(?)TOPLABELWORDSTACKENDS。

4.6綜合程序設計示例DATASEGMENTXDATDBN,T1,T2 ;輸入數據區(qū) X=17REPTNX=(X+79)mod256DBXENDMYDATDBNDUP(?) ;輸出數據區(qū)NUMDB? ;數據的實際個數BUF1 DBNDUP(?) DATAENDS4.6綜合程序設

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論