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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

AVR汇编百例浮点程序库Word格式.docx

1、不等,阶码大者浮点数值也大;只有阶码和尾数对应相等, CPC R8,R12 ;两浮点数才相等比较结果:Z=1时X1=X2,否则C=0时X1X2,C=1时X124,取被加数为和NX2A: LSR R13 ROR R14 ROR R15 DEC R17 BRNE NX2A ;加数阶小,右移加数对阶取被加数阶为和之阶 BRCC GOON RCALL INC3 ;舍入移出位 RJMP GOONNX3: BRCC COM1 ;阶差24,取加数为和LOOP: LSR R9 ROR R10 ROR R11 BRNE LOOP ;加数阶大,右移被加数对阶 RCALL INC3A ;GOON: SBRC R16

2、,6 SBRS R16,7 ;判别两数是否同号 RJMP SAMS ;同号转 SUB R15,R11 ;异号,执行减法,加数为被减数 SBC R14,R10 SBC R13,R9 BRCC NOM ;够减转 SUBI R16,$40 ;否则被减数数符求反为和之数符 RCALL NEG3 ;并将差求补NOM: MOV R17,R13 OR R17,R14 OR R17,R15 BREQ DON0 ;差为0转NMLOP: RJMP COM1 LSL R15 ROL R14 ROL R13 DEC R12 BRNE NMLOP ;规格化OV1: SEV ;阶码变为0,下溢(可取为0,不算溢出)SAM

3、S: ADD R15,R11 ADC R14,R10 ADC R13,R9 ;两数同号,执行加法 BRCC COM1 ROR R13 INC R12 ;有进位时右规1次($7F+1=$80溢出) BREQ OV1 ;阶码增1后变为0为上溢 BRNC COM1 RCALL INC3COM1: CLVCOMA: LDI R17,$7F AND R13,R17 ;正数数符为0DON:EXAD: RCALL SAV0 ;取被加数为和 SBRS R16,7 RJMP COMA ;配置数符DON0: CLR R12 ;浮点数为0范例65 ;浮点乘法子程序FPMU: TST R8 BREQ M0 ;被乘数为

4、0,积为0 BRNE M1 ;乘数为0,积也为0M0: RJMP G0 M1: RCALL DP ;处理积符号,计算积之阶码 BRCS OV2 BREQ OV2 ;判断溢出 MOV R5,R13 MOV R6,R14 MOV R7,R15 ;乘数转入R5,R6,R7 LDI R17,25 ;设右移部分积次数 CLR R13 CLR R14 CLR R15 ;r13r14r15清除,存放积 CLCLOOP1: BRCC M2乘数右移移出位为1,被乘数加入部分积1次M2: ROR R5 ROR R6 ROR R7 ;部分积连同乘数右移1位 BRNE LOOP1 ;尾数相乘计算完成? SBRC R1

5、3,7 RJMP M3 ;乘积最高位为1 转 ROL R5 ROL R15 ROL R13 ;乘积最高位为0,高4位字节左移1位 SBRS R5,7 RJMP M5末位字节舍入 BRNE M5 SEC ;舍入后R13变为0 ROR R13 ;将其改为$80(即0.5) RJMP COM2M5: DEC R12 ;舍入后R13不为0 BRNE COM2 ;阶码减1OV2:变为0为溢出 M3: SBRC R5,7乘积低3位字节舍入COM2:正数将符号位请除DON2:范例66FPDI: TST R12 ;浮点除法子程序 BREQ OV3 ;除数为0,溢出 BRNE D1 RJMP G0 ;被除数为0

6、,商为0D1: NEG R12 ;除数阶码求补,以加补码代替减原码处理商符号,计算商之阶码 BRCS OV3FPD3:左移相减试商25次,最后1次舍入 SUB R11,R15 SBC R10,R14 SBC R9,R13 BRCS D2 ;第一次尾数相减试商够减,商阶增1 SEC BRNE D3 ;商阶增1后不为0,转计商;否则为溢出OV3: SEVD2: ADD R11,R15 ADC R10,R14 ADC R9,R13 ;不够减则恢复被除数LOOP2: LSL R11 ROL R10 ROL R9 ;被除数算术左移 BRCS D4 ;进位位为1,够减,本位商1 SBC R9,R13 ;否

