📄 bcdhex.asl
字号:
+B 00 01
+ 1 .area BCD_HEX(data,abs)
+ 2 .org 0x12f
+ 3
012F 4 .M_bcdbuf:: .ds 2
0131 5 .M_hexbuf:: .ds 2
0133 6 .M_temp:: .ds 7
+B 00 02
+ 7 .area BCDHEX(code,rel)
+ 8 ;|-------------------------------------------|
+ 9 ;| .Hex2Bcd::For 2 bytes |
+ 10 ;| .Input: |
+ 11 ;| ex: hex=1986 bcd=6534 |
+ 12 ;| 19 =>.M_hexbuf |
+ 13 ;| 86 =>.M_hexbuf+1 |
+ 14 ;| call .Hex2Bcd |
+ 15 ;| result: |
+ 16 ;| 65 =>.M_bcdbuf |
+ 17 ;| 34 =>.M_bcdbuf+1 |
+ 18 ;|-------------------------------------------|
+ 19
+ 20 ;--------------------------------------------
0000 21 .Hex2Bcd::
0000 F3 01 22 lda #01h
0002 FC 28 23 sta PP
0004 F3 00 24 lda #0
0006 FD 2F 25 sta .M_bcdbuf
0008 FD 30 26 sta .M_bcdbuf+1
000A F3 08 27 lda #8
000C FD 34 28 sta .M_temp+1
000E F1 31 29 lda .M_hexbuf
0010 FD 33 30 sta .M_temp
0012 31 .JUMP1:
0012 F1 33 32 lda .M_temp
0014 8B 00 33 adda #0
0016 7E 34 rolc
0017 FD 33 35 sta .M_temp
0019 F1 30 36 lda .M_bcdbuf+1
001B 20 00 6D 37 call .Chk_DAA
001E 99 30 38 addc .M_bcdbuf+1
0020 20 00 AE 39 call .DAA
0023 FD 30 40 sta .M_bcdbuf+1
0025 F1 2F 41 lda .M_bcdbuf
0027 20 00 6D 42 call .Chk_DAA
002A 99 2F 43 addc .M_bcdbuf
002C 20 00 AE 44 call .DAA
002F FD 2F 45 sta .M_bcdbuf
0031 F1 34 46 lda .M_temp+1
0033 3F 47 deca
0034 FD 34 48 sta .M_temp+1
0036 07 00 12 49 brnz .JUMP1
0039 F3 08 50 lda #8
003B FD 34 51 sta .M_temp+1
003D F1 32 52 lda .M_hexbuf+1
003F FD 33 53 sta .M_temp
0041 54 .JUMP2:
0041 F1 33 55 lda .M_temp
0043 8B 00 56 adda #0
0045 7E 57 rolc
0046 FD 33 58 sta .M_temp
0048 F1 30 59 lda .M_bcdbuf+1
004A 20 00 6D 60 call .Chk_DAA
004D 99 30 61 addc .M_bcdbuf+1
004F 20 00 AE 62 call .DAA
0052 FD 30 63 sta .M_bcdbuf+1
0054 F1 2F 64 lda .M_bcdbuf
0056 20 00 6D 65 call .Chk_DAA
0059 99 2F 66 addc .M_bcdbuf
005B 20 00 AE 67 call .DAA
005E FD 2F 68 sta .M_bcdbuf
0060 F1 34 69 lda .M_temp+1
0062 3F 70 deca
0063 FD 34 71 sta .M_temp+1
0065 07 00 41 72 brnz .JUMP2
0068 F1 2F 73 lda .M_bcdbuf
+ 74 ;sta0 .Hbuf
006A F1 30 75 lda .M_bcdbuf+1
+ 76 ;sta0 .Lbuf
006C 24 77 ret
+ 78 ;-------------------------------------------
006D 79 .Chk_DAA:
006D FD 35 80 sta .M_temp+2
006F F0 22 81 lda OP1
0071 FD 36 82 sta .M_temp+3
0073 F1 35 83 lda .M_temp+2
0075 FD 37 84 sta .M_temp+4
0077 99 37 85 addc .M_temp+4
0079 04 00 8C 86 brc .JUMP1$
007C CB F0 87 anda #0xf0
007E 8B 00 88 adda #0
0080 A7 A0 89 cmpe #0xa0
0082 04 00 8C 90 brc .JUMP1$
0085 F3 00 91 lda #0
0087 FD 39 92 sta .M_temp+6
0089 02 00 90 93 br .JUMP2$
008C 94 .JUMP1$:
008C F3 01 95 lda #1
008E FD 39 96 sta .M_temp+6
0090 97 .JUMP2$:
0090 F1 37 98 lda .M_temp+4
0092 CB 0F 99 anda #0x0f
0094 8B 00 100 adda #0
0096 7E 101 rolc
0097 A7 0A 102 cmpe #0x0a
0099 04 00 A3 103 brc .JUMP3$
009C F3 00 104 lda #0
009E FD 38 105 sta .M_temp+5
00A0 02 00 A7 106 br .JUMP4$
00A3 107 .JUMP3$:
00A3 F3 01 108 lda #1
00A5 FD 38 109 sta .M_temp+5
00A7 110 .JUMP4$:
00A7 F1 36 111 lda .M_temp+3
00A9 FC 22 112 sta OP1
00AB F1 35 113 lda .M_temp+2
00AD 24 114 ret
00AE 115 .DAA:
00AE FD 37 116 sta .M_temp+4
00B0 F1 38 117 lda .M_temp+5
00B2 CB 01 118 anda #1
00B4 06 00 BD 119 brz .NO_ADD6
00B7 F1 37 120 lda .M_temp+4
00B9 8B 06 121 adda #0x06
00BB FD 37 122 sta .M_temp+4
00BD 123 .NO_ADD6:
00BD F1 39 124 lda .M_temp+6
00BF CB 01 125 anda #1
00C1 07 00 C7 126 brnz .ADD60
00C4 F1 37 127 lda .M_temp+4
00C6 24 128 ret
00C7 129 .ADD60:
00C7 F1 37 130 lda .M_temp+4
00C9 8B 60 131 adda #0x60
00CB AB 00 132 suba #0
00CD FD 37 133 sta .M_temp+4
+ 134
00CF 24 135 ret
+ 136
+ 137 ;|-------------------------------------------|
+ 138 ;| .Bcd2Hex::For 2 bytes |
+ 139 ;| .Input: |
+ 140 ;| ex: bcd=1986 hex=07c2 |
+ 141 ;| 19 =>.M_bcdbuf |
+ 142 ;| 86 =>.M_bcdbuf+1 |
+ 143 ;| call .Bcd2Hex |
+ 144 ;| result: |
+ 145 ;| 07 =>.M_hexbuf |
+ 146 ;| c2 =>.M_hexbuf+1 |
+ 147 ;|-------------------------------------------|
+ 148 ;--------------------------------------------
00D0 149 .Bcd2Hex::
00D0 F3 01 150 lda #01h
00D2 FC 28 151 sta PP
00D4 F1 2F 152 lda .M_bcdbuf
00D6 FD 31 153 sta .M_hexbuf
00D8 F1 30 154 lda .M_bcdbuf+1
00DA FD 2F 155 sta .M_bcdbuf
00DC 20 01 26 156 call .bcdtohex
00DF F1 2F 157 lda .M_bcdbuf
00E1 FD 32 158 sta .M_hexbuf+1
00E3 F1 31 159 lda .M_hexbuf
00E5 FD 2F 160 sta .M_bcdbuf
00E7 20 01 26 161 call .bcdtohex
00EA F1 2F 162 lda .M_bcdbuf
00EC FD 31 163 sta .M_hexbuf
00EE F3 00 164 lda #0
00F0 FD 2F 165 sta .M_bcdbuf
00F2 FD 30 166 sta .M_bcdbuf+1
00F4 F1 31 167 lda .M_hexbuf
00F6 FD 33 168 sta .M_temp
00F8 169 .JMP1:
00F8 A7 00 170 cmpe #0
00FA 06 01 11 171 brz .JMP2
00FD F1 30 172 lda .M_bcdbuf+1
00FF 8B 64 173 adda #100
0101 FD 30 174 sta .M_bcdbuf+1
0103 F1 2F 175 lda .M_bcdbuf
0105 9B 00 176 addc #0
0107 FD 2F 177 sta .M_bcdbuf
0109 F1 33 178 lda .M_temp
010B 3F 179 deca
010C FD 33 180 sta .M_temp
010E 02 00 F8 181 br .JMP1
0111 182 .JMP2:
0111 F1 30 183 lda .M_bcdbuf+1
0113 89 32 184 adda .M_hexbuf+1
0115 FD 30 185 sta .M_bcdbuf+1
0117 F1 2F 186 lda .M_bcdbuf
0119 9B 00 187 addc #0
011B FD 2F 188 sta .M_bcdbuf
+ 189
011D F1 2F 190 lda .M_bcdbuf
011F FD 31 191 sta .M_hexbuf
+ 192 ;sta0 .Hbuf
0121 F1 30 193 lda .M_bcdbuf+1
0123 FD 32 194 sta .M_hexbuf+1
+ 195 ;sta0 .Lbuf
0125 24 196 ret
+ 197 ;----------------------bcd to hex-----------------------
0126 198 .bcdtohex:: ;Onebyte
0126 F3 00 199 lda #0h
0128 FD 30 200 sta .M_bcdbuf+1
012A F1 2F 201 .bcd_1$: lda .M_bcdbuf
012C AB 16 202 suba #16h
012E 05 01 4C 203 brnc .bcd_4$
0131 FD 2F 204 sta .M_bcdbuf
0133 CB 0F 205 anda #0fh
0135 AB 0A 206 suba #0ah
0137 06 01 3D 207 brz .bcd_2$
013A 05 01 43 208 brnc .bcd_3$
013D F1 2F 209 .bcd_2$: lda .M_bcdbuf
013F AB 06 210 suba #06h
0141 FD 2F 211 sta .M_bcdbuf
0143 F1 30 212 .bcd_3$: lda .M_bcdbuf+1
0145 8B 10 213 adda #10h
0147 FD 30 214 sta .M_bcdbuf+1
0149 02 01 2A 215 br .bcd_1$
014C F1 2F 216 .bcd_4$: lda .M_bcdbuf
014E CB F0 217 anda #0f0h
0150 A7 00 218 cmpe #0h
0152 06 01 5B 219 brz .bcd_5$
0155 F1 2F 220 lda .M_bcdbuf
0157 AB 06 221 suba #06h
0159 FD 2F 222 sta .M_bcdbuf
015B 223 .bcd_5$:
015B F1 2F 224 lda .M_bcdbuf
015D 89 30 225 adda .M_bcdbuf+1
015F FD 2F 226 sta .M_bcdbuf
+ 227 ;sta0 .Lbuf
0161 24 228 ret
+
+Symbol Table
+
+ 2 .ADD60 00C7 R
+ 2 .Bcd2Hex 00D0 GR
+ 2 .Chk_DAA 006D R
+ 2 .DAA 00AE R
+ 2 .Hex2Bcd 0000 GR
+ 2 .JMP1 00F8 R
+ 2 .JMP2 0111 R
+ 2 .JUMP1 0012 R
+ 2 .JUMP1$ 008C R
+ 2 .JUMP2 0041 R
+ 2 .JUMP2$ 0090 R
+ 2 .JUMP3$ 00A3 R
+ 2 .JUMP4$ 00A7 R
+ 1 .M_bcdbuf 012F GR
+ 1 .M_hexbuf 0131 GR
+ 1 .M_temp 0133 GR
+ 2 .NO_ADD6 00BD R
+ 2 .bcd_1$ 012A R
+ 2 .bcd_2$ 013D R
+ 2 .bcd_3$ 0143 R
+ 2 .bcd_4$ 014C R
+ 2 .bcd_5$ 015B R
+ 2 .bcdtohex 0126 GR
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 BCD_HEX size B flags E
+ 2 BCDHEX size 162 flags 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -