📄 cnvfrac.s
字号:
;; Convertion routine of 24 bits floating point to ASCII;; written by Vangelis Rokas <vrokas AT otenet.gr>, 2004;;; This program is free software; you can redistribute it and/or; modify it under the terms of the GNU Library General Public License; as published by the Free Software Foundation; either version 2; of the License, or (at your option) any later version.;; This library is distributed in the hope that it will be useful,; but WITHOUT ANY WARRANTY; without even the implied warranty of; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the; GNU General Public License for more details.;; You should have received a copy of the GNU General Public License; along with this program; if not, write to the Free Software; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.;; $Id: cnvfrac.S 3711 2005-03-31 16:25:17Z vrokas $; radix dec list nolistWREG equ 0xfe8POSTINC0 equ 0xfeePOSTDEC1 equ 0xfe5PREINC1 equ 0xfe4STATUS equ 0xfd8 global _convert_frac.registers udata_ovr 0x000r0x00 res 1r0x01 res 1r0x02 res 1r0x03 res 1round_digit res 1d0x00 res 1d0x01 res 1d0x02 res 1d0x03 res 1d0x04 res 1d0x05 res 1d0x06 res 1d0x07 res 1d0x08 res 1d0x09 res 1d0x10 res 1d0x11 res 1d0x12 res 1d0x13 res 1d0x14 res 1d0x15 res 1d0x16 res 1d0x17 res 1d0x18 res 1d0x19 res 1d0x20 res 1d0x21 res 1d0x22 res 1d0x23 res 1d0x24 res 1S__convert_frac code_convert_frac: movff d0x00, POSTDEC1 movff d0x01, POSTDEC1 movff d0x02, POSTDEC1 movff d0x03, POSTDEC1 movff d0x04, POSTDEC1 movff d0x05, POSTDEC1 movff d0x06, POSTDEC1 movff d0x07, POSTDEC1 movff d0x08, POSTDEC1 movff d0x09, POSTDEC1 movff d0x10, POSTDEC1 movff d0x11, POSTDEC1 movff d0x12, POSTDEC1 movff d0x13, POSTDEC1 movff d0x14, POSTDEC1 movff d0x15, POSTDEC1 movff d0x16, POSTDEC1 movff d0x17, POSTDEC1 movff d0x18, POSTDEC1 movff d0x19, POSTDEC1 movff d0x20, POSTDEC1 movff d0x21, POSTDEC1 movff d0x22, POSTDEC1 movff d0x23, POSTDEC1 movff d0x24, POSTDEC1; adding digit 0; movff 0xf7f, 0xfe8 movlw 0 btfsc r0x00, 0 ; bit 0 addlw 5 clrf d0x01@1: addlw -10 bnc @2 incf d0x01, f bra @1@2: addlw 10 movwf d0x00 decfsz round_digit, f bra @3 addlw 251 bnc @3 incf d0x01, f@3:; adding digit 1 movf d0x01, w btfsc r0x00, 0 ; bit 0 addlw 2 btfsc r0x00, 1 ; bit 1 addlw 5 clrf d0x02@4: addlw -10 bnc @5 incf d0x02, f bra @4@5: addlw 10 movwf d0x01 decfsz round_digit, f bra @6 addlw 251 bnc @6 incf d0x02, f@6:; adding digit 2 movf d0x02, w btfsc r0x00, 0 ; bit 0 addlw 6 btfsc r0x00, 1 ; bit 1 addlw 2 btfsc r0x00, 2 ; bit 2 addlw 5 clrf d0x03@7: addlw -10 bnc @8 incf d0x03, f bra @7@8: addlw 10 movwf d0x02 decfsz round_digit, f bra @9 addlw 251 bnc @9 incf d0x03, f@9:; adding digit 3 movf d0x03, w btfsc r0x00, 1 ; bit 1 addlw 1 btfsc r0x00, 2 ; bit 2 addlw 2 btfsc r0x00, 3 ; bit 3 addlw 5 clrf d0x04@10: addlw -10 bnc @11 incf d0x04, f bra @10@11: addlw 10 movwf d0x03 decfsz round_digit, f bra @12 addlw 251 bnc @12 incf d0x04, f@12:; adding digit 4 movf d0x04, w btfsc r0x00, 0 ; bit 0 addlw 9 btfsc r0x00, 1 ; bit 1 addlw 8 btfsc r0x00, 2 ; bit 2 addlw 6 btfsc r0x00, 3 ; bit 3 addlw 2 btfsc r0x00, 4 ; bit 4 addlw 5 clrf d0x05@13: addlw -10 bnc @14 incf d0x05, f bra @13@14: addlw 10 movwf d0x04 decfsz round_digit, f bra @15 addlw 251 bnc @15 incf d0x05, f@15:; adding digit 5 movf d0x05, w btfsc r0x00, 0 ; bit 0 addlw 3 btfsc r0x00, 1 ; bit 1 addlw 7 btfsc r0x00, 2 ; bit 2 addlw 5 btfsc r0x00, 3 ; bit 3 addlw 1 btfsc r0x00, 4 ; bit 4 addlw 2 btfsc r0x00, 5 ; bit 5 addlw 5 clrf d0x06@16: addlw -10 bnc @17 incf d0x06, f bra @16@17: addlw 10 movwf d0x05 decfsz round_digit, f bra @18 addlw 251 bnc @18 incf d0x06, f@18:; adding digit 6 movf d0x06, w btfsc r0x00, 0 ; bit 0 addlw 5 btfsc r0x00, 2 ; bit 2 addlw 1 btfsc r0x00, 3 ; bit 3 addlw 3 btfsc r0x00, 4 ; bit 4 addlw 6 btfsc r0x00, 5 ; bit 5 addlw 2 btfsc r0x00, 6 ; bit 6 addlw 5 clrf d0x07@19: addlw -10 bnc @20 incf d0x07, f bra @19@20: addlw 10 movwf d0x06 decfsz round_digit, f bra @21 addlw 251 bnc @21 incf d0x07, f@21:; adding digit 7 movf d0x07, w btfsc r0x00, 0 ; bit 0 addlw 7 btfsc r0x00, 1 ; bit 1 addlw 5 btfsc r0x00, 5 ; bit 5 addlw 1 btfsc r0x00, 6 ; bit 6 addlw 2 btfsc r0x00, 7 ; bit 7 addlw 5 clrf d0x08@22: addlw -10 bnc @23 incf d0x08, f bra @22@23: addlw 10 movwf d0x07 decfsz round_digit, f bra @24 addlw 251 bnc @24 incf d0x08, f@24:; adding digit 8 movf d0x08, w btfsc r0x00, 0 ; bit 0 addlw 7 btfsc r0x00, 1 ; bit 1 addlw 5 btfsc r0x00, 2 ; bit 2 addlw 1 btfsc r0x00, 3 ; bit 3 addlw 2 btfsc r0x00, 4 ; bit 4 addlw 4 btfsc r0x00, 5 ; bit 5 addlw 8 btfsc r0x00, 6 ; bit 6 addlw 6 btfsc r0x00, 7 ; bit 7 addlw 2 btfsc r0x01, 0 ; bit 8 addlw 5 clrf d0x09@25: addlw -10 bnc @26 incf d0x09, f bra @25@26: addlw 10 movwf d0x08 decfsz round_digit, f bra @27 addlw 251 bnc @27 incf d0x09, f@27:; adding digit 9 movf d0x09, w btfsc r0x00, 0 ; bit 0 addlw 4 btfsc r0x00, 1 ; bit 1 addlw 9 btfsc r0x00, 2 ; bit 2 addlw 9 btfsc r0x00, 3 ; bit 3 addlw 8 btfsc r0x00, 4 ; bit 4 addlw 6 btfsc r0x00, 5 ; bit 5 addlw 2 btfsc r0x00, 6 ; bit 6 addlw 5 btfsc r0x00, 7 ; bit 7 addlw 1 btfsc r0x01, 0 ; bit 8 addlw 2 btfsc r0x01, 1 ; bit 9 addlw 5 clrf d0x10@28: addlw -10 bnc @29 incf d0x10, f bra @28@29: addlw 10 movwf d0x09 decfsz round_digit, f bra @30 addlw 251 bnc @30 incf d0x10, f@30:; adding digit 10 movf d0x10, w btfsc r0x00, 0 ; bit 0 addlw 4 btfsc r0x00, 1 ; bit 1 addlw 8 btfsc r0x00, 2 ; bit 2 addlw 7 btfsc r0x00, 3 ; bit 3 addlw 5 btfsc r0x00, 4 ; bit 4 addlw 1 btfsc r0x00, 5 ; bit 5 addlw 3 btfsc r0x00, 6 ; bit 6 addlw 6 btfsc r0x00, 7 ; bit 7 addlw 3 btfsc r0x01, 0 ; bit 8 addlw 6 btfsc r0x01, 1 ; bit 9 addlw 2 btfsc r0x01, 2 ; bit 10 addlw 5 clrf d0x11@31: addlw -10 bnc @32 incf d0x11, f bra @31@32: addlw 10 movwf d0x10 decfsz round_digit, f bra @33 addlw 251 bnc @33 incf d0x11, f@33:; adding digit 11 movf d0x11, w btfsc r0x00, 0 ; bit 0 addlw 6 btfsc r0x00, 1 ; bit 1 addlw 2 btfsc r0x00, 2 ; bit 2 addlw 5 btfsc r0x00, 3 ; bit 3 addlw 1 btfsc r0x00, 4 ; bit 4 addlw 3 btfsc r0x00, 5 ; bit 5 addlw 6 btfsc r0x00, 6 ; bit 6 addlw 2 btfsc r0x00, 7 ; bit 7 addlw 5 btfsc r0x01, 1 ; bit 9 addlw 1 btfsc r0x01, 2 ; bit 10 addlw 2 btfsc r0x01, 3 ; bit 11 addlw 5 clrf d0x12@34: addlw -10 bnc @35 incf d0x12, f bra @34@35: addlw 10 movwf d0x11 decfsz round_digit, f bra @36 addlw 251 bnc @36 incf d0x12, f@36:; adding digit 12 movf d0x12, w btfsc r0x00, 0 ; bit 0 addlw 4 btfsc r0x00, 1 ; bit 1 addlw 9 btfsc r0x00, 2 ; bit 2 addlw 8 btfsc r0x00, 3 ; bit 3 addlw 7 btfsc r0x00, 4 ; bit 4 addlw 4 btfsc r0x00, 5 ; bit 5 addlw 8 btfsc r0x00, 6 ; bit 6 addlw 7 btfsc r0x00, 7 ; bit 7 addlw 4 btfsc r0x01, 0 ; bit 8 addlw 9 btfsc r0x01, 1 ; bit 9 addlw 8 btfsc r0x01, 2 ; bit 10 addlw 6 btfsc r0x01, 3 ; bit 11 addlw 2 btfsc r0x01, 4 ; bit 12 addlw 5 clrf d0x13@37: addlw -10 bnc @38 incf d0x13, f bra @37@38: addlw 10 movwf d0x12 decfsz round_digit, f bra @39 addlw 251 bnc @39 incf d0x13, f@39:; adding digit 13 movf d0x13, w btfsc r0x00, 2 ; bit 2 addlw 1 btfsc r0x00, 3 ; bit 3 addlw 3 btfsc r0x00, 4 ; bit 4 addlw 7 btfsc r0x00, 5 ; bit 5 addlw 4 btfsc r0x00, 6 ; bit 6 addlw 9 btfsc r0x00, 7 ; bit 7 addlw 9 btfsc r0x01, 0 ; bit 8 addlw 8 btfsc r0x01, 1 ; bit 9 addlw 7 btfsc r0x01, 2 ; bit 10 addlw 5 btfsc r0x01, 3 ; bit 11 addlw 1 btfsc r0x01, 4 ; bit 12 addlw 2 btfsc r0x01, 5 ; bit 13 addlw 5 clrf d0x14@40: addlw -10 bnc @41 incf d0x14, f bra @40@41: addlw 10 movwf d0x13 decfsz round_digit, f bra @42 addlw 251 bnc @42 incf d0x14, f@42:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -