MPLAB实现双字节减法程序

问题:mplab实现双字节减法程序

 解答:

include "p16f877A.inc"
;-----------------------------------------------------------------------
ALO equ 20h ;存放减数低八位
AHI equ 21h ;存放减数高八位
BLO equ 22h;存放被减数低八位
BHI equ 23h ;存放被减数高八位
;-----------------------------------------------------------------------------------
;程序开始
;-----------------------------------------------------------------------------------
org 0000h
nop
goto main
main
	movlw 4bh;被减数4c4bh送B
	movwf BLO
    movlw 4ch
	movwf BHI
	movlw 0d1h  ;减数40d1h送A
	movwf ALO
    movlw 40h
	movwf AHI
	call sub_2byte ;调用双字节减法子程序,求差,结果呈现在被减数上为0b7ah
		nop
        goto $
;-------------------双字节减法子程序---------------------------
sub_2byte 
	movf ALO,w
	subwf BLO,f;低八位相减
	btfss status,c;借位与否
	decf BHI ;有借位,被减数高8位减1;无借位,跳过
	movf AHI,w
	subwf BHI,f;高八位相减
;-----------
end

 结果:4c4bh-40d1h=0b7ah,结果在被除数23h22h体现(注意0d1h加上0在前面否则报错未定义变量)

MPLAB实现双字节减法程序_第1张图片

MPLAB实现双字节减法程序_第2张图片  

你可能感兴趣的:(MPLAB,经验分享)