📄 invaders.lst
字号:
00141 BTFSS WREG,0
00142 BCF VAROUT,BITOUT
00143 R@B ; Reset the bank when the macro is finished
00144 ENDM
00145 ;-------------------------------------------------------------------------------------------------
00146 WREG_WORD MACRO WORDOUT
00147 S@B WORDOUT
00148 MOVWF WORDOUT
00149 S@B WORDOUT + 1
00150 CLRF WORDOUT + 1
00151 R@B ; Reset the bank when the macro is finished
00152 ENDM
00153 ;-------------------------------------------------------------------------------------------------
00154 WREG_DWORD MACRO DWORDOUT
00155 S@B DWORDOUT + 3
00156 CLRF DWORDOUT + 3
00157 S@B DWORDOUT + 2
00158 CLRF DWORDOUT + 2
00159 S@B DWORDOUT + 1
00160 CLRF DWORDOUT + 1
00161 S@B DWORDOUT
00162 MOVWF DWORDOUT
00163 R@B ; Reset the bank when the macro is finished
00164 ENDM
00165 ;-------------------------------------------------------------------------------------------------
00166 BYTE_WREG MACRO BYTEIN
00167 S@B BYTEIN
00168 MOVFW BYTEIN
00169 R@B ; Reset the bank when the macro is finished
00170 ;movff bytein,WREG
00171 ENDM
00172 ;-------------------------------------------------------------------------------------------------
00173 NUM_WREG MACRO NUMIN
00174 MOVLW (NUMIN & 255)
00175 ENDM
00176 ;-------------------------------------------------------------------------------------------------
00177 NUM_BYTE MACRO NUMIN,BYTEOUT
00178 S@B BYTEOUT
00179 IF(NUMIN == 0)
00180 CLRF BYTEOUT
00181 ELSE
00182 IF(NUMIN == 255)
00183 SETF BYTEOUT
00184 ELSE
00185 MOVLW (NUMIN & 255)
00186 MOVWF BYTEOUT
00187 ENDIF
00188 ENDIF
00189 R@B ; Reset the bank when the macro is finished
00190 ENDM
00191 ;-------------------------------------------------------------------------------------------------
00192 NUM_BIT MACRO NUMIN,VAROUT,BITOUT
00193 S@B VAROUT
00194 IF((NUMIN & 1) == 1)
00195 BSF VAROUT,BITOUT
00196 ELSE
00197 BCF VAROUT,BITOUT
00198 ENDIF
00199 R@B ; Reset the bank when the macro is finished
00200 ENDM
00201 ;-------------------------------------------------------------------------------------------------
00202 NUM_WORD MACRO NUMIN,WORDOUT
00203
00204 IFDEF _USELFSR
00205 IF(WORDOUT == FSR0L)
00206 LFSR 0,NUMIN
00207 EXITM
00208 ENDIF
00209
00210 IF(WORDOUT == FSR1L)
00211 LFSR 1,NUMIN
00212 EXITM
00213 ENDIF
00214
00215 IF(WORDOUT == FSR2L)
00216 LFSR 2,NUMIN
00217 EXITM
00218 ENDIF
00219 ENDIF
00220
00221 IF((NUMIN & 255) == 0)
00222 S@B WORDOUT
00223 CLRF WORDOUT
00224 ELSE
00225 IF((NUMIN & 255) == 255)
00226 S@B WORDOUT
00227 SETF WORDOUT
00228 ELSE
00229 S@B WORDOUT
00230 MOVLW (NUMIN & 255)
00231 MOVWF WORDOUT
00232 ENDIF
00233 ENDIF
00234
00235 IF(((NUMIN >> 8) & 255) == 0)
00236 S@B WORDOUT + 1
00237 CLRF WORDOUT + 1
00238 ELSE
00239 IF(((NUMIN >> 8) & 255) == 255)
00240 S@B WORDOUT + 1
00241 SETF WORDOUT + 1
00242 ELSE
00243 S@B WORDOUT + 1
00244 MOVLW ((NUMIN >> 8) & 255)
00245 MOVWF WORDOUT + 1
00246 ENDIF
00247 ENDIF
00248 R@B ; Reset the bank when the macro is finished
00249 ENDM
00250 ;-------------------------------------------------------------------------------------------------
00251 NUM_DWORD MACRO NUMIN,DWORDOUT
00252
00253 IF(((NUMIN >> 24) & 255) == 0)
00254 S@B DWORDOUT + 3
00255 CLRF DWORDOUT + 3
00256 ELSE
00257 IF(((NUMIN >> 24) & 255) == 255)
00258 S@B DWORDOUT + 3
00259 SETF DWORDOUT + 3
00260 ELSE
00261 S@B DWORDOUT + 3
00262 MOVLW ((NUMIN >> 24) & 255)
00263 MOVWF DWORDOUT + 3
00264 ENDIF
00265 ENDIF
00266
00267 IF(((NUMIN >> 16) & 255) == 0)
00268 S@B DWORDOUT + 2
00269 CLRF DWORDOUT + 2
00270 ELSE
00271 IF(((NUMIN >> 16) & 255) == 255)
00272 S@B DWORDOUT + 2
00273 SETF DWORDOUT + 2
00274 ELSE
00275 S@B DWORDOUT + 2
00276 MOVLW ((NUMIN >> 16) & 255)
00277 MOVWF DWORDOUT + 2
00278 ENDIF
00279 ENDIF
00280
00281 IF(((NUMIN >> 8) & 255) == 0)
00282 S@B DWORDOUT + 1
00283 CLRF DWORDOUT + 1
00284 ELSE
00285 IF(((NUMIN >> 8) & 255) == 255)
00286 S@B DWORDOUT + 1
00287 SETF DWORDOUT + 1
00288 ELSE
00289 S@B DWORDOUT + 1
00290 MOVLW ((NUMIN >> 8) & 255)
00291 MOVWF DWORDOUT + 1
00292 ENDIF
00293 ENDIF
00294
00295 IF((NUMIN & 255) == 0)
00296 S@B DWORDOUT
00297 CLRF DWORDOUT
00298 ELSE
00299 IF((NUMIN & 255) == 255)
00300 S@B DWORDOUT
00301 SETF DWORDOUT
00302 ELSE
00303 S@B DWORDOUT
00304 MOVLW (NUMIN & 255)
00305 MOVWF DWORDOUT
00306 ENDIF
00307 ENDIF
00308 R@B ; Reset the bank when the macro is finished
00309 ENDM
00310 ;-------------------------------------------------------------------------------------------------
00311 BIT_WREG MACRO VARIN,BITIN
00312 S@B VARIN
00313 CLRW
00314 BTFSC VARIN,BITIN
00315 MOVLW 1
00316 R@B ; Reset the bank when the macro is finished
00317 ENDM
00318 ;-------------------------------------------------------------------------------------------------
00319 BIT_BYTE MACRO VARIN,BITIN,BYTEOUT
00320 S@B VARIN
00321 CLRW
00322 BTFSC VARIN,BITIN
00323 MOVLW 1
00324 S@B BYTEOUT
00325 MOVWF BYTEOUT
00326 ; movff WREG,byteout
00327 R@B ; Reset the bank when the macro is finished
00328 ENDM
00329 ;-------------------------------------------------------------------------------------------------
00330 BIT_BIT MACRO VARIN,BITIN,VAROUT,BITOUT
00331 IF ((VARIN & 0X0F00) == (VAROUT & 0X0F00))
00332 S@B VARIN
00333 BTFSC VARIN,BITIN
00334 BSF VAROUT,BITOUT
00335 BTFSS VARIN,BITIN
00336 BCF VAROUT,BITOUT
00337 ELSE
00338 IF ((VARIN <= BANKA_END) | (VARIN >= 0X0F80))
00339 S@B VAROUT
00340 BTFSC VARIN,BITIN
00341 BSF VAROUT,BITOUT
00342 BTFSS VARIN,BITIN
00343 BCF VAROUT,BITOUT
00344 ELSE
00345 IF ((VAROUT <= BANKA_END) | (VAROUT >= 0X0F80))
00346 S@B VARIN
00347 BTFSC VARIN,BITIN
00348 BSF VAROUT,BITOUT
00349 BTFSS VARIN,BITIN
00350 BCF VAROUT,BITOUT
00351 ELSE
00352 S@B VARIN
00353 CLRDC
00354 BTFSC VARIN,BITIN
00355 SETDC
00356 S@B VAROUT
00357 SKPNDC
00358 BSF VAROUT,BITOUT
00359 SKPDC
00360 BCF VAROUT,BITOUT
00361 ENDIF
00362 ENDIF
00363 ENDIF
00364 R@B ; Reset the bank when the macro is finished
00365 ENDM
00366 ;-------------------------------------------------------------------------------------------------
00367 BIT_WORD MACRO VARIN,BITIN,WORDOUT
00368 S@B WORDOUT + 1
00369 CLRF WORDOUT + 1
00370 BIT_BYTE VARIN,BITIN,WORDOUT
00371 ENDM
00372 ;-------------------------------------------------------------------------------------------------
00373 BIT_DWORD MACRO VARIN,BITIN,DWORDOUT
00374 S@B DWORDOUT + 3
00375 CLRF DWORDOUT + 3
00376 S@B DWORDOUT + 2
00377 CLRF DWORDOUT + 2
00378 S@B DWORDOUT + 1
00379 CLRF DWORDOUT + 1
00380 BIT_BYTE VARIN,BITIN,DWORDOUT
00381 ENDM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -