dfskwinc.asm
来自「PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用」· 汇编 代码 · 共 47 行
ASM
47 行
;********************DFSKWINC********************
;本程序实现在单字节无符号增序数据块中对分查找特定值(即关键字)。
;入口参数:关键字在SOU中,数据块首址在SADR中,数据个数在W中。
;出口参数:如果找到,则其地址在SADR中,且STATUS:C为0,如果没找到,则STATUS:C为1。
;占用资源:W,STATUS,FSR,020H,022H,024H,一重堆栈。
;说 明: 1.如果有多个数据等于特定值,则只能给出其中一个的地址.
; 2.本程序的执行对原数据块并无影响.
IFNDEF DFSKWINC1
#DEFINE DFSKWINC1
DFSKWINC ADDWF SADR,W
ADDLW 0FFH
MOVWF DADR ;得到末地址
MOVWF FSR
MOVF INDF,W
SUBWF SOU,W
BTFSC STATUS,Z ;最后一个是否为所找的数
GOTO DONE8 ;找到
LOOP60 MOVF DADR,W
ADDWF SADR,W ;SADR+DADR
MOVWF FSR
RRF FSR,F ;FSR=(SADR+DADR)/2
MOVF INDF,W
SUBWF SOU,W
BTFSC STATUS,Z
GOTO DONE8 ;找到
MOVF FSR,W
SUBWF SADR,W
BTFSC STATUS,Z
GOTO NMATCH
MOVF INDF,W
SUBWF SOU,W
MOVF FSR,W
BTFSC STATUS,C
MOVWF SADR
BTFSS STATUS,C
MOVWF DADR ;缩小查找范围
GOTO LOOP60
NMATCH BSF STATUS,C
RETLW 1
DONE8 MOVF FSR,W
MOVWF SADR
BCF STATUS,C
RETLW 0
ENDIF
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?