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

📄 fdsma.asm

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

           IFNDEF       FDSMA1
            #DEFINE     FDSMA1
                        
FDSMA       MOVWF       TEMP1
            MOVWF       TEMP2
            MOVF        SADR,W
            MOVWF       FSR
            INCF        FSR,F
LOOP52      BTFSC       INDF,7
            GOTO        NOPLUS1
            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指向下一个数的高位字节     
LOOP50      BTFSC       INDF,7
            GOTO        NEXT24
            MOVF        INDF,W
            SUBWF       SOUH,W
            BTFSC       STATUS,C
            GOTO        NOVER1
            MOVF        INDF,W      
            MOVWF       SOUH        ;SOUH中总是存放最大值
            DECF        FSR,F       ;FSR指向低位字节
RELOW2      MOVF        INDF,W
            MOVWF       SOU         ;最大值低位
            MOVF        FSR,W
            MOVWF       SADR        ;最大值地址
NEXT23      INCF        FSR,F
NEXT24      INCF        FSR,F
            INCF        FSR,F
            DECFSZ      TEMP1,F
            GOTO        LOOP50
            RETURN
NOPLUS1     INCF        FSR,F
            INCF        FSR,F
            DECFSZ      TEMP1,F
            GOTO        LOOP52
            MOVF        TEMP2,W     ;重新获得数据个数
            CALL        FDUMA       ;全是负数,则按无符号数算法求其最大值
            RETURN
NOVER1      BTFSS       STATUS,Z    ;判断高位是否相等
            GOTO        NEXT24
            DECF        FSR,F
            MOVF        INDF,W
            SUBWF       SOU,W       ;高位相等的情况下判断低位大小
            BTFSS       STATUS,C
            GOTO        RELOW2
            GOTO        NEXT23    
            INCLUDE     "FDUMA.ASM"         
           ENDIF     

⌨️ 快捷键说明

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