📄 fssma.asm
字号:
;********************FSSMA********************
;本程序实现在单字节数据块中查找有符号数极大值。
;入口参数:数据块首址在SADR中,字节数在W中。
;出口参数:极大值在SOU中,极大值地址在SADR中。
;占用资源:W,STATUS,FSR,020H,024H,028H,两重堆栈。
;说 明: 1.如果有两个或两个以上相等的极大值,则只能给出第一个极大值的地址.
; 2.加载本文件的同时也加载了另外一个文件"FSUMA.ASM",
; 故用户在使用这个子程序时可直接调用, 不必重新加载.
; 3.本程序的执行对原数据块并无影响.
IFNDEF FSSMA1
#DEFINE FSSMA1
FSSMA MOVWF TEMP1
MOVF SADR,W
MOVWF FSR
LOOP51 BTFSC INDF,7
GOTO NOPLUS
MOVF FSR,W
MOVWF SADR
MOVF INDF,W
INCF FSR,F
LOOP48 BTFSC INDF,7
GOTO LOOP49
SUBWF INDF,W
BTFSS STATUS,C
GOTO RECOVER2
BTFSC STATUS,Z
GOTO RECOVER2 ;如果相等则取前者
MOVF FSR,W
MOVWF SADR ;SADR中存放最大值地址
MOVF INDF,W ;W中总是存放最大值
LOOP49 INCF FSR,F
DECFSZ TEMP1,F
GOTO LOOP48
MOVWF SOU
RETURN
RECOVER2 SUBWF INDF,W ;恢复W
GOTO LOOP49
NOPLUS INCF FSR,F
DECFSZ TEMP1,F
GOTO LOOP51
MOVF SADR,W
SUBWF FSR,W ;重新恢复字节数
CALL FSUMA ;无符号数的最大值即有符号数的最大值
RETURN
INCLUDE "FSUMA.ASM"
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -