?? fdsmi.asm
字號:
;********************FDSMI********************
;本程序實現(xiàn)在雙字節(jié)數(shù)據(jù)塊中查找有符號數(shù)極小值。
;入口參數(shù):數(shù)據(jù)塊首址在SADR中,數(shù)據(jù)個數(shù)在W中。
;出口參數(shù):極小值在SOUH:SOU中,極小值地址在SADR中。
;占用資源:W,FSR,STATUS,020H,024H,025H,028H,029H,兩重堆棧。
;說 明: 1.如果有兩個或兩個以上相等的極大值,則只能給出第一個極大值的地址.
; 2.加載本文件的同時也加載了另外一個文件"FDUMI.ASM",
; 故用戶在使用這個子程序時可直接調用, 不必重新加載.
; 3.本程序的執(zhí)行對原數(shù)據(jù)塊并無影響.
IFNDEF FDSMI
#DEFINE FDSMI
FDSMI MOVWF TEMP1
MOVWF TEMP2
MOVF SADR,W
MOVWF FSR
INCF FSR,F
LOOP56 BTFSS INDF,7
GOTO NOMINUS1
MOVF INDF,W
MOVWF SOUH
DECF FSR,F
MOVF INDF,W
MOVWF SOU ;SOUH和SOU賦初值
MOVF FSR,W
MOVWF SADR
MOVLW .3
ADDWF FSR,F ;FSR指向下一個數(shù)的高位字節(jié)
LOOP55 BTFSS INDF,7
GOTO NEXT26
MOVF INDF,W
SUBWF SOUH,W
BTFSS STATUS,C
GOTO NEXT26
BTFSS STATUS,Z ;判斷高位是否相等
GOTO BELOW1
DECF FSR,F
MOVF INDF,W
SUBWF SOU,W ;高位相等的情況下判斷低位大小
BTFSS STATUS,Z ;如果低位也相等,則直接進入下一輪
BTFSS STATUS,C
GOTO NEXT25
GOTO RELOW3
BELOW1 MOVF INDF,W
MOVWF SOUH ;SOUH中總是存放最大值
DECF FSR,F ;FSR指向低位字節(jié)
RELOW3 MOVF INDF,W
MOVWF SOU ;最小值低位
MOVF FSR,W
MOVWF SADR ;最小值地址
NEXT25 INCF FSR,F
NEXT26 INCF FSR,F
INCF FSR,F
DECFSZ TEMP1,F
GOTO LOOP55
RETURN
NOMINUS1 INCF FSR,F
INCF FSR,F
DECFSZ TEMP1,F
GOTO LOOP56
MOVF TEMP2,W ;重新獲得數(shù)據(jù)個數(shù)
CALL FDUMI ;全是正數(shù),則按無符號數(shù)算法求其最小值
RETURN
INCLUDE "FDUMI.ASM"
ENDIF
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -