ImageVerifierCode 换一换
格式:DOCX , 页数:201 ,大小:68.72KB ,
资源ID:23618222      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23618222.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(说明此程序清单的格式与注解以书中为准.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

说明此程序清单的格式与注解以书中为准.docx

1、说明此程序清单的格式与注解以书中为准说明:此程序清单的格式与注解以书中为准。 程序清单:清单1ORG2000HADD0:CLRC;双精度加法子程序ADC0:XCHA,R7;双精度带进位位加法子程序ADDCA,R3XCHA,R7XCHA,R6ADDCA,R2XCHA,R6RETADD1:CLRC;双精度加法子程序ADC1:XCHA,R7;双精度带进位位加法子程序ADDCA,R5XCHA,R7XCHA,R6ADDCA,R4XCHA,R6RETADD2:CLRC;双精度加法子程序ADD2:XCHA,R7;双精度带进位位加法子程序RLCAXCHA,R7XCHA,R6RLCAXCHA,R6RETSUBO

2、:CLRC;双精度减法子程序SBCO:XCHA,R7;双精度带进位位减法子程序SUBBA,R3XCHA,R7XCHA,R6SUBBA,R2XCHA,R6RETSUB1:CLRC;双精度减法子程序SBC1:XCHA,R7;双精度带进位位减法子程序SUBBA,R5XCHA,R7XCHA,R6SUBBA,R2XCHA,R6RETEX:XCHA,R0;两浮点数交换子程序XCHA,R4XCHA,R0EXT:XCHA,R1;两浮点数的尾数交换子程序XCHA,R5XCHA,R1EXX:XCHA,R2;双字节交换XCHA,R6XCHA,R2XCHA,R3XCHA,R7XCHA,R3RETSAVO:MOVR4,

3、08H;第1操作数(浮点数)装入0CH0FH中SAVT:MOVR5,09HMOVR6,0AHMOVR7,0BHRETDP:MOVA,R5;取存积(商)数符,计算积(商)的阶码子程序XRLA,R1RLCAMOV7EH,C;存积(商)数符MOVA,R0ADDA,R4;阶码相加(除数阶码已变为补码)JNCDP1ADDA,80H;有进位,和再加上80H,如有进位,为溢出MOVR4,ARETDP1:SUBBA,80H;无进位,和减去80H,如有借位或差等于0,也为溢出MOVR4,ARETSHIF:CLRC;尾数算术左移1位子程序H0:XCHA,R7;尾数带进位左移1位RLCAXCHA,R7XCHA,R6

4、RLCAXCHA,R6XCHA,R5RLCAXCHA,R5RETLR0:XCHA,R3;尾数带进位位左移1位子程序RLCAXCHA,R3XCHA,R2RLCAXCHA,R2XCHA,R1RLCAXCHA,R1RETSRA0:CLRC;尾数逻辑右移1位子程序SRA:XCHA,R5;尾数带进位位右移1位SRA1:RRCA;A R6 R7带进位位右移1位,结果在R5 R6 R7中XCHA,R5XCHA,R6RRCAXCHA,R6XCHA,R7RRCAXCHA,R7RETRRO:XCHA,R1;尾数带进位位右移1位子程序RRCAXCHA,R1XCHA,R2RRCAXCHA,R2XCHA,R3RRCAX

5、CHA,R3RETINC3:INCR7;尾数增1子程序CJNER7,0,RET0INCR6CJNER6,0,RET0INCR5RET0:RET清单2 FPCP:MOVA,R1;被减数x1与减数x2比较大小子程序XRLA,R5JNBACC.7,CP1;两数同号,转CP1CP0:MOVA,R1CLRCSUBBA,R5;异号,比较尾数高位字节即可RETCP1:MOVA,R1JNBACC.7,CP2;正数与正数相比较,转CP2ACALLCP2JZCP4;除非两数相等,不然转CP4CPLC;负数与负数比较对CY的影响与正数相比恰恰相反RETCP2:MOVA,R4;先比较两数的阶CLRCSUBBA,R0J

6、NZCP4;不等,即可定下大小关系CP3:MOVA,R5SUBBA,R1;阶相等时,由尾数相比较定大小JNZCP4MOVA,R6;依高位字节到低位字节的顺序比较SUBBA,R2JNZCP4MOVA,R7;只有阶码和尾数对应相等时,两数才相等SUBBA,R3;比较结果ACC=0,两数相等,不然CY=1时x1x2,CP4:RET;CY=0时,x1x2程序清单:清单3FPSU:XRL0DH,80H;浮点减法子程序,减数数符求反后为加数FPAD:MOVA,R0;浮点加法子程序JZDON;被加数等于0,加数为和FPLAD:MOVA,R4JZSAV0;加数等于0,被加数为和NX2:MOVA,R1RLCAM

7、OV7AH,C;存被加数数符MOVA,R5RLCAMOV7BH,C;存加数数符ORL09H,80HORL0DH,80H;恢复尾数最高位CLRCMOVA,R4SUBBA,R0;加数阶减去被加数的阶JNCNX3CPLAINCAMOVR4,A;阶差为负,取绝对值ADDA,0E7HJCEXAD;|阶差|24,取被加数为和ACALLSRA0;右移加数尾数,对阶DJNZR4,-2MOVA,R0MOVR4,A;被加数的阶(大阶)为和的阶JNCGOONACALLINC3;尾数欲截去部分四舍五入SJMPGOONNX3:MOVR0,AJZGOON;阶差为0,不对阶ADDA,0E7HJCCOM;阶差24,取加数为和

8、LOOP:CLRCACALLRR0DJNZR0,LOOP;右移被加数尾数,对阶JNCGOONINCR3CJNER3,0,GOONINCR2CJNER2,0,GOONINCR1;对尾数截去部分四舍五入GOON:MOVA,2FHADDA,4;判断两数符是否相同JNBACC.3,SAMS;同号,转SAMSACALLSUB0;异号,尾数相减,以加数作为被减数MOVA,R5SUBBA,R1MOVR5,AJNCNOMCPL7BH;不够减,加数数符求反CLRCCLRASUBBA,R7MOVR7,ACLRASUBBA,R6MOVR6,ACLRASUBBA,R5MOVR5,A;差求补NOM:MOVA,R5ORL

9、A,R6ORLA,R7JZDON0;差为0,取阶码为0NX5:MOVA,R5JBACC.7,COMACALLSHIFDJNZR4,NX5;左规检查OV1:LJMP0FFFFH;阶码变为0,为溢出(可用LJMP指令引导处理溢出,下同)SAMS:ACALLADD0;同号,执行加法MOVA,R5ADDCA,R1MOVR5,AJNCCOMACALLSRA;有进位,右规1次INCR4MOVA,R4JZOV1COM:JBC7BH,DONCOMA:ANL0DH,7FH;配置数符DON:RETEXAD:ACALLSAV0;取被加数为和JNB7AH,COMA;置数符RETDON0:MOVR4,A;取浮点数0的阶

10、码RET程序清单:清单4FPMU:MOVA,R0;浮点乘法子程序JZM0MOVA,R4JNZM1M0:AJMPG0;乘数中有为0者,积为0M1:ACALLDP;积符,积阶处理JZOV2JCOV2;积阶处理结果,为0或CY=1为溢出ORL09H,80HORL0DH,80H;恢复尾数最高位MOV1DH,R5MOV1EH,R6MOV1FH,R7;乘数之尾数送入第3组寄存器MOVR0,25;右移相加25次CLRAMOVR6,AMOVR7,A;ACC,R6,R7为部分积累加器CLRCLOOP1:JNCM2ACALLADD0ADDCA,R1;乘数移出位等于1 ,被乘数往部分积里加1次M2:ACALLSRA

11、1XCHA,R5CPLRS1ACALLSRACPLRS1;部分积带进位位整体右移1位DJNZR0,LOOP1MOVR5,AJBACC.7,M3;查积最高位MOVA,1DHRLCAACALLH0;积最高位为0,积整体算术左移1位JNBACC.7,M5ACALLINC3;尾数截去部分四舍五入CJNER5,0,M5MOVR5,80H;调整SJMPCOM2M5:DJNZR4,COM2;阶减1为0,为溢出OV2:LJMP0FFFFHM3:MOVA,1DHJNBACC.7,COM2ACALLINC3;尾数截去部分四舍五入COM2:JBC7EH,DON2;配置数符ANL0DH,7FHDON2:RET程序清单

12、:清单5FPDI:MOVA,R4;浮点除法子程序JZOV3;除数为0,溢出CPLAINCAMOVR4,A;除数阶码求补,为DP子程序准备MOVA,R0JNZD1AJMPG0;被除数为0,商为0D1:ACALLDP;商符号,商阶处理JZOV3JCOV3;商阶等于0或CY=1为溢出ORL09H,80HORL0DH,80H;恢复尾数最高位FPD3:ACALLEXT;尾数交换MOVR0,19H;左移试商25次,最后1次四舍五入ACALLSUB0XCHA,R5SUBBA,R1;试商JCD2INCR4;够减,商阶增1CJNER4,0,D3OV3:LJMP0FFFFH;商阶变为0,则为溢出D2:ACALLA

13、DD0ADDCA,R1;不够减,恢复被除数LOOP2:ACALLADD2RLCA;被除数算术左移1位JCD4;有进位(必定够减),转ACALLSUB0SUBBA,R1JNCD3;无进位,试商够减,转ACALLADD0ADDCA,R1;试商不够减,恢复被除数SJMPD3D4:ACALLSUB0SUBBA,R1CLRCD3:DJNZR0,D5;试商25次?MOVR5,1DHMOVR6,1EHMOVR7,1FH;回送商JCCOM3ACALLINC3;第25次够减,商加1COM3:JBC7EH,DON3ANL0DH,7FH;配置数符DON3:RETD5:CPLC;进位位求反为本位商CPLRS1ACAL

14、LH0;在第3组寄存器中记商CPLRS1SJMPLOOP2程序清单:清单6FPSQ:MOVA,R5;浮点数开平方子程序,先置实根标志RLCAMOV7EH,C;负数,改为虚根标志FPS0:MOVA,R4JZDON4;0的平方根为0ORL0DH,80H;尾数恢复为原码CLRCRRCA;阶码逻辑右移1位(折半)JNCS2INCA;阶码为奇数,折半后增1ACALLINC3ACALLSRA;尾数增1后折半CJNER5,0,S2MOVR5,80H;调整S2:ADDA,40H;阶码恢复为移码MOVR4,AMOV1DH,R5MOV1EH,R6MOV1FH,R7;尾数移入第3组寄存器CLRAMOVR1,AMOV

15、R2,AMOVR3,A;根尾数存储区清除MOVR6,AMOVR7,A;被开方数尾数扩展区(ACC,R6,R7)清除MOVR0,19H;试根25次,最后1次四舍五入S3:CLRCXCHA,1DHSUBBA,40HXCHA,1DHACALLSBC0SUBBA,R1;试根JNCS4XCHA,1DHADDA,40HXCHA,1DHACALLADC0ADDCA,R1;不够减,恢复尾数S4:DJNZR0,S5ACALLSAVT;回送平方根尾数JCCOM4ACALLINC3;四舍五入COM4:ANL0DH,7FH;置数符DON4:RETS5:CPLC;进位位求反为本位根ACALLLR0;记根CPLRS1AC

16、ALLSHIFCPLRS1ACALLADC2RLCACPLRS1ACALLSHIFCPLRS1ACALLADC2RLCA;被开平方数的尾数算术左移2位SJMPS3程序清单:清单7FSQR:MOVA,R5;浮点数牛顿迭代开平方子程序,先置实根标志RLCAMOV7EH,C;实根/虚根标志MOVA,R4JZSQRT;0的平方根为0ANL0DH,7FH;尾数恢复为正数MOVA,R4MOVR0,ACLRCRRCAADDCA,40HMOV1CH,A;存根的阶码MOVA,R0ANLA,1SETBACC.7MOVR4,A;变x为x1(0.5x12)LCALLLD1;存x1LCALLSRA0CJNER4,80H

17、,FSQR1ORL0DH,40H;得到首次根r0=(1+x1)/2FSQR1:MOVB,3FSQLP:LCALLLD2LCALLGET1LCALLFPDILCALLGET2LCALLFPADDECR4;计算ri+1=(xi+x1/ri)/2DJNZB,FSQLPMOVR4,1CH;取回根的阶码SQRT:RET基本运算子程序演示程序清单清单8DMST1:MOVSP,70H;基本运算子程序的演示程序SETBRS0MOVR1,20HMOVR2,21HMOVR3,22HMOVR4,23HMOVR5,24HMOVR6,25HMOVR7,26H;取第1操作数LCALLDTOB;转成二进制浮点数LCALLL

18、D2;存入MOVR1,27HMOVR2,28HMOVR3,29HMOVR4,2AHMOVR5,2BHMOVR6,2CHMOVR7,2DH;取第2操作数LCALLDTOB;转成二进制浮点数LCALLGET2;取第1操作数LCALLFPAD;调加、减、乘、除、对数函数、指数函数子程序之一LCALLBTOD;转换成十进制浮点数SJMP程序清单:清单9LD0:MOV08H,R4;装入浮点数MOV09H,R5MOV0AH,R6MOV0BH,R7RETLD1:MOV30H,R4;存浮点数MOV31H,R5MOV32H,R6MOV33H,R7RETLD2:MOV34H,R4;存浮点数MOV35H,R5MOV

19、36H,R6MOV37H,R7RETLD3:MOV38H,R4;存浮点数MOV39H,R5MOV3AH,R6MOV3BH,R7RETLD4:MOV18H,R4;存浮点数MOV19H,R5MOV1AH,R6MOV1BH,R7RETGET1:MOVR0,30H;取浮点数MOVR1,31HMOVR2,32HMOVR3,33HRETGET2:MOVR0,34H;取浮点数MOVR1,35HMOVR2,36HMOVR3,37HRETGET3:MOVR0,38H;取浮点数MOVR1,39HMOVR2,3AHMOVR3,3BHRETGET4:MOVR0,18H;取浮点数MOVR1,19HMOVR2,1AHMO

20、VR3,1BHRETINVPI:MOVR0,86H;取180/MOVR1,65HMOVR2,2EHMOVR3,0E0HRETG90:MOVR0,87H;取浮点数90MOVR1,34HCLRAMOVR2,AMOVR3,ARETGTOR:ACALLPI18;角度化为弧度子程序AJMPFPMURTOG:ACALLINVPI;弧度化为角度子程序AJMPFPMUGHPI:MOVR0,81H;取浮点数 /2MOVR1,49HMOVR2,0FHMOVR3,0DBHRETG01:MOVR0,7DH;取浮点数0.1MOVR1,4CHMOVR2,0CCHMOVR3,0CDHRETG1:MOVR0,81H;取浮点数

21、1CLRAMOVR1,AMOVR2,AMOVR3,ARETPI18:MOVR0,7BH;取浮点数/180MOVR1,0EHMOVR2,0FAHMOVR3,35HRETGINT:CJNER4,81H,+3;将浮点数取整子程序JNCGINT1ACALLG0;阶码97H,溢出ACALLBRK;分离出整数部分JNB78H,GEND;正数结束CLRA;负数求其补CLRCSUBBA,R3MOVR3,ACLRASUBBA,R2MOVR2,ACLRASUBBA,R1MOVR1,AGEND:RETGOV:LJMP0FFFFHBRK:ORL0DH,80H;分解浮点数(正数)为整数,小数两部分CLRAMOVR1,A

22、MOVR2,AMOVR3,ALOOP4:ACALLSHIFACALLLR0DECR4CJNER4,80H,LOOP4;左移尾数(阶码-80H)位,移出部分为整数,在R1R3中RETLDD:CLR7BH;正整数(最多16位)规格化子程序MOVR7,0MOVR4,90HAJMPNOMG10:MOVR0,84H;取浮点数10MOVR1,20HCLRAMOVR2,AMOVR3,ARETGLN2:MOVR0,80H;取浮点数ln 2(=0.693 147 18)MOVR1,31HMOVR2,72HMOVR3,18HRETGLN10:MOVR0,82H;取浮点数ln 10(=2.302 585 1)MOV

23、R1,13HMOVR2,5DHMOVR3,8EHRETINVX:CJNER4,0,INV;计算1/x,x=0为溢出LJMP0FFFFHINV:ACALLG1AJMPFPDI程序清单:清单10FPLN1:SETB7CH;计算奇次多项式值(ln x、sin x、arcsin x 等)子程序ACALLLD4;存xACALLLD0ACALLFPMU;计算xxSJMPFLN0FPLN2:CLR7CH;计算ex展开式值/cos xFLN0:ACALLLD1;x(或xx)t,存tPOPDPHPOPDPLCLRAMOVCA,A+DPTRMOVR0,AINCDPTRCLRAMOVCA,A+DPTRMOVR1,A

24、INCDPTRCLRAMOVCA,A+DPTRMOVR2,AINCDPTRCLRAMOVCA,A+DPTRMOVR3,A;取anINCDPTRPLN:ACALLM1;计算(((ant+an-1)t+an-2)t+ai)tCLRAMOVCA,A+DPTRMOVR0,AINCDPTRCLRAMOVCA,A+DPTRMOVR1,AINCDPTRCLRAMOVCA,A+DPTRMOVR2,AINCDPTRCLRAMOVCA,A+DPTRMOVR3,A;取ai-1INCDPTRACALLFPLAD;计算((ant+an-1)t+an-2)t+ai)t+ai-1CLRAMOVCA,A+DPTRACALLG

25、ET1DECAJNZPLN;1为计算结束符PEND:JNB7CH,RENDACALLGET4ACALLM1;计算奇次多项式值,再乘以xREND:MOVA,1JMPA+DPTR;转至结束符的下一地址LNX,LGAX及LGX子程序清单如下:清单11LNX:MOVA,R4;计算对数函数子程序JZOV4MOVA,R5JNBACC.7,LN1OV4:LJMP0FFFFH;x0,溢出LN1:CLR79H;阶m的符号MOV1CH,R4;设x=2mt, 则ln x=mln 2+ln t,先存p=mMOVR1,35hMOVR2,4MOVR3,0f3h;t与22相比较LCALLCP3JNCLN5;t22转DEC1

26、CH;p=m-1, ln x=(m-1)ln 2+ln(2t)CLR7EH;(2t-1)为正MOVA,R5ORLA,R6ORLA,R7MOVR4,AJZLN5A;2t-1=0 勿计算ln(2t)LCALLLD0CLRCLCALLLR0;(2t-1)LCALLSRA0ORL0DH,80H;2t+1MOVR4,7EH;1/(2t+1)的阶SJMPLNTLPLN5:SETB7EH;(t-1)为负CLRCCLRASUBBA,R7MOVR3,ACLRASUBBA,R6MOVR2,ACLRASUBBA,R5ADDA,80HMOVR1,A;计算(t-1)LCALLSRA0ORL0DH,0C0H;计算(t+1

27、)MOVR4,7FH;1/(t+1)的阶LNTLP:CLRCLCALLLR0;(2t-1)或(t-1)规格化DECR4;调整(2t-1)/(2t+1)或(t-1)/(t+1)的阶MOVA,R1JNBACC.7,LNTLPLCALLFPD3;计算(2t-1)/(2t+1)或(t-1)/(t+1)LCALLFPLN1;计算ln t或ln(2t)DB7EH,12H,49H,25H;0.14285714DB7EH,4CH,0CCH,0CDH;0.2DB7FH,2AH,0AAH,0AAH;0.33333333DB81H,0,0,0;1DB1;结束符INCR4;得到ln tLN5A:MOVA,1CHADDA,80HJZLN53JCLN51CPLAINCACPL79H;p为负,取绝对值,记数符LN51:LCALLLD1MOVR6,AMOVR5,0LCALLLDD;|p|规格化LCALLGLN2;取ln 2LCALLFPMU;计算|p|ln 2LCALLGET1;取ln tJNB79H,LN52XRL0DH,80H;p0计算ln t-|p|ln 2LN52:LCALLFPAD;p0 计算ln t+|p|ln 2LN53:RETLGX:ACALLLNX;先计算ln xACALLGLN10;取ln 10ACALLEXAJMPFPDI;转计算log

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1