posutils.ls1

来自「mifarea卡程序mifarea卡程序mifarea卡程序」· LS1 代码 · 共 135 行

LS1
135
字号
A51 MACRO ASSEMBLER  POSUTILS                                                             03/13/2009 15:44:53 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN .\out_sst89e564\posutils.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE .\out_sst89e564\posutils.src PR(.\posutils.ls1) EP DEBUG

LOC  OBJ            LINE     SOURCE

                       1     ; .\out_sst89e564\posutils.SRC generated from: source\posutils.c
                       2     ; COMPILER INVOKED BY:
                       3     ;        C:\Keil\C51\BIN\C51.EXE source\posutils.c LARGE BROWSE ORDER NOAREGS DEBUG OBJECTE
                             XTEND PRINT(.\posutils.lst) SRC(.\out_sst89e564\posutils.SRC)
                       4     
                       5     
                       6     NAME    POSUTILS
                       7     
                       8     ?PR?_bcd2hex?POSUTILS                    SEGMENT CODE 
                       9     ?PR?_hex2bcd?POSUTILS                    SEGMENT CODE 
                      10             EXTRN   CODE (?C?CLDPTR)
                      11             EXTRN   CODE (?C?IMUL)
                      12             EXTRN   CODE (?C?CLDOPTR)
                      13             EXTRN   CODE (?C?CSTPTR)
                      14             EXTRN   CODE (?C?CILDPTR)
                      15             EXTRN   CODE (?C?CSTOPTR)
                      16             EXTRN   CODE (?C?CILDOPTR)
                      17             PUBLIC  _hex2bcd
                      18             PUBLIC  _bcd2hex
                      19     ; #include "posutils.h" 
                      20     ; 
                      21     ; /***************************************************************************
                      22     ;   SUPPOSE dsp CONTAINS THE ASSCII ARRAY "12345F" AND WE EXECUTE THIS FUNCTION
                      23     ;   THEN THE ARRAY  AT hex WILL CONTAIN 12H,34H, 5FH
                      24     ; ****************************************************************************
                      25     ; void DSP_2_HEX(unsigned char *dsp, unsigned char *hex, int count)
                      26     ; {
                      27     ;     int i;
                      28     ; 
                      29     ;     for (i = 0; i < count; i++)
                      30     ;     {
                      31     ;         hex[i] = ((dsp[i << 1] <= 0x39) ? dsp[i << 1] - 0x30
                      32     ;                                        : dsp[i << 1] - 0x41 + 10);
                      33     ;         hex[i] = hex[i] << 4;
                      34     ;         hex[i] += ((dsp[(i << 1) + 1] <= 0x39) ? dsp[(i << 1) + 1] - 0x30
                      35     ;                                        : dsp[(i << 1) + 1] - 0x41 + 10);
                      36     ;     }
                      37     ; }
                      38     ; 
                      39     ; /***************************************************************************
                      40     ;  SUPPOSE HEX CONTAINS THREE BYTES:12H 34H, 5FH AND WE EXECUTE THIS FUNCTION
                      41     ;  THEN dsp WILL CONTAIN ASCII BYTES "12345F"
                      42     ; **************************************************************************
                      43     ; void HEX_2_DSP(unsigned char *hex, unsigned char *dsp, int count)
                      44     ; {
                      45     ;     int i;
                      46     ;     unsigned char ch;
                      47     ;     
                      48     ;     for(i = 0; i < count; i++)
                      49     ;     {
                      50     ;         ch = (hex[i] & 0xf0) >> 4;
                      51     ;         dsp[i << 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
                      52     ;         ch = hex[i] & 0xf;
                      53     ;         dsp[(i << 1) + 1] = (ch > 9) ? ch + 0x41 - 10 : ch + 0x30;
                      54     ;     }
                      55     ; }
                      56     ; 
                      57     ; /*将两字节bcd码转换成hex码*/
A51 MACRO ASSEMBLER  POSUTILS                                                             03/13/2009 15:44:53 PAGE     2

                      58     ; unsigned int bcd2hex(unsigned char *buf)
                      59     
----                  60             RSEG  ?PR?_bcd2hex?POSUTILS
0000                  61     _bcd2hex:
                      62             USING   0
                      63                             ; SOURCE LINE # 40
                      64     ;---- Variable 'buf?040' assigned to Register 'R1/R2/R3' ----
                      65     ; {
                      66                             ; SOURCE LINE # 41
                      67     ;       unsigned int temp;
                      68     ;       temp=(buf[0]>>4)*1000 + (buf[0]&0x0f)*100 + (buf[1]>>4)*10 + (buf[1]&0x0f);
                      69                             ; SOURCE LINE # 43
0000 120000   F       70             LCALL   ?C?CLDPTR
0003 C4               71             SWAP    A
0004 540F             72             ANL     A,#0FH
0006 FF               73             MOV     R7,A
0007 7E00             74             MOV     R6,#00H
0009 7C03             75             MOV     R4,#03H
000B 7DE8             76             MOV     R5,#0E8H
000D 120000   F       77             LCALL   ?C?IMUL
0010 CC               78             XCH     A,R4
0011 EE               79             MOV     A,R6
0012 CC               80             XCH     A,R4
0013 CD               81             XCH     A,R5
0014 EF               82             MOV     A,R7
0015 CD               83             XCH     A,R5
0016 120000   F       84             LCALL   ?C?CLDPTR
0019 540F             85             ANL     A,#0FH
001B 75F064           86             MOV     B,#064H
001E A4               87             MUL     AB
001F 2D               88             ADD     A,R5
0020 FD               89             MOV     R5,A
0021 EC               90             MOV     A,R4
0022 35F0             91             ADDC    A,B
0024 FC               92             MOV     R4,A
0025 900001           93             MOV     DPTR,#01H
0028 120000   F       94             LCALL   ?C?CLDOPTR
002B C4               95             SWAP    A
002C 540F             96             ANL     A,#0FH
002E 75F00A           97             MOV     B,#0AH
0031 A4               98             MUL     AB
0032 2D               99             ADD     A,R5
0033 FF              100             MOV     R7,A
0034 E5F0            101             MOV     A,B
0036 3C              102             ADDC    A,R4
0037 FE              103             MOV     R6,A
0038 900001          104             MOV     DPTR,#01H
003B 120000   F      105             LCALL   ?C?CLDOPTR
003E 540F            106             ANL     A,#0FH
0040 7C00            107             MOV     R4,#00H
0042 2F              108             ADD     A,R7
0043 FF              109             MOV     R7,A
0044 EC              110             MOV     A,R4
0045 3E              111             ADDC    A,R6
0046 FE              112             MOV     R6,A
                     113     ;---- Variable 'temp?041' assigned to Register 'R6/R7' ----
                     114     ;     return(temp);
                     115                             ; SOURCE LINE # 44
                     116     ; }
                     117                             ; SOURCE LINE # 45
0047                 118     ?C0001:
0047 22              119             RET     
                     120     ; END OF _bcd2hex
                     121     
                     122     ; /***********************************************/
                     123     ; /* 将整形首肿

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?