问题: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在前面否则报错未定义变量)