PIC单片机实现双字节无符号数加减法

一、编写子程序 Add_16,实现双字节无符号数加法。要求在地址0x70~0x73定义变量ACCALO、ACCAHI、ACCBLO、ACCBHI。

  • ACCALO ;存放加数或减数低8位
  • ACCAHI ;存放加数或减数高8位
  • ACCBLO ;存放被加数或被减数低8位
  • ACCBHI 存放被加数或被减数高8位
list       p=16f877A   ; 标明所用的处理器类型
 #include   <p16f877A.inc>  ; 调用头文件 

;***** 变量声明**************************************

ACCALO   EQU   0x70  ;存放加数低8位 
ACCAHI   EQU   0x71  ;存放加数高8位 
ACCBLO   EQU   0x72  ;存放被加数低8位 
ACCBHI   EQU   0x73  ;存放被加数高8位 

;----------------------------------------------------
    org         0x0000           ; 复位入口地址
;----------------------------------------------------
Main
       MOVLW   0X4B                
       MOVWF   ACCBLO              ;(ACCBLO)=0x4B
       MOVLW   0X4C
       MOVWF   ACCBHI              ;(ACCBHI)=0x4C
       MOVLW   0XD2                
       MOVWF   ACCALO              ;(ACCALO)=0xD2
       MOVLW   0X40
       MOVWF   ACCAHI              ;(ACCAHI)=0x40
       CALL    Add_16              ;调用子程序Add_16求和,结果应为0x8D1D 
       NOP
       GOTO $                      ;停机 
;--------------双字节无符号数加法子程序--------------------------------
Add_16
      MOVF   ACCALO,W    
      ADDWF  ACCBLO,F    ;ACCB和ACCA低8位相加
      BTFSC  STATUS,C    ;有进位否?
      INCF   ACCBHI      ;有进位,ACCB高8位加1
      MOVF   ACCAHI,W    
      ADDWF  ACCBHI,F    ;ACCB和ACCA高8位相加
      RETURN
;--------------------------------------------------------------
   END                  ;程序结束

二、编写子程序Sub_16,实现双字节无符号数减法。要求在地址0x20~0x23定义变量ACCALO、ACCAHI、ACCBLO、ACCBHI。

  • ACCALO ;存放加数或减数低8位
  • ACCAHI ;存放加数或减数高8位
  • ACCBLO ;存放被加数或被减数低8位
  • ACCBHI 存放被加数或被减数高8位
list       p=16f877A   ; 标明所用的处理器类型
 #include   <p16f877A.inc>  ; 调用头文件 

;***** 变量声明***************************************

ACCALO   EQU   0x70  ;存放减数低8位 
ACCAHI   EQU   0x71  ;存放减数高8位 
ACCBLO   EQU   0x72  ;存放被减数低8位 
ACCBHI   EQU   0x73  ;存放被减数高8位 

;----------------------------------------—-----------
    org         0x0000           ; 复位入口地址
;----------------------------------------------------
Main
       MOVLW   0X4B              ;被减数0x4C4BH送ACCB
       MOVWF   ACCBLO
       MOVLW   0X4C
       MOVWF   ACCBHI
       MOVLW   0XD2              ;减数0x40D2送ACCA
       MOVWF   ACCALO
       MOVLW   0X40
       MOVWF   ACCAHI
       CALL    Sub_16            ;调用Sub_16,求差,结果为0x0B79 
       NOP
       GOTO $                    ;停机
;--------------双字节无符号数减法子程序-----------------------
Sub_16
      MOVF   ACCALO,W
      SUBWF  ACCBLO,F    ;ACCB、ACCA低8位相减
      BTFSS  STATUS,C    ;有借位否?
      DECF   ACCBHI      ;有,被减数高8位减1
      MOVF   ACCAHI,W     
      SUBWF  ACCBHI,F    ;ACCB、ACCA高8位相减
      RETURN
;-------------------------------------------------------------
   END                  ;程序结束

 

关于 “PIC单片机实现双字节无符号数加减法” 的 1 个意见

评论关闭。