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

📄 ddm2bug.asm

📁 这是我最近写的一些单片机的简单的模块
💻 ASM
字号:
; DDM2功能:求双字节十六进制无符号数据块的平均值
org 000h
jmp 40h
org 40h
;入口条件:数据块的手指放在dptr中,双字节数据总个数放在r7中
;出口信息: 平均值放在r4,r5中
DDM2: MOV A,R7                ;保存数据个数
      MOV R2,A                ;初始化数据指针
      PUSH DPL                ;保持首址
      PUSH DPH
      CLR A                    ;初始化累加和
      MOV R3,A
      MOV R4,A
      MOV R5,A
DM20: MOVX A,@DPTR             ;读取一个数据的高字节
      MOV B,A
      INC DPTR
      MOVX A,@DPTR             ;读取一个数据的低字节
      INC DPTR
      ADD A,R5                 ; 累加到累加和中
      MOV R5,A
      MOV A,B
      ADDC A,R4
      MOV R4,A
      JNC DM21
      INC R3
DM21: DJNZ R2,DM20            ;累加完全部数据
      POP DPH                 ;恢复首址
      POP DPL
      LJMP DV31               ;求R3R4R5/R7-→R4R5,得到平均值
DV31: CLR C
      MOV A,R3
      SUBB A,R7
      JC DV30
      SETB OV ;商溢出
      RET
DV30: MOV R2,#10H ;求R3R4R5/R7-→R4R5
DM23: CLR C
      MOV A,R5
      RLC A
      MOV R5,A
      MOV A,R4
      RLC A
      MOV R4,A
      MOV A,R3
      RLC A
      MOV R3,A
      MOV F0,C
      CLR C
      SUBB A,R7
      ANL C,/F0
      JC DM24
      MOV R3,A
      INC R5
DM24: DJNZ R2,DM23
      MOV A,R3 ;四舍五入
      ADD A,R3
      JC DM25
      SUBB A,R7
      JC DM26
DM25: INC R5
      MOV A,R5
      JNZ DM26
      INC R4
DM26: CLR OV
jmp $
RET ;商在R4R5中      

⌨️ 快捷键说明

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