AVR asm 源程序
返回首页
本站网址:http://www.xiao-qi.com

.

16位

整型数开方

.include "8515def.inc"
.def numlo = r16 .def numhi = r17 .def sqrt = r18 .def suber = r24 .def suberh = r25
; enter with the 16 bit Number in r16,r17
         .org   0x00
         rjmp   reset

.org 0x20
reset: ldi r16,0x02 ; Stack Pointer Setup out SPH,r16 ; Stack Pointer High Byte ldi r16,0x5f ; Stack Pointer Setup out SPL,r16 ; Stack Pointer Low Byte loopm: ldi r16,0x64 ldi r17,0x01 rcall sqrt nop rjmp loopm Sqrt: clr sqrt ldi suber,1 ; initialize the seed to be subtracted clr suberh ; for each iteration loop: sub numlo,suber sbc numhi,suberh brlo exit inc sqrt adiw suber,2 ; keep the number to subtract ODD. rjmp loop exit: ret ; the sqrt(num) on exit is stored in r18

.

32位

整型数开方

;input r15:r14:r13:r12 (it make a copy from r3::r0)
;output r25:r24
;use r20,r21,r22,r26,r28
;输入返回数据:lsqrt(0x5300164) = 0x2471
;对应于8M晶振时开方所用时间为 48.38us
;原程序提供者:Jens NL,Email:jensnl@home.com
.include "8515def.inc"
        .org 0x00
         rjmp    reset
        .org 0x20
         reset:
         ldi     r16,0x02      ; Stack Pointer Setup 
         out     SPH,r16       ; Stack Pointer High Byte 
         ldi     r16,0x5F      ; Stack Pointer Setup 
         out     SPL,r16       ; Stack Pointer Low Byte
; 验证 
;test r25:r24 = lsqrt(0x5300164)
 loopm:
         ldi     r16,0x64
         mov     r12,r16
         ldi     r16,0x01
         mov     r13,r16
         ldi     r16,0x30
         mov     r14,r16
         ldi     r16,0x05
         mov     r15,r16
         rcall   lsqrt
         nop
         rjmp    loopm
         
 lsqrt:
         clr     r20
         clr     r21
         clr     r22
         clr     r24
         clr     r25
         clr     r26
         ldi     r28,16
  m03:
         rol     r15
         rol     r20
         rol     r21
         rol     r22
         rol     r15
         rol     r20
         rol     r21
         rol     r22
         
         lsl     r24
         rol     r25
         rol     r26
         
         cp      r24,r20
         cpc     r25,r21
         cpc     r26,r22
         brsh    m01
         sbc     r20,r24
         sbc     r21,r25
         sbc     r22,r26
         subi    r24,-2
   m05:
   m01:
         dec     r28
         sbrs    r28,0
         sbrc    r28,1
         rjmp    m03
         breq    m08
         mov     r15,r14
         mov     r14,r13
         mov     r13,r12
         rjmp    m03
   m08:
         lsr     r26
         ror     r25
         ror     r24
         ret
ASM源程序
汇编精华推荐网站: JACKT 汇编系统推荐:AVR Studio3 非常友好的工作界面
ASM软件下载
最新版本 AVR Studio3.53 软件使用手册(E) ATMEL AVR论坛

Copyright© 1999-2001, 晓奇工作室 E-Mail:info*xiao-qi.com