7、则相减试商 BRCS D2A RJMP D3 ;够减,本位商1D2A: ADD R11,R15 ;不够减,恢复被除数 ADC R9,R13 CLC ;本位商0 RJMP D3D4:被除数减去除数D3: BRNE D5 ;除法未完成,循环(1-1=0,不溢出) MOV R14,R6 MOV R15,R7 ;取回商 BRCC COM3第25位商舍入($800000-$FFFFFF不溢出,故INC3不会溢出!)COM3:配置商数符DON3:D5: ROL R7 ;在R5,R6,R7中记商(不必预先清除) ROL R6 ROL R5 ;商数左移1位并记商RJMP LOOP2范例67FPSQ:模拟手算开

8、平方子程序 ORI R16,$80 ;负数 建虚根标志FPS0: BREQ DON4 ;0的平方根为0 LSR R12 ;阶码算术右移1位 BRCC FSQ2移出位舍入先将位数增1(提前舍入) BRCS FSQ1 ;C=1,不够减若尾数变为0将其改为0.5($80-r13) RJMP FSQ2FSQ1: ROR R15 ;否则将为数算术右移FSQ2:开出25位根,末位舍入 MOV R8,R17 LDI R17,$40根恢复为移码 CLR R5 CLR R6 CLR R7 ;根扩展区清除 CLR R9 CLR R10 CLR R11 ;根存储区清除FSQ3: SUB R13,R17 SBC R7

9、,R11 SBC R6,R10 SBC R5,R9 ;试根 BRCS FSQ3A RJMP FSQ4 ;够减,本位根1FSQ3A: ADD R13,R17 ADC R7,R11 ADC R6,R10 ADC R5,R9 ;否则恢复开平方数之尾数本位商0 FSQ4: DEC R8 BRNE FSQ5 ;开出第25位根?FQDON: MOV R15,R11 ;回送根尾数 BRCC COM4第25位根舍入COM4:根尾数为正数DON4:FSQ5: ROL R11根尾数带进位左移,记根 ROL R13 ROL R7开平方数之尾数连同扩展区左移2位 BRCC FSQ3 ;未产生进位,循环 RJMP FQ

10、DON ;否则进位为第25位根(不须试,并结束子程序)!范例68 ;牛顿迭代开平方子程序FSQR: BREQ SQRT ; ANDI R16,$7E虚根标志 SBRC R12,0 INC R16 ;阶码为奇数尾数变为正数 LSR R12 ADC R12,R17 ;得到根之移码 PUSH R12 ;暂存 MOV R12,R17 SBRC R16,0得到X1的阶码(0.5X12) RCALL LD1 ;存 X1 SBRS R16,0 ;阶码为奇数时算术右移尾数即得到X1之尾数;否则将其最高位字节加上$40得到首次根r0=(1+x1)/2 LDI R17,3 MOV R0,R17 ;迭代3次FSQL

11、P: RCALL LD2 RCALL GET1 RCALL FPDI RCALL GET2 RCALL FPAD计算r(i+1)=(x1/ri+ri)/2 DEC R0 BRNE FSQLP ;r3的尾数为根之尾数 POP R12 ;取回根之阶码SQRT:r16,7=1 为虚数根范例69 ;基本运算程序的演示程序 DMST1: .EQU SPL=$3D .EQU SPH=$3E LDI R16,2 ;high(ramend) OUT SPH,R16 LDI R16,$5F ;low(ramend) OUT SPL,R16 LDS R11,$60 ;r11,7:数符 r11,6 :阶符 r11,

12、5-0:阶(最大为38) LDS R12,$61 ;r12-r15:尾数 LDS R13,$62 LDS R14,$63 LDS R15,$64 ;尾数共8位BCD码 RCALL DTOB ;转为二进制浮点数 RCALL LD2 ; LDS R11,$65 ;数符 r11,阶符 r11,5-0: LDS R12,$66 ; LDS R13,$67 LDS R14,$68 LDS R15,$69 RCALL GET2 ;取第一操作数 RCALL FPAD ;调基本运算子程序之一(FPSU/FPMU/FPDI) RCALL BTOD ;转回十进制浮点数DMRET: RJMP DMRET范例70 ;

