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

📄 b4sqr.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 ASM
字号:
;********************MBSQR********************
;本程序实现四字节二进制数开平方。
;入口参数:四字节的原数据N的地址在SADR中,6字节的缓冲区地址在SADRH中。
;出口参数:结果在SOUH:SOU中。
;占用资源:W,STATUS,023H,024H,025H,026H,028H,029H,02AH,02BH
;说明:     1.加载本文件的同时也加载了另外1个文件"SUDIV.ASM"
;            故用户在使用这个子程序时可直接调用,不必重新加载.
;          2.结果小于或等于真实值.
SADR        EQU         020H
SADRH       EQU         021H
DADR        EQU         022H
CNT         EQU         023H
SOU         EQU         024H
SOUH        EQU         025H
RLT         EQU         026H
RLTH        EQU         027H
TEMP1       EQU         028H
TEMP2       EQU         029H
TEMP3       EQU         02AH
TEMP4       EQU         02BH

MBSQR
            MOVLW       3
            ADDWF       SADR,W
            MOVWF       FSR
            MOVF        INDF,F
            BTFSS       STATUS,Z
            GOTO        NZEROX
            DECF        FSR,F
            MOVF        INDF,F
            BTFSS       STATUS,Z
            GOTO        NZEROX1
            DECF        FSR,F
            MOVF        FSR,F
            BTFSS       STATUS,Z
            GOTO        NZEROX2
            DECF        FSR,F
            MOVF        INDF,W
            MOVWF       SOU
            CALL        SBSQR
            RETLW       0
NZEROX2     MOVF        INDF,W
            MOVWF       SOUH
            DECF        FSR,F
            MOVF        INDF,W
            MOVWF       SOU
            CALL        DBSQR
            RETLW       0
NZEROX1     MOVLW       0FFH
            MOVWF       SOU
            CLRF        SOUH
            INCF        FSR,F
            GOTO        NEXTX1
NZEROX      MOVLW       0FFH
            MOVWF       SOU
            MOVWF       SOUH
NEXTX1      CLRF        RLT
            CLRF        RLTH
            MOVF        INDF,W
            MOVWF       TEMP4
            DECF        FSR,F
            MOVF        INDF,W
            MOVWF       TEMP3
            DECF        FSR,F
            MOVF        INDF,W
            MOVWF       TEMP2
            DECF        FSR,F
            MOVF        INDF,W
            MOVWF       TEMP1       ;保护N
            INCF        SADRH,F
            INCF        SADRH,F     ;缓冲区

LOOPX       CLRF        RLT
            CLRF        RLTH

            DECF        SADRH,W     ;LOOPX未登记
            MOVWF       FSR
            MOVF        SOUH,W
            MOVWF       INDF
            DECF        FSR,F
            MOVF        SOU,W
            MOVWF       INDF        ;保存加数

            MOVF        SADR,W
            MOVWF       FSR
            MOVF        TEMP1,W
            MOVWF       INDF
            INCF        FSR,F
            MOVF        TEMP2,W
            MOVWF       INDF
            INCF        FSR,F
            MOVF        TEMP3,W
            MOVWF       INDF
            INCF        FSR,F
            MOVF        TEMP1,W
            MOVWF       INDF        ;恢复N

            MOVLW       SOU         
            MOVWF       DADR        ;除数
            MOVLW       4
            CALL        MUDIV
            MOVF        SADR,W
            MOVWF       FSR
            MOVF        INDF,W
            MOVWF       SOU
            INCF        FSR,F
            MOVF        INDF,W
            MOVWF       SOUH
            MOVLW       2
            SUBWF       SADRH,W
            MOVWF       FSR
            MOVF        INDF,W
            ADDWF       SOU,F
            INCF        FSR,F
            BTFSC       STATUS,C
            INCF        INDF,F
            MOVF        INDF,W
            ADDWF       SOUH,F      ;相加
            BCF         STATUS,C
            RRF         SOUH,F
            RRF         SOU,F       ;除以2
            DECF        SADRH,W
            MOVWF       FSR
            MOVF        SOUH,W
            SUBWF       INDF,W
            BTFSC       STATUS,Z
            GOTO        NEXTX
            BTFSC       STATUS,C
            RETLW       0
            GOTO        LOOPX
NEXTX       DECF        FSR,F
            MOVF        SOU,W
            SUBWF       INDF,W
            BTFSC       STATUS,Z
            RETLW       0
            BTFSC       STATUS,C
            RETLW       0
            GOTO        LOOPX
            INCLUDE     "MUDIV.ASM"
            INCLUDE     "SBSQR.ASM"
            INCLUDE     "DBSQR.ASM"

⌨️ 快捷键说明

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