📄 hexbcd.lst
字号:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: D:\Electronics\MiCrOConTroller\MCS51\Micro Programming\M-IDE\2Byte2-5DEC\HEXBCD.asm
Object File: D:\Electronics\MiCrOConTroller\MCS51\Micro Programming\M-IDE\2Byte2-5DEC\HEXBCD.hex
List File: D:\Electronics\MiCrOConTroller\MCS51\Micro Programming\M-IDE\2Byte2-5DEC\HEXBCD.lst
Line I Addr Code Source
1: $MOD51
2: ; 2 BYTE HEX TO 5 DIGITS BCD
3: ;----------------------------------------------------------------------------------------
4: ; Author: Slobodan Mandaric, Serbia & Montenegro
5: ; June 3rd, 2005.
6: ; Modify: Jan 14th, 2008
7: ; Author: Herlambang Aribowo, Indonesia
8:
9: ;----------------------------------------------------------------------------------------
10: ; 149 cycles for 2 bytes, 77 cycles for 1 byte
11: ; Result: <R3...R7>
12: ; All 8 registers are used, and also A and B
13:
14: ;----------------------------------------------------------------------------------------
15: ;Iki routine kanggo inputan 16 byte sing arep di konversi
16: ;Input di <R1&R2>
17: 0000 79 AF MOV r1,#0AFH ; 175d
18: 0002 7A 91 MOV r2,#91H ; 91AFH = 37295d
19: ;----------------------------------------------------------------------------------------
20: ; R7=3, R6=7, ..., R3=5
21: ;----------------------
22: 0004 7D 00 MOV R5,#0
23: 0006 7E 00 MOV R6,#0
24: 0008 7F 00 MOV R7,#0
25:
26: 000A E9 MOV A,R1
27: 000B 75 F0 0A MOV B,#10
28: 000E 84 DIV AB
29:
30: 000F AB F0 MOV R3,B ; Lower byte, in R1, is transformed into 2 decade digits,
31: 0011 FC MOV R4,A ; it's OK that the higher one can be greater than 9
32:
33: 0012 EA MOV A,R2 ; Higher byte is in R2
34: 0013 60 0E JZ SPRING ; Spring over if 0
35: 0015 75 F0 0A MOV B,#10
36: 0018 84 DIV AB
37:
38: 0019 AD F0 MOV R5,B ; Same as for lower byte
39: 001B FE MOV R6,A
40:
41: ; Value in R5 is 256 times higher than value standing in R3, R4. Mply R5 with 6,
42: ; add to R3, mply R5 with 5, add to R4, mply R5 with 2 and replace itself in R5
43:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 001C 78 05 MOV R0,#05 ; Point to R5
45: 001E 11 29 ACALL TRANSF ; Transform R5 to 3 lower positions
46:
47: 0020 08 INC R0 ; Repeat from R6, now all registers are 1 higher
48: 0021 11 29 ACALL TRANSF ; Transform R6 to 3 higher positions
49:
50: 0023 78 03 SPRING: MOV R0,#03 ; Point to lowest digit
51:
52: ; Adjust to decimal, everything higher than 9 should be, as 1 tenth, added to higher.
53: ; Starting from the lowest digit, divide with 10, keep the rest, and add the 1/10th to
54: ; first higher place (eg. 145, leave 5 and add 14 to the next higher)
55:
56: 0025 11 41 ACALL DECADJ
57:
58: 0027 80 FE SJMP $
59:
60: 0029 E6 TRANSF: MOV A,@R0
61: 002A 75 F0 06 MOV B,#6
62: 002D A4 MUL AB
63: 002E 18 DEC R0
64: 002F 18 DEC R0
65: 0030 26 ADD A,@R0
66: 0031 F6 MOV @R0,A
67:
68: 0032 08 INC R0
69: 0033 08 INC R0
70: 0034 E6 MOV A,@R0
71: 0035 75 F0 05 MOV B,#5
72: 0038 A4 MUL AB
73: 0039 18 DEC R0
74: 003A 26 ADD A,@R0
75: 003B F6 MOV @R0,A
76:
77: 003C 08 INC R0
78: 003D E6 MOV A,@R0
79: 003E 23 RL A ; Mply with 2
80: 003F F6 MOV @R0,A
81:
82: 0040 22 RET
83:
84: 0041 E6 DECADJ: MOV A,@R0
85: 0042 75 F0 0A DECLOP: MOV B,#10
86: 0045 84 DIV AB
87: 0046 A6 F0 MOV @R0,B
88: 0048 08 INC R0
89: 0049 26 ADD A,@R0
90: 004A F6 MOV @R0,A
91:
92: 004B B8 07 F4 CJNE R0,#7,DECLOP
93: 004E 22 RET
94:
95: END
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
??ASEM_51 NUMBER 8051
??VERSION NUMBER 0130
AC BIT D6
ACC DATA E0
B DATA F0
CY BIT D7
DECADJ CODE 0041 84
DECLOP CODE 0042 85
DPH DATA 83
DPL DATA 82
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
SPRING CODE 0023 50
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TRANSF CODE 0029 60
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -