📄 wl012.lst
字号:
141 ;===============================================================================
0076 142 UPDATE_DISBUF:
143 USING 1
144
0076 AF8D 145 MOV R7,TH1
0078 AE8B 146 MOV R6,TL1
007A 120000 F 147 LCALL BIN16BCD
148
007D 900000 F 149 MOV DPTR, #DIS_CODE
150
0080 ED 151 MOV A,R5
0081 540F 152 ANL A,#0FH
0083 93 153 MOVC A,@A+DPTR
0084 F500 F 154 MOV DIS_BUF+4, A
155
0086 EC 156 MOV A,R4
0087 03 157 RR A
0088 03 158 RR A
0089 03 159 RR A
008A 03 160 RR A
008B 540F 161 ANL A,#0FH
008D 93 162 MOVC A,@A+DPTR
008E F500 F 163 MOV DIS_BUF+3,A
164
0090 EC 165 MOV A,R4
0091 540F 166 ANL A,#0FH
0093 93 167 MOVC A,@A+DPTR
0094 F500 F 168 MOV DIS_BUF+2,A
169
0096 EB 170 MOV A,R3
0097 03 171 RR A
0098 03 172 RR A
0099 03 173 RR A
009A 03 174 RR A
009B 540F 175 ANL A,#0FH
009D 93 176 MOVC A,@A+DPTR
009E F500 F 177 MOV DIS_BUF+1,A
178
00A0 EB 179 MOV A,R3
00A1 540F 180 ANL A,#0FH
00A3 93 181 MOVC A,@A+DPTR
00A4 F500 F 182 MOV DIS_BUF,A
183
00A6 22 184 RET
185 ; END OF UPDATE_DISBUF
186
187
188 ;===============================================================================
00A7 189 BIN16BCD:
190 ; 将16位二进制数转化为5位压缩的BCD码
A51 MACRO ASSEMBLER WL012 02/12/2004 12:06:14 PAGE 4
191 ; 传入参数: R7:R6 --- 16位二进数; R7 --- MSB; R6 --- LSB
192 ; 返回参数: R5:R4:R3 --- 5位压缩的BCD码; R5 --- MSB; R3 --- LSB
193 ;
194
00A7 E4 195 CLR A
00A8 FB 196 MOV R3,A ;
00A9 FC 197 MOV R4,A
00AA FD 198 MOV R5,A
199
00AB 7810 200 MOV R0,#16 ; 共需左移16次
201
00AD 202 BIN16BCD_LP:
00AD EE 203 MOV A,R6 ; 将R6左移一位到R7
00AE 33 204 RLC A
00AF FE 205 MOV R6,A
00B0 EF 206 MOV A,R7 ; 将R6的高位移入到R7
00B1 33 207 RLC A ; 将R7的高位移出到C
00B2 FF 208 MOV R7,A
209
210 ;-------------------------------
00B3 EB 211 MOV A,R3 ; 将C移入到目标数(BCD)的最低位
00B4 3B 212 ADDC A,R3 ; 这里用ADDC进行移位,而没有使用RLC,
213 ; 是为下面能正确的使用十进制调整指令DA
00B5 D4 214 DA A ; 十进制调整
00B6 FB 215 MOV R3,A ; 存回
216
00B7 EC 217 MOV A,R4 ; 将R3的高位移入
00B8 3C 218 ADDC A,R4 ;
00B9 D4 219 DA A ; 十进制调整
00BA FC 220 MOV R4,A ; 存回
221
00BB ED 222 MOV A,R5 ; 将R4的高位移入
00BC 3D 223 ADDC A,R5
00BD D4 224 DA A ; 十进制调整
00BE FD 225 MOV R5,A ; 存回
226
00BF D8EC 227 DJNZ R0,BIN16BCD_LP
228
00C1 22 229 RET
230
00C2 231 DIS_CODE:
00C2 C0 232 DB 0C0H
00C3 F9 233 DB 0F9H
00C4 A4 234 DB 0A4H
00C5 B0 235 DB 0B0H
00C6 99 236 DB 099H
00C7 92 237 DB 092H
00C8 82 238 DB 082H
00C9 F8 239 DB 0F8H
00CA 80 240 DB 080H
00CB 90 241 DB 090H
00CC FF 242 DB 0FFH
243
244 END
A51 MACRO ASSEMBLER WL012 02/12/2004 12:06:14 PAGE 5
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
BIN16BCD . . . . . C ADDR 00A7H R SEG=CODE_SEG
BIN16BCD_LP. . . . C ADDR 00ADH R SEG=CODE_SEG
CODE_SEG . . . . . C SEG 00CDH REL=UNIT
DATA_SEG . . . . . D SEG 000BH REL=UNIT
DIS_BUF. . . . . . D ADDR 0002H R SEG=DATA_SEG
DIS_CODE . . . . . C ADDR 00C2H R SEG=CODE_SEG
DIS_DIGIT. . . . . D ADDR 0000H R SEG=DATA_SEG
DIS_INDEX. . . . . D ADDR 0001H R SEG=DATA_SEG
DPH. . . . . . . . D ADDR 0083H A
DPL. . . . . . . . D ADDR 0082H A
END_TIMER0 . . . . C ADDR 006DH R SEG=CODE_SEG
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
PSW. . . . . . . . D ADDR 00D0H A
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
TH0. . . . . . . . D ADDR 008CH A
TH1. . . . . . . . D ADDR 008DH A
TIMER0 . . . . . . C ADDR 003DH R SEG=CODE_SEG
TL0. . . . . . . . D ADDR 008AH A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TMP. . . . . . . . D ADDR 000AH R SEG=DATA_SEG
TR0. . . . . . . . B ADDR 0088H.4 A
TR1. . . . . . . . B ADDR 0088H.6 A
UPDATE_DISBUF. . . C ADDR 0076H R SEG=CODE_SEG
WL012. . . . . . . N NUMB -----
REGISTER BANK(S) USED: 0 1
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -