PIC单片机开发:第八章双字节运算与16x16定点数乘法

0 下载量 121 浏览量 更新于2024-06-28 收藏 118KB DOC 举报
本资源文档主要介绍了在PIC单片机应用开发中的一些典型模块,包括第八章的程序设计部分。主要内容分为两个部分:双字节的加法和减法操作,以及16x16位定点数的乘法算法。 1. **双字节算术运算子程序**: - **双字节减法子程序 (D_subCALLNEG_A)**:该子程序用于执行两个16位数的减法操作,其中输入为ACCB和ACCA。程序首先计算ACCA的补码,然后进行低字节的相加,判断是否有进位,如果有则累加ACCB的高字节。最后返回结果到ACCB。 - **双字节加法子程序 (D_add)**:此子程序用于执行两个16位数的加法,先将ACCB和ACCA的低字节相加,检查是否有进位,若有则累加ACCB的高字节。结果存储在ACCB中。 2. **ACCA取补子程序 (NEG_A)**:这个子程序用于求ACCA的补码,即取反并加1,如果ACCA的低8位有进位,则ACCA的高8位需减1后再次取反。 3. **16x16位定点数乘法程序**: - **乘法运算过程**:该部分实现了一个完整的16x16位乘法算法,涉及多个临时寄存器(ACCDLOEQU28至ACCDHIEQU29, TEMPEQU2A, SIGNEQU2B)。首先通过CALLS_SIGN子程序求取乘积的符号,然后设置好初始条件,如清空乘积寄存器ACCC,初始化循环标志,进行逐位的乘法运算,包括右移操作(RRF)和进位判断(MLOOPBCFSTATUS,C)。 - **子程序调用**:在乘法运算开始时,会调用SETUP子程序,将ACCB的值传输到ACCD,以便后续的乘法步骤。 这些子程序展示了在PIC单片机开发中对复杂算术运算的处理,对于理解和实现高效的数字逻辑处理具有重要意义。通过掌握这些算法,开发人员可以构建更复杂的系统,例如数据处理、控制系统或者嵌入式应用中的数值计算任务。