AVR汇编百例 - 浮点程序库.doc

上传人:壹****1 文档编号:562386458 上传时间:2022-10-01 格式:DOC 页数:35 大小:218.50KB
返回 下载 相关 举报
AVR汇编百例 - 浮点程序库.doc_第1页
第1页 / 共35页
AVR汇编百例 - 浮点程序库.doc_第2页
第2页 / 共35页
AVR汇编百例 - 浮点程序库.doc_第3页
第3页 / 共35页
AVR汇编百例 - 浮点程序库.doc_第4页
第4页 / 共35页
AVR汇编百例 - 浮点程序库.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《AVR汇编百例 - 浮点程序库.doc》由会员分享,可在线阅读,更多相关《AVR汇编百例 - 浮点程序库.doc(35页珍藏版)》请在金锄头文库上搜索。

1、 ;范例62 .ORG $A00 EXCH: MOV R5,R8 ;两浮点数交换子程序 MOV R8,R12 MOV R12,R5EXCH1: MOV R5,R9 ;尾数交换 MOV R9,R13 MOV R13,R5 MOV R5,R10 ;双字节交换 MOV R10,R14 MOV R14,R5 MOV R5,R11 MOV R11,R15 MOV R15,R5 RETDP: ANDI R16,$7F ;处理积/商数符,计算积/商阶码子程序 SBRC R9,7 SUBI R16,$80 SBRC R13,7 SUBI R16,$80 ;积/商符号放在r16,7 ADD R12,R8 ;移码

2、相加(除数阶码已求补) LDI R17,$80 BRCC DP1 ADD R12,R17 ;移码求和有进位,将和再加上$80,再有进位为溢出 RETDP1: SUB R12,R17 ;移码求和无进位,将和减去$80,有借位 RET ;或差为0也为溢出NEG3: COM R15 ;3字节数据求补 COM R14 ;先求反后加1 COM R13INC3: LDI R17,255 SUB R15,R17 ;以减去-1代替加1 SBC R14,R17 SBC R13,R17 RET;范例63 ;浮点数比较大小子程序 X1为被减数 X2为减数FPCP: SBRC R9,7 ;X1为正,跳行 RJMP C

3、P1 SBRC R13,7 ;X2为正,跳行 RJMP CP2 ;X1,X2异号FPCP1: CP R11,R15 ;X1,X2皆为正,以尾数低位字节,中位字节,高位字节和 CPC R10,R14 ;阶码的顺序(按无符号数)进行比较 CPC R9,R13 ;不等,阶码大者浮点数值也大;只有阶码和尾数对应相等, CPC R8,R12 ;两浮点数才相等 RET ;比较结果:Z=1时X1=X2,否则C=0时X1X2,C=1时X1X2,C=1时X124,取被加数为和NX2A: LSR R13 ROR R14 ROR R15 DEC R17 BRNE NX2A ;加数阶小,右移加数对阶 MOV R12,

4、R8 ;取被加数阶为和之阶 BRCC GOON RCALL INC3 ;舍入移出位 RJMP GOONNX3: CPI R17,24 BRCC COM1 ;阶差24,取加数为和LOOP: LSR R9 ROR R10 ROR R11 DEC R17 BRNE LOOP ;加数阶大,右移被加数对阶 BRCC GOON RCALL INC3A ;舍入移出位GOON: SBRC R16,6 SUBI R16,$80 SBRS R16,7 ;判别两数是否同号 RJMP SAMS ;同号转 SUB R15,R11 ;异号,执行减法,加数为被减数 SBC R14,R10 SBC R13,R9 BRCC N

5、OM ;够减转 SUBI R16,$40 ;否则被减数数符求反为和之数符 RCALL NEG3 ;并将差求补NOM: MOV R17,R13 OR R17,R14 OR R17,R15 BREQ DON0 ;差为0转NMLOP: SBRC R13,7 RJMP COM1 LSL R15 ROL R14 ROL R13 DEC R12 BRNE NMLOP ;规格化OV1: SEV ;阶码变为0,下溢(可取为0,不算溢出) RETSAMS: ADD R15,R11 ADC R14,R10 ADC R13,R9 ;两数同号,执行加法 BRCC COM1 ROR R13 ROR R14 ROR R1

6、5 INC R12 ;有进位时右规1次($7F+1=$80溢出) BREQ OV1 ;阶码增1后变为0为上溢 BRNC COM1 RCALL INC3COM1: CLV SBRC R16,6 RETCOMA: LDI R17,$7F AND R13,R17 ;正数数符为0DON: RETEXAD: RCALL SAV0 ;取被加数为和 SBRS R16,7 RJMP COMA ;配置数符 RETDON0: CLR R12 ;浮点数为0 RET;范例65 ;浮点乘法子程序FPMU: TST R8 BREQ M0 ;被乘数为0,积为0 TST R12 BRNE M1 ;乘数为0,积也为0M0: R

7、JMP G0 M1: RCALL DP ;处理积符号,计算积之阶码 BRCS OV2 BREQ OV2 ;判断溢出 LDI R17,$80 OR R9,R17 OR R13,R17 ;恢复尾数最高位 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 ADD R15,R11 ADC R14,R10 ADC R13,R9 ;乘数右移移出位为1,被乘数加入部分积1次M2: ROR R13 ROR R

8、14 ROR R15 ROR R5 ROR R6 ROR R7 ;部分积连同乘数右移1位 DEC R17 BRNE LOOP1 ;尾数相乘计算完成? SBRC R13,7 RJMP M3 ;乘积最高位为1 转 ROL R5 ROL R15 ROL R14 ROL R13 ;乘积最高位为0,高4位字节左移1位 SBRS R5,7 RJMP M5 RCALL INC3 ;末位字节舍入 BRNE M5 SEC ;舍入后R13变为0 ROR R13 ;将其改为$80(即0.5) RJMP COM2M5: DEC R12 ;舍入后R13不为0 BRNE COM2 ;阶码减1OV2: SEV ;变为0为溢出 RETM3: SBRC R5,7 RCALL INC3 ;乘积低3位字节舍入COM2: LDI R17,$7F SBRS R16,7 AND R1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号