13、辅助子程序KP2: MOV R8,R12 ;复制第二操作数LD1: STS $70,R12 ;存浮点数 STS $71,R13 STS $72,R14 SYS $73,R15LD2: STS $74,R12 ; STS $75,R13 STS $76,R14 STS $77,R15LD3: STS $78,R12 ; STS $79,R13 STS $7A,R14 STS $7B,R15GET1: LDS R8,$70 ;取浮点数 LDS R9,$71 LDS R10,$72 LDS R11,$73GET2: LDS R8,$74 ; LDS R9,$75 LDS R10,$76 LDS R1

14、1,$77GET3: LDS R8,$78 ; LDS R9,$79 LDS R10,$7A LDS R11,$7BINVPI: LDI R17,$86 ;取浮点数180/ LDI R17,$65 MOV R9,R17 LDI R17,$2E MOV R10,R17 LDI R17,$E1 MOV R11,R17G90: LDI R17,$87 ;取浮点数90 LDI R17,$34 CLR R11DTOR: RCALL PI18 ;角度化为弧度 RJMP FPMURTOD: RCALL INVPI ;弧度化为角度GHPI: LDI R17,$81 ;取浮点数/2 LDI R17,$49 LD

15、I R17,$0f LDI R17,$DBG01: LDI R17,$7D ;取浮点数0.1 LDI R17,$4C LDI R17,$CC LDI R17,$CDG1:取浮点数1PI18: LDI R17,$7B ;取浮点数/180 LDI R17,$0E LDI R17,$FA LDI R17,$35GINT: LDI R17,R12 ;浮点数取整 CPI R17,$81 BRCC GINT1 RCALL G0 ;阶码$97,溢出 RCALL BRK ;分解出整数部分(在R9 R10 R11) SBRS R16,1正数返回NEG3A: COM R11 ;负数求(r9 r10 r11)之补

16、COM R10 COM R9INC3A: LDI R17,255 SUBI R11,R17 SBCI R10,R17 SBCI R9,R17 ;求反后加1GOVER: ORI R16,$20 ;设整数部分超过23位标志BRK: ANDI R16,$DF ;将正浮点数分解为整数/小数两部分 SUBI R17,$80 BREQ BRKRT BRCS LOOPT CPI R17,$19 ;整数部分超过24位为溢出LOOP4: ROL R9 BRNE LOOPT ;左移位数为阶码-$80,整数部分进入r9-r11中BRKRT:LOOPT: LSR R13 ;只有小数部分右移尾数($80-阶码)位 IN

17、C R17 BRNE LOOPTNRML: ANDI R16,$BF ;1字节正整数(在R13中)规格化为浮点数 CLR R15 LDI R12,$88 ;设阶码 RJMP NMLOPG10: LDI R17,$84 ;取浮点数10 LDI R17,$20GLN2:取浮点数ln2(=0.6931471806) LDI R17,$31 LDI R17,$72 LDI R17,$18GLN10: LDI R17,$82 ;取浮点数ln10(=2.302585093) LDI R17,$13 LDI R17,$5D LDI R17,$8EINVX:计算1/X, X=0时溢出 BRNE INVOV4:

18、INV: RCALL G1 ;取1 RJMP FPDI 范例71 ;用荷纳法计算多项式值子程序FPLN1: ORI R16,$10 ;设计算奇函数(lnx,sinx,arcsinx 等)标志 RCALL LD3 ;存X RCALL KP2 RCALL FPMU ;计算X2 RJMP FLN0 ; FPLN2: ANDI R16,$EF ;设计算偶函数(EXP,COSX等)标志 FLN0:存T,T=X 或T=X2 POP R30 POP R31 ;系数表数据地址进入Z LSL R30 ROL R31 ;由按字取数变为按字节取数 LPM ;r0-(z)取阶码 MOV R8,R0 ADIW R30,1 ;指针增1取尾数高位字节 MOV R9,R0z+1取尾数中

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

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