⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdsmi.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************FDSMI********************
;本程序实现在双字节数据块中查找有符号数极小值。
;入口参数:数据块首址在SADR中,数据个数在W中。
;出口参数:极小值在SOUH:SOU中,极小值地址在SADR中。
;占用资源:W,FSR,STATUS,020H,024H,025H,028H,029H,两重堆栈。
;说    明: 1.如果有两个或两个以上相等的极大值,则只能给出第一个极大值的地址.
;          2.加载本文件的同时也加载了另外一个文件"FDUMI.ASM",
;            故用户在使用这个子程序时可直接调用, 不必重新加载.
;          3.本程序的执行对原数据块并无影响. 

           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指向下一个数的高位字节
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指向低位字节
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     ;重新获得数据个数
            CALL        FDUMI       ;全是正数,则按无符号数算法求其最小值
            RETURN
            INCLUDE     "FDUMI.ASM"              
           ENDIF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -