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 + -
显示快捷键?