📄 10millions.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: E:\MiCrOConTroller\Coba_M-IDE\HEX2BCD10millions\10millions.asm
Object File: E:\MiCrOConTroller\Coba_M-IDE\HEX2BCD10millions\10millions.hex
List File: E:\MiCrOConTroller\Coba_M-IDE\HEX2BCD10millions\10millions.lst
Line I Addr Code Source
1: $MOD51
2: ;---------------------------------------------------------------------------------------
3: ; sistem konversi dari 3 bytes heksa ke desimal 8 digit
4: ; max value : 10000000 <sepuluh juta>
5: ; input R5,R6,R7 (LSB-MSB) --> 3 bytes
6: ; output ASCHII di ram 20h-28h 8 digits
7: ; by: Herlambang Aribowo
8: ; D3 Instrumentasi dan elektronika UNDIP, Semarang, Jawa tengah, Indonesia
9: ; contact : cah_imuth@yahoo.com
10: ; Phone : +6281328828042
11: ;---------------------------------------------------------------------------------------
12:
13: 0000 C3 Hex3DecConv: CLR C
14: 0001 7C 00 MOV R4,#0 ;bersihkan counter (jutaan)
15:
16: 0003 EF Hex3DecLoop1: MOV A,R7 ;how many time we can subtra
ct 10000000 (989680H) without carry
17: 0004 94 80 SUBB A,#80H
18: 0006 FF MOV R7,A
19: 0007 EE MOV A,R6
20: 0008 94 96 SUBB A,#96H
21: 000A FE MOV R6,A
22: 000B ED MOV A,R5
23: 000C 94 98 SUBB A,#98H
24: 000E FD MOV R5,A
25: 000F 40 03 JC Hex3DecSkip1
26: 0011 0C INC R4
27: 0012 80 EF JMP Hex3DecLoop1
28: 0014 EC Hex3DecSkip1: MOV A,R4
29: 0015 C0 E0 PUSH ACC ;push counter onto stack
30: 0017 EF MOV A,R7
31: 0018 24 80 ADD A,#80H
32: 001A FF MOV R7,A
33: 001B EE MOV A,R6
34: 001C 34 96 ADDC A,#96H
35: 001E FE MOV R6,A
36: 001F ED MOV A,R5
37: 0020 34 98 ADDC A,#98H
38: 0022 FD MOV R5,A
39: 0023 C3 CLR C
40: 0024 7C 00 MOV R4,#0
41: 0026 EF Hex3DecLoop2: MOV A,R7 ;how many times we can subt
ract 1000000 (F4240H) without carry
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
42: 0027 94 40 SUBB A,#40H
43: 0029 FF MOV R7,A
44: 002A EE MOV A,R6
45: 002B 94 42 SUBB A,#42H
46: 002D FE MOV R6,A
47: 002E ED MOV A,R5
48: 002F 94 0F SUBB A,#0FH
49: 0031 FD MOV R5,A
50: 0032 40 03 JC Hex3DecSkip2
51: 0034 0C INC R4
52: 0035 80 EF JMP Hex3DecLoop2
53: 0037 EC Hex3DecSkip2: MOV A,R4
54: 0038 C0 E0 PUSH ACC ;push counter onto stack
55: 003A EF MOV A,R7
56: 003B 24 40 ADD A,#40H
57: 003D FF MOV R7,A
58: 003E EE MOV A,R6
59: 003F 34 42 ADDC A,#42H
60: 0041 FE MOV R6,A
61: 0042 ED MOV A,R5
62: 0043 34 0F ADDC A,#0FH
63: 0045 FD MOV R5,A
64: 0046 C3 CLR C
65: 0047 7C 00 MOV R4,#0
66: 0049 EF Hex3DecLoop3: MOV A,R7 ;100000 (186A0H)?
67: 004A 94 A0 SUBB A,#0A0H
68: 004C FF MOV R7,A
69: 004D EE MOV A,R6
70: 004E 94 86 SUBB A,#86H
71: 0050 FE MOV R6,A
72: 0051 ED MOV A,R5
73: 0052 94 01 SUBB A,#01H
74: 0054 FD MOV R5,A
75: 0055 40 03 JC Hex3DecSkip3
76: 0057 0C INC R4
77: 0058 80 EF JMP Hex3DecLoop3
78:
79: 005A EC Hex3DecSkip3: MOV A,R4
80: 005B C0 E0 PUSH ACC ;onto stack
81: 005D EF MOV A,R7
82: 005E 24 A0 ADD A,#0A0H
83: 0060 FF MOV R7,A
84: 0061 EE MOV A,R6
85: 0062 34 86 ADDC A,#86H
86: 0064 FE MOV R6,A
87: 0065 ED MOV A,R5
88: 0066 34 01 ADDC A,#01H
89: 0068 FD MOV R5,A
90:
91: 0069 7C 00 Hex2DecConv: MOV R4,#0
92: 006B C3 CLR C
93: 006C EF Hex2DecLoop1: MOV A,R7 ;10000 (2710h)?
94: 006D 94 10 SUBB A,#010H
95: 006F FF MOV R7,A
96: 0070 EE MOV A,R6
97: 0071 94 27 SUBB A,#27H
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
98: 0073 FE MOV R6,A
99: 0074 ED MOV A,R5
100: 0075 94 00 SUBB A,#0
101: 0077 FD MOV R5,A
102: 0078 40 03 JC Hex2DecSkip1
103: 007A 0C INC R4
104: 007B 80 EF JMP Hex2DecLoop1
105: 007D EC Hex2DecSkip1: MOV A,R4 ;onto stack
106: 007E C0 E0 PUSH ACC
107: 0080 EF MOV A,R7
108: 0081 24 10 ADD A,#010H
109: 0083 FF MOV R7,A
110: 0084 EE MOV A,R6
111: 0085 34 27 ADDC A,#27H
112: 0087 FE MOV R6,A
113:
114: 0088 C3 CLR C
115: 0089 7C 00 MOV R4,#0
116: 008B EF Hex2DecLoop2: MOV A,R7 ;1000 (3E8h)?
117: 008C 94 E8 SUBB A,#0E8H
118: 008E FF MOV R7,A
119: 008F EE MOV A,R6
120: 0090 94 03 SUBB A,#03H
121: 0092 FE MOV R6,A
122: 0093 40 03 JC Hex2DecSkip2
123: 0095 0C INC R4
124: 0096 80 F3 JMP Hex2DecLoop2
125: 0098 EC Hex2DecSkip2: MOV A,R4 ;onto satck
126: 0099 C0 E0 PUSH ACC
127: 009B EF MOV A,R7
128: 009C 24 E8 ADD A,#0E8H
129: 009E FF MOV R7,A
130: 009F EE MOV A,R6
131: 00A0 34 03 ADDC A,#03H
132: 00A2 FE MOV R6,A
133:
134: 00A3 C3 CLR C
135: 00A4 7C 00 MOV R4,#0
136: 00A6 EF Hex2DecLoop3: MOV A,R7 ;100 (64h)?
137: 00A7 94 64 SUBB A,#064H
138: 00A9 FF MOV R7,A
139: 00AA EE MOV A,R6
140: 00AB 94 00 SUBB A,#0H
141: 00AD FE MOV R6,A
142: 00AE 40 03 JC Hex2DecSkip3
143: 00B0 0C INC R4
144: 00B1 80 F3 JMP Hex2DecLoop3
145: 00B3 EC Hex2DecSkip3: MOV A,R4 ;onto stack
146: 00B4 C0 E0 PUSH ACC
147: 00B6 EF MOV A,R7
148: 00B7 24 64 ADD A,#064H
149: 00B9 FF MOV R7,A
150: 00BA EE MOV A,R6
151: 00BB 34 00 ADDC A,#0H
152: 00BD FE MOV R6,A
153:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
154: 00BE C3 CLR C
155: 00BF 7C 00 MOV R4,#0
156: 00C1 EF Hex2DecLoop4: MOV A,R7 ;10 (0Ah)?
157: 00C2 94 0A SUBB A,#0AH
158: 00C4 FF MOV R7,A
159: 00C5 40 03 JC Hex2DecSkip4
160: 00C7 0C INC R4
161: 00C8 80 F7 JMP Hex2DecLoop4
162: 00CA EC Hex2DecSkip4: MOV A,R4 ;onto stack
163: 00CB C0 E0 PUSH ACC
164: 00CD 24 0A ADD A,#0AH ;1
165:
166: 00CF EF MOV A,R7 ;tens & ones in w R7
167: 00D0 24 0A ADD A,#0AH
168: 00D2 FF MOV R7,A
169: 00D3 D0 E0 POP ACC
170: 00D5 C4 SWAP A
171: 00D6 2F ADD A,R7
172: 00D7 FF MOV R7,A
173: 00D8 D0 E0 POP ACC ;thousands & hundreds
in R6
174: 00DA FE MOV R6,A
175: 00DB D0 E0 POP ACC
176: 00DD C4 SWAP A
177: 00DE 2E ADD A,R6
178: 00DF FE MOV R6,A
179: 00E0 D0 E0 POP ACC ;tens thousands & hund
reds thousands in R5
180: 00E2 FD MOV R5,A
181: 00E3 D0 E0 POP ACC
182: 00E5 C4 SWAP A
183: 00E6 2D ADD A,R5
184: 00E7 FD MOV R5,A
185: 00E8 D0 E0 POP ACC ;milins & tens milions
in R4
186: 00EA FC MOV R4,A
187: 00EB D0 E0 POP ACC
188: 00ED C4 SWAP A
189: 00EE 2C ADD A,R4
190: 00EF FC MOV R4,A
191: 00F0 22 RET
192:
193: ;konversi desimal ke ASCHII
194: ;nilai desimal di r4(msb),r5,r6,r7(lsb),hasil terletak di ram buffer 20h-28h
195: ;note:numbers are in correct order after hex2dec conversion routine
196: ;routine mengambil semua nomor desimal (4 bits dari 8 bit register) dan menambahnya dengan 0 ascii c
ode character
197: ;contoh : 15 => '0'+1 -> '1' , '0'+5 -> '5'
198: 00F1 E5 20 Dec2AsciiConv: MOV A,20H
199: 00F3 F8 MOV R0,A ;pointer to lcd_1
200: 00F4 EC MOV A,R4
201: 00F5 54 F0 ANL A,#0F0H
202: 00F7 C4 SWAP A
203: 00F8 24 30 ADD A,#'0'
204: 00FA F6 MOV @R0,A
205: 00FB 08 INC R0
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
Line I Addr Code Source
206: 00FC EC MOV A,R4
207: 00FD 54 0F ANL A,#0FH
208: 00FF 24 30 ADD A,#'0'
209: 0101 F6 MOV @R0,A
210: 0102 08 INC R0
211: 0103 ED MOV A,R5
212: 0104 54 F0 ANL A,#0F0H
213: 0106 C4 SWAP A
214: 0107 24 30 ADD A,#'0'
215: 0109 F6 MOV @R0,A
216: 010A 08 INC R0
217: 010B ED MOV A,R5
218: 010C 54 0F ANL A,#0FH
219: 010E 24 30 ADD A,#'0'
220: 0110 F6 MOV @R0,A
221: 0111 08 INC R0
222: 0112 EE MOV A,R6
223: 0113 54 F0 ANL A,#0F0H
224: 0115 C4 SWAP A
225: 0116 24 30 ADD A,#'0'
226: 0118 F6 MOV @R0,A
227: 0119 08 INC R0
228: 011A EE MOV A,R6
229: 011B 54 0F ANL A,#0FH
230: 011D 24 30 ADD A,#'0'
231: 011F F6 MOV @R0,A
232: 0120 08 INC R0
233: 0121 EF MOV A,R7
234: 0122 54 F0 ANL A,#0F0H
235: 0124 C4 SWAP A
236: 0125 24 30 ADD A,#'0'
237: 0127 F6 MOV @R0,A
238: 0128 08 INC R0
239: 0129 EF MOV A,R7
240: 012A 54 0F ANL A,#0FH
241: 012C 24 30 ADD A,#'0'
242: 012E F6 MOV @R0,A
243: 012F 08 INC R0 ;put the end of strin
g code
244: 0130 74 00 MOV A,#0
245: 0132 F6 MOV @R0,A
246: 0133 22 RET
247:
248: END
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
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
DEC2ASCIICONV CODE 00F1 198
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
HEX2DECCONV CODE 0069 91
HEX2DECLOOP1 CODE 006C 93
HEX2DECLOOP2 CODE 008B 116
HEX2DECLOOP3 CODE 00A6 136
HEX2DECLOOP4 CODE 00C1 156
HEX2DECSKIP1 CODE 007D 105
HEX2DECSKIP2 CODE 0098 125
HEX2DECSKIP3 CODE 00B3 145
HEX2DECSKIP4 CODE 00CA 162
HEX3DECCONV CODE 0000 13
HEX3DECLOOP1 CODE 0003 16
HEX3DECLOOP2 CODE 0026 41
HEX3DECLOOP3 CODE 0049 66
HEX3DECSKIP1 CODE 0014 28
HEX3DECSKIP2 CODE 0037 53
HEX3DECSKIP3 CODE 005A 79
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
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 7
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
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
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
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
TXD BIT B1
WR BIT B6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -