




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
此文檔收集于網絡,如有侵權,請聯(lián)系網站刪除積分分離PID控制算法程序2007-01-05 15:23;*P10,積分分離PID控制算法程序*;T、TD、TI、KP依次從30H,33H,36H,39H開始。;A,B,C,A,的值依次存在BLOCK1,BLOCK2,BLOCK3BLOCK4的地址里;這里B與C值相同;這里R(k)給的是定值ORG0000HEEQU20H;一閾值GKEQU23H;G(k)GK1EQU26H;G(k-1)FKEQU29H;F(k)FK1EQU2CH;F(k-1)BLOCK1EQU50H;ABLOCK2EQU53H;BBLOCK3EQU56H;CBLOCK4EQU5AH;AUKEQU5DH;存放結果BUFFEQU43H;暫存區(qū)BUFF1EQU46HBUFF2EQU49HBUFFR0EQU4CHRECEQU63H;采樣次數(shù)RKEQU66H;R(k)CKEQU69H;采樣數(shù)據(jù)始址EKEQU6CH;存放偏差值E(k)的始址EK1EQU70H;存放E(k-1)的始址TEST:MOVRK,#01H;常數(shù)Rk1.25的BCD碼浮點數(shù)MOVRK+1,#12HMOVRK+2,#50H;MOVE,#7EH;設定一閾值0.001的BCD碼浮點數(shù);MOVE+1,#10H;MOVE+2,#00HMOVE,#00H;閾值為0.3MOVE+1,#30HMOVE+2,#00HMOV3CH,#01H;常數(shù)1的BCD碼浮點數(shù)MOV3DH,#10HMOV3EH,#00HMOV40H,#01H;常數(shù)2的BCD碼浮點數(shù)MOV41H,#20HMOV42H,#00HMOV30H,#01H;T2.34的BCD碼浮點數(shù)MOV31H,#23HMOV32H,#40HMOV33H,#01H;Td3.54的BCD碼浮點數(shù)MOV34H,#35HMOV35H,#40HMOV36H,#01H;Ti1.12的BCD碼浮點數(shù)MOV37H,#11HMOV38H,#20HMOV39H,#01H;Kp1.25的BCD碼浮點數(shù)MOV3AH,#12HMOV3BH,#50HMOVR0,#E;將其轉換成二進制浮點操作數(shù)LCALLBTOFMOVR0,#RKLCALLBTOFMOVR0,#3CHLCALLBTOFMOVR0,#40HLCALLBTOFMOVR0,#39HLCALLBTOFMOVR0,#36HLCALLBTOF;將其轉換成二進制浮點操作數(shù)MOVR0,#33H;指向碼浮點操作數(shù)TdLCALLBTOF;將其轉換成二進制浮點操作數(shù)MOVR0,#30H;指向碼浮點操作數(shù)TLCALLBTOF;將其轉換成二進制浮點操作數(shù)MOVR1,#BUFFR0;保存30H中的值即T值LCALLFMOVR0MOVR1,#36H;計算A值(1+T/Ti+Td/T).KpLCALLFDIVMOVR1,#3CH;常數(shù)1LCALLFADDMOVR0,#33H;保存33H中的值MOVR1,#BUFFLCALLFMOVR0MOVR1,#BUFFR0LCALLFDIVMOVR1,#30H;30H里存的是T/Ti+1LCALLFADDMOVR1,#39HLCALLFMULMOVR1,#BLOCK1;將結果保存在BLOCK1中LCALLFMOVR0MOVR1,#BUFFR0;30H恢復原值MOVR0,#30HLCALLFMOVMOVR1,#BUFF;33H恢復原值MOVR0,#33HLCALLFMOVMOVR0,#40H;計算B的值Kp.(1+2.Td/T)MOVR1,#33HLCALLFMULMOVR1,#30HLCALLFDIVMOVR1,#3CHLCALLFADDMOVR1,#39HLCALLFMULMOVR1,#BLOCK2;保存B值到BLOCK2中LCALLFMOVR0MOVR0,#39H;計算C的值Kp.Td/TMOVR1,#33HLCALLFMULMOVR1,#30HLCALLFDIVMOVR1,#BLOCK3;保存C值到BLOCK3中LCALLFMOVR0MOVR0,#33H;計算A,保存33H中的值MOVR1,#BUFFR0LCALLFMOVR0MOVR1,#30HLCALLFDIVMOVR1,#3CHLCALLFADDMOVR1,#39HLCALLFMULMOVR1,#BLOCK4;保存A值到BLOCK4中LCALLFMOVR0MOVR1,#BUFFR0;恢復33H中的值LCALLFMOVMOVR0,#EK1;將EK1,F(xiàn)K1,GK1設初值0LCALLFCLRMOVR0,#FK1LCALLFCLRMOVR0,#GK1LCALLFCLRMOVREC,#04H;設置采樣次數(shù)LOOP:MOVCK,#01H;采樣數(shù)據(jù)暫時給了一個定值MOVCK+1,#10HMOVCK+2,#00HMOVR0,#CKLCALLBTOFMOVR0,#RK;保存R(k)中的值MOVR1,#BUFFR0LCALLFMOVR0MOVR1,#CKLCALLFSUB;計算R(k)-C(k)的值送給E(k)MOVR1,#EKLCALLFMOVR0MOVR1,#BUFFR0LCALLFMOV;恢復R(K)的值,釋放、BUFFR0MOVR0,#BUFFR0;EK存到BUFFR0MOVR1,#EKLCALLFMOVLCALLFABS;求EK的絕對值MOVR1,#E;判斷EK的絕對值與E的大小LCALLFCMPJCPID;EKG(k-1)MOVR1,#GKLCALLFMOVMOVR0,#FK1;F(k)-F(K-1)MOVR1,#FKLCALLFMOVMOVR0,#EK1;E(K)-E(K-1)MOVR1,#EKLCALLFMOVMOVR0,#UK;UK轉換成BCD碼浮點數(shù)輸出LCALLFTOBLCALLDELAY;等待采樣時刻DJNZREC,NEXT1SJMP$NEXT1:LJMPLOOPDELAY:MOVR7,#02HDELAY1:MOVR6,#0FFHDELAY2:DJNZR6,DELAY2DJNZR7,DELAY1RET;()標號:功能:浮點數(shù)格式化;入口條件:待格式化浮點操作數(shù)在R0中。;出口信息:已格式化浮點操作數(shù)仍在R0中。;影響資源:PSW、A、R2、R3、R4、位1FH堆棧需求:字節(jié)FSDT:LCALLMVR0;將待格式化操作數(shù)傳送到第一工作區(qū)中LCALLRLN;通過左規(guī)完成格式化LJMPMOV0;將已格式化浮點操作數(shù)傳回到R0中;()標號:功能:浮點數(shù)加法;入口條件:被加數(shù)在R0中,加數(shù)在R1中。;出口信息:OV=0時,和仍在R0中,OV=1時,溢出。;影響資源:PSW、A、B、R2R7、位1EH、1FH堆棧需求:字節(jié)FADD:CLRF0;設立加法標志SJMPAS;計算代數(shù)和;()標號:功能:浮點數(shù)減法;入口條件:被減數(shù)在R0中,減數(shù)在R1中。;出口信息:OV=0時,差仍在R0中,OV=1時,溢出。;影響資源:PSW、A、B、R2R7、位1EH、1FH堆棧需求:字節(jié)FSUB:SETBF0;設立減法標志AS:LCALLMVR1;計算代數(shù)和。先將R1傳送到第二工作區(qū)MOVC,F0;用加減標志來校正第二操作數(shù)的有效符號CLRA;*?應加的一條語句RRCAXRLA,R1MOVC,ACC.7ASN:MOV1EH,C;將第二操作數(shù)的有效符號存入位1EH中XRLA,R0;與第一操作數(shù)的符號比較RLCAMOVF0,C;保存比較結果LCALLMVR0;將R0傳送到第一工作區(qū)中LCALLAS1;在工作寄存器中完成代數(shù)運算MOV0:INCR0;將結果傳回到R0中的子程序入口INCR0MOVA,R4;傳回尾數(shù)的低字節(jié)MOVR0,ADECR0MOVA,R3;傳回尾數(shù)的高字節(jié)MOVR0,ADECR0MOVA,R2;取結果的階碼MOVC,1FH;取結果的數(shù)符MOVACC.7,C;拼入階碼中MOVR0,ACLRACC.7;不考慮數(shù)符CLROV;清除溢出標志CJNEA,#3FH,MV01;階碼是否上溢?*應為#40HSETBOV;設立溢出標志MV01:MOVA,R0;取出帶數(shù)符的階碼RETMVR0:MOVA,R0;將R0傳送到第一工作區(qū)中的子程序MOVC,ACC.7;將數(shù)符保存在位1FH中MOV1FH,CMOVC,ACC.6;將階碼擴充為補碼MOVACC.7,CMOVR2,A;存放在R2中INCR0MOVA,R0;將尾數(shù)高字節(jié)存放在R3中MOVR3,A;INCR0MOVA,R0;將尾數(shù)低字節(jié)存放在R4中MOVR4,ADECR0;恢復數(shù)據(jù)指針DECR0RETMVR1:MOVA,R1;將R1傳送到第二工作區(qū)中的子程序MOVC,ACC.7;將數(shù)符保存在位1EH中MOV1EH,CMOVC,ACC.6;將階碼擴充為補碼MOVACC.7,CMOVR5,A;存放在R5中INCR1MOVA,R1;將尾數(shù)高字節(jié)存放在R6中MOVR6,AINCR1MOVA,R1;將尾數(shù)低字節(jié)存放在R7中MOVR7,ADECR1;恢復數(shù)據(jù)指針DECR1RETAS1:MOVA,R6;讀取第二操作數(shù)尾數(shù)高字節(jié)ORLA,R7JZAS2;第二操作數(shù)為零,不必運算MOVA,R3;讀取第一操作數(shù)尾數(shù)高字節(jié)ORLA,R4JNZEQMOVA,R6;第一操作數(shù)為零,結果以第二操作數(shù)為準MOVR3,AMOVA,R7MOVR4,AMOVA,R5MOVR2,AMOVC,1EHMOV1FH,CAS2:RETEQ:MOVA,R2;對階,比較兩個操作數(shù)的階碼XRLA,R5JZAS4;階碼相同,對階結束JBACC.7,EQ3;階符互異MOVA,R2;階符相同,比較大小CLRCSUBBA,R5JCEQ4EQ2:CLRC;第二操作數(shù)右規(guī)一次MOVA,R6;尾數(shù)縮小一半RRCAMOVR6,AMOVA,R7RRCAMOVR7,AINCR5;階碼加一ORLA,R6;尾數(shù)為零否?JNZEQ;尾數(shù)不為零,繼續(xù)對階MOVA,R2;尾數(shù)為零,提前結束對階MOVR5,ASJMPAS4EQ3:MOVA,R2;判斷第一操作數(shù)階符JNBACC.7,EQ2;如為正,右規(guī)第二操作數(shù)EQ4:CLRCLCALLRR1;第一操作數(shù)右規(guī)一次ORLA,R3;尾數(shù)為零否?JNZEQ;不為零,繼續(xù)對階MOVA,R5;尾數(shù)為零,提前結束對階MOVR2,AAS4:JBF0,AS5;尾數(shù)加減判斷MOVA,R4;尾數(shù)相加ADDA,R7MOVR4,AMOVA,R3ADDCA,R6MOVR3,AJNCAS2LJMPRR1;有進位,右規(guī)一次AS5:CLRC;比較絕對值大小MOVA,R4SUBBA,R7MOVB,AMOVA,R3SUBBA,R6JCAS6MOVR4,B;第一尾數(shù)減第二尾數(shù)MOVR3,ALJMPRLN;結果規(guī)格化AS6:CPL1FH;結果的符號與第一操作數(shù)相反CLRC;結果的絕對值為第二尾數(shù)減第一尾數(shù)MOVA,R7SUBBA,R4MOVR4,AMOVA,R6SUBBA,R3MOVR3,ARLN:MOVA,R3;浮點數(shù)規(guī)格化ORLA,R4;尾數(shù)為零否?JNZRLN1MOVR2,#0C1H;階碼取最小值*?應為#C0HRETRLN1:MOVA,R3JBACC.7,RLN2;尾數(shù)最高位為一否?CLRC;不為一,左規(guī)一次LCALLRL1SJMPRLN;繼續(xù)判斷RLN2:CLROV;規(guī)格化結束RETRL1:MOVA,R4;第一操作數(shù)左規(guī)一次RLCA;尾數(shù)擴大一倍MOVR4,AMOVA,R3RLCAMOVR3,ADECR2;階碼減一CJNER2,#0C0H,RL1E;階碼下溢否?*應改為CJNER2,#0BFH,RL1E;CLRAMOVR3,A;階碼下溢,操作數(shù)以零計MOVR4,AMOVR2,#0C1H;*應改為MOVR2,#0C0HRL1E:CLROVRETRR1:MOVA,R3;第一操作數(shù)右規(guī)一次RRCA;尾數(shù)縮小一半MOVR3,AMOVA,R4RRCAMOVR4,AINCR2;階碼加一CLROV;清溢出標志CJNER2,#40H,RR1E;階碼上溢否?MOVR2,#3FH;階碼溢出SETBOVRR1E:RET;()標號:功能:浮點數(shù)乘法;入口條件:被乘數(shù)在R0中,乘數(shù)在R1中。;出口信息:OV=0時,積仍在R0中,OV=1時,溢出。;影響資源:PSW、A、B、R2R7、位1EH、1FH堆棧需求:字節(jié)FMUL:LCALLMVR0;將R0傳送到第一工作區(qū)中MOVA,R0XRLA,R1;比較兩個操作數(shù)的符號RLCAMOV1FH,C;保存積的符號LCALLMUL0;計算積的絕對值LJMPMOV0;將結果傳回到R0中MUL0:LCALLMVR1;將R1傳送到第二工作區(qū)中MUL1:MOVA,R3;第一尾數(shù)為零否?ORLA,R4JZMUL6MOVA,R6;第二尾數(shù)為零否?ORLA,R7JZMUL5MOVA,R7;計算R3R4R6R7R3R4MOVB,R4MULABMOVA,BXCHA,R7MOVB,R3MULABADDA,R7MOVR7,ACLRAADDCA,BXCHA,R4MOVB,R6MULABADDA,R7MOVR7,AMOVA,BADDCA,R4MOVR4,ACLRARLCAXCHA,R3MOVB,R6MULABADDA,R4MOVR4,AMOVA,BADDCA,R3MOVR3,AJBACC.7,MUL2;積為規(guī)格化數(shù)否?R7四舍五入MOVA,R7;左規(guī)一次RLCAMOVR7,ALCALLRL1MUL2:MOVA,R7JNBACC.7,MUL3INCR4MOVA,R4JNZMUL3INCR3MOVA,R3JNZMUL3MOVR3,#80HINCR2MUL3:MOVA,R2;求積的階碼ADDA,R5MD:MOVR2,A;階碼溢出判斷JBACC.7,MUL4JNBACC.6,MUL6MOVR2,#3FH;階碼上溢,設立標志SETBOVRETMUL4:JBACC.6,MUL6MUL5:CLRA;結果清零(因子為零或階碼下溢)MOVR3,AMOVR4,AMOVR2,#41HMUL6:CLROVRET;()標號:功能:浮點數(shù)除法;入口條件:被除數(shù)在R0中,除數(shù)在R1中。;出口信息:OV=0時,商仍在R0中,OV=1時,溢出。;影響資源:PSW、A、B、R2R7、位1EH、1FH堆棧需求:字節(jié)FDIV:INCR0MOVA,R0INCR0ORLA,R0DECR0DECR0JNZDIV1MOVR0,#41H;被除數(shù)為零,不必運算CLROVRETDIV1:INCR1MOVA,R1INCR1ORLA,R1DECR1DECR1JNZDIV2SETBOV;除數(shù)為零,溢出RETDIV2:LCALLMVR0;將R0傳送到第一工作區(qū)中MOVA,R0XRLA,R1;比較兩個操作數(shù)的符號RLCAMOV1FH,C;保存結果的符號LCALLMVR1;將R1傳送到第二工作區(qū)中LCALLDIV3;調用工作區(qū)浮點除法LJMPMOV0;回傳結果DIV3:CLRC;比較尾數(shù)的大小MOVA,R4SUBBA,R7MOVA,R3SUBBA,R6JCDIV4LCALLRR1;被除數(shù)右規(guī)一次SJMPDIV3DIV4:CLRA;借用R0R1R2作工作寄存器XCHA,R0;清零并保護之PUSHACCCLRAXCHA,R1PUSHACCMOVA,R2PUSHACCMOVB,#10H;除法運算,R3R4R6R7R0R1DIV5:CLRCMOVA,R1RLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVA,R4RLCAMOVR4,AXCHA,R3RLCAXCHA,R3MOVF0,CCLRCSUBBA,R7MOVR2,AMOVA,R3SUBBA,R6ANLC,/F0JCDIV6MOVR3,AMOVA,R2MOVR4,AINCR1DIV6:DJNZB,DIV5MOVA,R6;四舍五入CLRCRRCASUBBA,R3CLRAADDCA,R1;將結果存回R3R4MOVR4,ACLRAADDCA,R0MOVR3,APOPACC;恢復R0R1R2MOVR2,APOPACCMOVR1,APOPACCMOVR0,AMOVA,R2;計算商的階碼CLRCSUBBA,R5LCALLMD;階碼檢驗LJMPRLN;規(guī)格化;()標號:功能:浮點數(shù)清零;入口條件:操作數(shù)在R0中。;出口信息:操作數(shù)被清零。;影響資源:A堆棧需求:字節(jié)FCLR:INCR0INCR0CLRAMOVR0,ADECR0MOVR0,ADECR0MOVR0,#41HRET;()標號:功能:浮點數(shù)判零;入口條件:操作數(shù)在R0中。;出口信息:若累加器A為零,則操作數(shù)R0為零,否則不為零。;影響資源:A堆棧需求:字節(jié)FZER:INCR0INCR0MOVA,R0DECR0ORLA,R0DECR0JNZZEROMOVR0,#41HZERO:RET;()標號:功能:浮點數(shù)傳送;入口條件:源操作數(shù)在R1中,目標地址為R0。;出口信息:R0=R1,R1不變。;影響資源:A堆棧需求:字節(jié)FMOV:INCR0INCR0INCR1INCR1MOVA,R1MOVR0,ADECR0DECR1MOVA,R1MOVR0,ADECR0DECR1MOVA,R1MOVR0,ARET;(.1)標號:R0功能:浮點數(shù)傳送;入口條件:源操作數(shù)在R0中,目標地址為R1。;出口信息:R1=R0,R0不變。;影響資源:A堆棧需求:字節(jié)FMOVR0:INCR1INCR1INCR0INCR0MOVA,R0MOVR1,ADECR1DECR0MOVA,R0MOVR1,ADECR1DECR0MOVA,R0MOVR1,ARET;()標號:功能:雙字節(jié)十六進制定點數(shù)轉換成格式化浮點數(shù);入口條件:雙字節(jié)定點數(shù)的絕對值在R0中,數(shù)符在位1FH中,整數(shù)部分的位數(shù)在A中。;出口信息:轉換成格式化浮點數(shù)在R0中(三字節(jié))。;影響資源:PSW、A、R2、R3、R4、位1FH堆棧需求:字節(jié)DTOF:MOVR2,A;按整數(shù)的位數(shù)初始化階碼MOVA,R0;將定點數(shù)作尾數(shù)MOVR3,AINCR0MOVA,R0MOVR4,ADECR0LCALLRLN;進行規(guī)格化LJMPMOV0;傳送結果到R0中;()標號:功能:格式化浮點數(shù)轉換成雙字節(jié)定點數(shù);入口條件:格式化浮點操作數(shù)在R0中。;出口信息:OV=1時溢出,OV=0時轉換成功:定點數(shù)的絕對值在R0中(雙字節(jié)),數(shù)符;在位1FH中,F(xiàn)0=1時為整數(shù),CY=1時為一字節(jié)整數(shù)一字節(jié)小數(shù),否則為純小數(shù)。;影響資源:PSW、A、B、R2、R3、R4、位1FH堆棧需求:字節(jié)FTOD:LCALLMVR0;將R0傳送到第一工作區(qū)MOVA,R2JZFTD4;階碼為零,純小數(shù)JBACC.7,FTD4;階碼為負,純小數(shù)SETBCSUBBA,#10HJCFTD1SETBOV;階碼大于,溢出RETFTD1:SETBCMOVA,R2SUBBA,#8;階碼大于否?JCFTD3FTD2:MOVB,#10H;階碼大于,按雙字節(jié)整數(shù)轉換LCALLFTD8SETBF0;設立雙字節(jié)整數(shù)標志CLRCCLROVRETFTD3:MOVB,#8;按一字節(jié)整數(shù)一字節(jié)小數(shù)轉換LCALLFTD8SETBC;設立一字節(jié)整數(shù)一字節(jié)小數(shù)標志CLRF0CLROVRETFTD4:MOVB,#0;按純小數(shù)轉換LCALLFTD8CLROV;設立純小數(shù)標志CLRF0CLRCRETFTD8:MOVA,R2;按規(guī)定的整數(shù)位數(shù)進行右規(guī)*階碼是擴展后的值CJNEA,B,FTD9MOVA,R3;將雙字節(jié)結果傳送到R0中MOVR0,AINCR0MOVA,R4MOVR0,ADECR0RETFTD9:CLRCLCALLRR1;右規(guī)一次SJMPFTD8;()標號:功能:浮點碼轉換成格式化浮點數(shù);入口條件:浮點碼操作數(shù)在R0中。;出口信息:轉換成的格式化浮點數(shù)仍在R0中。;影響資源:PSW、A、B、R2R7、位1DH1FH堆棧需求:字節(jié)BTOF:INCR0;判斷是否為零。INCR0MOVA,R0MOVR7,ADECR0MOVA,R0MOVR6,ADECR0ORLA,R7JNZBTF0MOVR0,#41H;為零,轉換結束。RETBTF0:MOVA,R0MOVC,ACC.7MOV1DH,C;保存數(shù)符。CLR1FH;以絕對值進行轉換。MOVC,ACC.6;擴充階碼為八位。MOVACC.7,CMOVR0,AJNCBTF1ADDA,#19;是否小于?JCBTF2MOVR0,#41H;小于時以計。INCR0MOVR0,#0INCR0MOVR0,#0DECR0DECR0RETBTF1:SUBBA,#19JCBTF2MOVA,#3FH;大于時封頂。MOVC,1DHMOVACC.7,CMOVR0,AINCR0MOVR0,#0FFHINCR0MOVR0,#0FFHDECR0DECR0RETBTF2:CLRA;準備將碼尾數(shù)轉換成十六進制浮點數(shù)。MOVR4,AMOVR3,AMOVR2,#10H;至少兩個字節(jié)。BTF3:MOVA,R7ADDA,R7DAAMOVR7,AMOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R4RLCAMOVR4,AMOVA,R3RLCAMOVR3,ADECR2JNBACC.7,BTF3;直到尾數(shù)規(guī)格化。MOVA,R6;四舍五入。ADDA,#0B0H;*加#80H,也可以CLRAADDCA,R4MOVR4,ACLRAADDCA,R3MOVR3,AJNCBTF4MOVR3,#80H;*有進位右規(guī)一次INCR2BTF4:MOVDPTR,#BTFL;準備查表得到十進制階碼對應的浮點數(shù)。MOVA,R0ADDA,#19;計算表格偏移量。MOVB,#3MULABADDA,DPLMOVDPL,AJNCBTF5INCDPHBTF5:CLRA;查表。MOVCA,A+DPTRMOVC,ACC.6MOVACC.7,CMOVR5,AMOVA,#1MOVCA,A+DPTRMOVR6,AMOVA,#2MOVCA,A+DPTRMOVR7,ALCALLMUL1;將階碼對應的浮點數(shù)和尾數(shù)對應的浮點數(shù)相乘。MOVC,1DH;取出數(shù)符。MOV1FH,CLJMPMOV0;傳送轉換結果。;()標號:功能:格式化浮點數(shù)轉換成浮點碼;入口條件:格式化浮點操作數(shù)在R0中。;出口信息:轉換成的浮點碼仍在R0中。;影響資源:PSW、A、B、R2R7、位1DH1FH堆棧需求:字節(jié)FTOB:INCR0MOVA,R0INCR0ORLA,R0DECR0DECR0JNZFTB0MOVR0,#41HRETFTB0:MOVA,R0MOVC,ACC.7MOV1DH,CCLRACC.7MOVR0,ALCALLMVR0MOVDPTR,#BFL0;絕對值大于或等于時的查表起點。MOVB,#0;十的次冪。MOVA,R2JNBACC.7,FTB1MOVDPTR,#BTFL;絕對值小于時的查表起點。MOVB,#0EDH;十的次冪。ADDA,#16JNCFTB1MOVDPTR,#BFLN;絕對值大于或等于時的查表起點。MOVB,#0FAH;十的次冪。FTB1:CLRA;查表,找到一個比待轉換浮點數(shù)大的整數(shù)冪。MOVCA,A+DPTRMOVC,ACC.6MOVACC.7,CMOVR5,AMOVA,#1MOVCA,A+DPTRMOVR6,AMOVA,#2MOVCA,A+DPTRMOVR7,AMOVA,R5;和待轉換浮點數(shù)比較。CLRCSUBBA,R2JBACC.7,FTB2;差為負數(shù)。JNZFTB3MOVA,R6CLRCSUBBA,R3JCFTB2JNZFTB3MOVA,R7CLRCSUBBA,R4JCFTB2JNZFTB3MOVR5,B;正好是表格中的數(shù)。INCR5;冪加一。MOVR6,#10H;尾數(shù)為。MOVR7,#0SJMPFTB6;傳送轉換結果。FTB2:INCDPTR;準備表格下一項。INCDPTRINCDPTRINCB;冪加一。SJMPFTB1;FTB3:PUSHB;保存冪值。LCALLDIV3;相除,得到一個二進制浮點數(shù)的純小數(shù)。FTB4:MOVA,R2;取階碼。JZFTB5;為零嗎?CLRC;LCALLRR1;右規(guī)。SJMPFTB4FTB5:POPACC;取出冪值。MOVR5,A;作為十進制浮點數(shù)的階碼。LCALLHB2;轉換尾數(shù)的十分位和百分位。MOVR6,ALCALLHB2;轉換尾數(shù)的千分位和萬分位。MOVR7,AMOVA,R3;四舍五入。RLCACLRAADDCA,R7DAAMOVR7,ACLRAADDCA,R6DAAMOVR6,AJNCFTB6MOVR6,#10HINCR5FTB6:INCR0;存放轉換結果。INCR0MOVA,R7MOVR0,ADECR0MOVA,R6MOVR0,ADECR0MOVA,R5MOVC,1DH;取出數(shù)符。MOVACC.7,CMOVR0,ARETHB2:MOVA,R4;尾數(shù)擴大倍。MOVB,#100MULABMOVR4,AMOVA,BXCHA,R3MOVB,#100MULABADDA,R3MOVR3,AJNCHB21INCBHB21:MOVA,B;將整數(shù)部分轉換成碼。MOVB,#10DIVABSWAPAORLA,BRETBTFL:DB41H,0ECH,1EH;1.0000E-19DB45H,93H,93H;1.0000E-18DB48H,0B8H,78H;1.0000E-17DB4BH,0E6H,96H;1.0000E-16DB4FH,90H,1DH;1.0000E-15DB52H,0B4H,25H;1.0000E-14DB55H,0E1H,2EH;1.0000E-13DB59H,8CH,0BDH;1.0000E-12DB5CH,0AFH,0ECH;1.0000E-11DB5FH,0DBH,0E7H;1.0000E-10DB63H,89H,70H;1.0000E-9DB66H,0ABH,0CCH;1.0000E-8DB69H,0D6H,0C0H;1.0000E-7BFLN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省徐州市2024-2025學年高三下學期2月調研測試數(shù)學試卷(解析版)
- 內蒙古自治區(qū)赤峰市松山區(qū)2024-2025學年八年級上學期期末物理試題(原卷版+解析版)
- 4.3 探究熔化和凝固的特點 說課稿 2025年初中物理八年級上學期
- 年計生工作計劃
- 園長學期工作計劃
- 《深度學習項目案例開發(fā)》課件-任務三 使用數(shù)據(jù)增強抑制卷積神經網絡過擬合
- 浙江省臺州市溫嶺中學2024-2025學年高三下學期3月考試數(shù)學試題(原卷版+解析版)
- 《跨境電商》課件-8.產品優(yōu)化操作
- 農產品質量追溯與物流一體化解決方案
- 建設工程施工分包委托協(xié)議書
- 項目申報表雙語教學示范課程建設項目
- 工作交接表excel模板
- 朗讀技巧與方法指導
- 《中小學美術教學論》第一章 美術教學論及其研究的對象
- PFMEA模板完整版文檔
- 《茯苓功效研究(論文)》
- LS/T 1201-2020磷化氫熏蒸技術規(guī)程
- GB/T 27476.2-2014檢測實驗室安全第2部分:電氣因素
- GA 1010-2012看守所床具
- 清洗消毒滅菌技術操作規(guī)范 課件
- 四川大學教案-《高級語言程序設計I》
評論
0/150
提交評論