第1页共34页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共34页(1)16×16位定点数加、减法程序LISTp=16f877INCLUDEp16f877
incACCALOEQU20;存放加数或减数低8位ACCAHIEQU21;存放加数或减数高8位ACCBLOEQU23;存放被加数或被减数低8位ACCBHIEQU24;存放被加数或被减数高8位ORG0X0000STARTGOTOMAIN;***双字节减法子程序,入口地址ACCB-ACCA,出口地址ACCB***D_subCALLNEG_A;求ACCA的补码;双字节加法子程序,入口地址ACCB+ACCA,出口地址ACCBD_addMOVFACCALO,0;ACCB和ACCA低半字节相加ADDWFACCBLOBTFSCSTATUS,C;有进位否
INCFACCBHI;有,ACCB高字节加1,再加ACCAHIMOVFACCAHI,0;ACCA、ACCB高半字节相加ADDWFACCBHIRETURN;子程序返回;ACCA取补子程序NEG_ACOMFACCALO;ACCALO取反加1INCFACCALOBTFSCSTATUS,Z;低8位有进位吗
DECFACCAHI;有,ACCAHI减1,再取反COMFACCAHI;否则ACCAHI直接取反RETURN;子程序返回(2)16×16位定点数乘法程序LISTp=16f877INCLUDEp16f877
incACCALOEQU20;存放乘数低8位ACCAHIEQU21;存放乘数高8位ACCBLOEQU23;存放被乘数低8位和乘积第16~23位ACCBHIEQU24;存放被乘数高8位和乘积第24~31位ACCCLOEQU26;存放乘积低8位ACCCHIEQU27;存放乘积高8位ACCDLOEQU28;临时寄存器ACCDHIEQU29;临时寄存器TEMPEQU2A