历史上的今天
返回首页

历史上的今天

今天是:2025年03月10日(星期一)

正在发生

2018年03月10日 | AT89S51算术运算类指令

2018-03-10 来源:eefocus

  在AT89S51指令系统中,有单字节的加、减、乘、除法指令,算术运算功能比较强。算术运算指令都是针对8位二进制无符号数的,如要进行带符号或多字节二进制数运算,需编写具体的运算程序,通过执行程序实现。
  
  算术运算的结果将使PSW中的进位(Cy)、辅助进位(Ac)、溢出(OV)3种标志位置1或清0,但是增1和减1指令不影响这些标志。
  
  1.加法指令
  
  共有4条加法运算指令:
  500
  这4条8位二进制数加法指令的一个加数总是来自累加器A,而另一个加数可由寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址等不同的寻址方式得到。其相加的结果总是放在累加器A中。
  
  使用加法指令时,要注意累加器A中的运算结果对各个标志位的影响:
  
  (1)如果位7有进位,则进位标志Cy置l,否则Cy清0。
  
  (2)如果位3有进位,辅助进位标志Ac置1,否则Ac(Ac为PSW寄存器中的一位)清O。
  
  (3)如果位6有进位而位7没有进位,或者位7有进位而位6没有进位,则溢出标志位OV置l,否则OV清0。
  
  溢出标志位OV的状态,只有进行带符号数加法运算时才有意义。当两个带符号数相加时,OV=1,表示加法运算超出了累加器A所能表示的带符号数的有效范围(-128~+127),即产生了溢出,表示运算结果是错误的,否则运算是正确的,即无溢出产生。
  
  【例3-1】 (A)=53H,(RO)=FCH,执行指令
  501
  运算式为
  502
  结果为(A)=4FH,Cy=l,Ac=0,OV=O,P=1(A中l的位数为奇数)。
  
  注意:在上面的运算中,由于位6和位7同时有进位,所以标志位OV=O。
  
  【例3-2】 (A)=85H,(RO)=20H,(20H)=AFH,执行指令503

    运算式为504

    结果为(A)=34H,Cy=l,Ac=l,OV=1,P=1。
  
  注意:由于位7有进位,而位6无进位,所以标志位OV=1。
  
  2.带进位加法指令
  
  带进位加法运算的特点是进位标志位Cy参加运算,因此带进位的加法运算是三个数相加。带进位的加法指令共4条:
  505
  这组带进位加法指令的功能是,指令中不同寻址方式所指定的加数、进位标志与累加器A内容相加,结果存在累加器A中。
  
  如果位7有进位,则进位标志Cy置1,否则Cy清0;如果位3有进位输出,则辅助进位标志Ac置l,否则Ac清0;如果位6有进位而位7没有进位,或者位7有进位而位6没有进位,则溢出标志OV置1,否则标志OV清O。
  
  【例3-3】 (A)=85H,(20H)=FFH,Cy=l,执行指令
  510
  运算式为
  511
  结果为(A)=85H,Cy=l,Ac=l,OV=0,P=l(A中1的位数为奇数)。
  
  3.增1指令
  
  共有5条增1指令:
  512
  这组增1指令的功能是把指令中所指出的变量增1,且不影响程序状态字PSW中的任何标志。若变量原来为FFH,加1后将溢出为OOH(仅指前4条指令),标志也不会受到影响。第5条指令“INC DPTR”,是16位数增1指令。指令首先对低8位指针DPL的内容执行加1操j作,当产生溢出时,就对DPH的内容进行加1操作,并不影响标志Cy的状态。
  
  4.十进制调整指令
  513
  十进制调整指令用于对BCD码十进制数加法运算结果的内容进行修正,指令格式为:
  
  这条指令的功能是对压缩的BCD码(一个字节存放2位BCD码)的加法结果进行十进制调整。两个BCD码按二进制相加之后,必须经本指令的调整才能得到正确的压缩BCD码的和数。
  
  (1)十进制调整问题
  
  对于十进制数(BCD码)的加法运算,只能借助于二进制加法指令。然而,二进制数的加法运算原则上并不能适用于十进制数的加法运算,有时会产生错误结果。
  
  例如:514
  
  上述的BCD码运算中:
  
  (a)运算结果正确。
  
  (b)运算结果不正确,因为十进制数的BCD码中没有1111这个编码。
  
  (c)运算结果也不正确,正确结果应为17,而运算结果却是11。
  
  这种情况表明,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,因此要对结果进行有条件的修正,这就是所谓的十进制调整问题。
  
  (2)出错原因和调整方法 
  
  出错的原因在于BCD码是4位二进制编码,共有16个编码,但BCD码只用了其中的10个,剩下6个没用到。这6个没用到的编码(1010,1011,1100,1101,1110,1111)为无效编码。
  
  在BCD码的加法运算中,凡结果进入或者跳过无效编码区时,其结果就是错误的。因此1泣BCD码加法运算出错的情况有以下两种:
  
  ①相加结果大于9,说明已经进入无效编码区。
  
  ②相加结果有进位,说明已经跳过无效编码区。
  
  无论哪一种出错情况,都是因为6个无效编码造成的。因此,只要出现上述两种情况之一,就必须进行调整。调整的方法是把运算结果加6调整,即所谓的十进制调整修正。
  
  十进制调整的修正方法如下:
  
  ①累加器低4位大于9或辅助进位位Ac=l,则进行低4位加6修正。
  
  ②累加器高4位大于9或进位位Cy=l,则进行高4位加6修正。
  
  ③累加器高4位为9,低4位大于9,则高4位和低4位分别加6修正。
  
  上述十进制调整修正,是通过执行指令“DA A”自动实现的。
  
  【例3-4】 (A)=56H,(R5)=67H,把它们看作两个压缩的BCD数,进行BCD数加法。
  
  执行指令:
  520
  由于高4位和低4位分别大于9,所以“DA A”指令要分别加6,来对结果进行修正。
  521
  结果为(A)=23H,Cy=l。
  
  由上可见,56+67=123,结果是正确的。
  
  5.带借位的减法指令
  
  共有4条指令:
  522
  这组带借位减法指令是从累加器A中的内容减去指定的变量和进位标志Cy的值,结果存放在累加器A中。
  
  如果位7需借位则Cy置l,否则Cy清0;如果位3需借位则Ac置1,否则Ac清0;如果位6需借位而位7不需要借位,或者位7需借位而位6不需借位,则溢出标志位OV置1,否则OV清0。
  
  源操作数允许有寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址方式。
  
  【例3-5】 (A)=C9H,(R2)=54H,Cy=l,执行指令
  530
  运算式为
  531
  结果为(A)=74H,Cy=0,Ac=0,OV=1(位6向位7借位)。
  
  6.减1指令
  
  共有4条指令:
  532
  这组指令的功能是指定的变量减1。若原来为OOH,减1后下溢为FFH,不影响标志位(P标志除外)。
  
  【例3-6】 (A)=OFH,(R7)=19H,(30H)=OOH,(Rl)=40H,(40H)=OFFH,执行指令
  533
  结果为(A)=OEH,(R7)=18H,(30H)=OFFH,(40H)=OFEH,P=l,不影响其他标志。
  
  7.乘法指令
  534
  这条指令的功能是把累加器A和寄存器B中的无符号8位整数相乘,其16位积的低位字节在累加器A中,高位字节在B中。如果积大于255,则溢出标志位OV置1,否则OV清0。进位标志位Cy总是清0。
  
  8.除法指令
  535
  该指令的功能是用累加器A中8位无符号整数(被除数)除以B中8位无符号整数(除数),所得的商(为整数)存放在累加器A中,余数存放在寄存器B中,且Cy和溢出标志位OV清0。如果B的内容为0(即除数为0),则存放结果的A、B中的内容不定,并溢出标志位OV置l。
  
  【例3-7】 (A)=FBH,(B)=12H,执行指令
  536
  结果为(A)=ODH,(B)=11H,Cy=0,OV=O。


推荐阅读

史海拾趣

Focus公司的发展小趣事

Focus科技股份有限公司(虚构)在深耕外贸电商领域的同时,也敏锐地捕捉到了教育与医疗行业的数字化转型机遇。公司利用自身在互联网技术和大数据分析方面的优势,研发了智慧教育平台和移动医疗应用。智慧教育平台通过提供个性化学习资源和在线互动教学服务,有效提升了教育资源的利用率和学生的学习效果;移动医疗应用则通过远程医疗咨询、健康管理等功能,为用户提供了便捷的医疗服务体验。这些跨界融合的产品不仅丰富了公司的业务线,也进一步提升了公司的品牌影响力和市场竞争力。

振华新云(CEC)公司的发展小趣事

背景:2004年,为了适应国家经济发展和产业布局调整的需要,振华新云面临从凯里白午山区调迁至贵阳市新添高新技术开发区的挑战。

内容:在调迁过程中,公司克服了种种困难,如设备搬迁、员工安置、生产线重建等。通过精心组织和周密安排,确保了调迁工作的顺利进行。

成果:调迁完成后,振华新云在贵阳市新添高新技术开发区迎来了新的发展机遇,为公司后续的快速发展提供了有力保障。

Bipolarics Inc公司的发展小趣事

作为一家有社会责任感的企业,Bipolarics Inc在发展过程中始终关注环境保护和社会公益。公司积极采用环保材料和节能减排技术,努力降低生产过程中的能耗和排放。同时,Bipolarics Inc还积极参与社会公益活动,支持教育事业和扶贫项目等。通过这些举措,公司不仅树立了良好的企业形象,也为社会的可持续发展做出了积极贡献。

以上五个故事虽然是虚构的,但它们基于电子行业的一般发展规律和企业发展的常见路径。在现实中,一个电子行业的发展故事可能会涉及技术突破、市场扩张、战略合作、国际化战略、人才培养和社会责任等多个方面。这些元素共同构成了企业发展的丰富内涵和多样路径。

Advanced Photonix公司的发展小趣事

随着产品的不断成熟和市场的日益扩大,Advanced Photonix开始寻求与全球分销商的合作。在经过一番谨慎的筛选和谈判后,公司与全球知名的半导体和电子元器件授权分销商贸泽电子签订了全球分销协议。这一合作使得Advanced Photonix的产品能够更快地进入全球市场,同时也提高了公司的知名度和影响力。通过贸泽电子的分销网络,Advanced Photonix的光电二极管、混合器件以及光电管等产品得到了广泛应用,进一步巩固了公司在电子行业的领先地位。

Capar Components Corp公司的发展小趣事

随着国内市场的饱和,Capar Components Corp开始将目光投向国际市场。公司积极参加国际电子展会,与海外客户建立联系,拓展销售渠道。同时,公司还根据不同国家和地区的市场需求,调整产品结构和营销策略,逐步打开了国际市场的大门。如今,公司的产品已经远销欧美、东南亚等多个国家和地区,成为了国际电子市场上的一支重要力量。

Dfx公司的发展小趣事

在智能手机行业快速发展的背景下,某知名手机制造商面临着如何将更多功能集成到更小空间的挑战。通过引入DFX的设计理念,该公司成功实现了硬件的小型化,同时保持了高性能和可靠性。通过优化内部布局、采用先进封装技术和选用高性能元器件,该手机制造商在保持产品竞争力的同时,满足了消费者对轻薄、高性能手机的需求。

问答坊 | AI 解惑

交流一下PCB封装(附件有常用IC封装+图)

想和大家交流一下封装的有关资料,单是命名就把我搞昏了,请高手指教下啊…

查看全部问答>

哪个题用FPGA呢

本帖最后由 paulhyde 于 2014-9-15 09:05 编辑 今年的题怎么没有明确的FPGA题呢  …

查看全部问答>

开关电源手册 (第二版)(日)(原田耕介).pdf

replyreload += \',\' + 305164;寒假回家前人品爆发第七帖。 书名:开关电源手册  (第二版) 作者:(日)原田耕介 译者:耿文学 译 版权:机械工业出版社 版次:2004-8-1 总页数:585 文件格式:PDF 文件大小:12.9M 压缩包 ...…

查看全部问答>

labview 数据系统的构建

http://www.tudou.com/programs/view/V-WdePe5hIM/…

查看全部问答>

请教个大家一个白痴问题,nandflash驱动

现在bsp里有2个nandflash驱动 D:\\WINCE600\\PLATFORM\\SMDK6410\\SRC\\COMMON\\NANDFLASH\\Fmd\\ D:\\WINCE600\\PLATFORM\\SMDK6410\\SRC\\DRIVERS\\NANDFLASH\\Fmd\\ 怎么会有2个驱动啊, 有什么区别? …

查看全部问答>

路灯监控系统”图片博览会“

政府怎么就采购这些东西呢?我弄不明白 !             你有工程经验吗?我可没那么小的改刀!我在现场怎么接啊!靠。还带空气开关,你的终端不带强制开关灯啊。那我装你的设备干 ...…

查看全部问答>

TI stellaris硬件驱动库中文翻译Gpio_api

今天在调试一个18B20的程序,好好的把GPIO研究了一下,这是我收集的中文资料,希望对大家有点帮助     unsigned long GPIODirModeGet ( unsigned long  ulPort, unsigned char  ucPin   ) ...…

查看全部问答>

求推荐适合新人的STM32开发板

                                 请帮忙推荐一款适合新人的STM32 开发板?希望有详细的例程和教案?谢谢…

查看全部问答>

版主:RTC报警功能有的时候为什么不进中断

如题:我的配置如下,有的时候程序下载下去,标志位有但是不进RTC中断,图片中是没有进中断时RTC寄存器的值,有劳版主赐教! void RTC_Configuration(void) {     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_ ...…

查看全部问答>

请问怎样将模拟信号前后隔离?

想用片上AD测量现场过来的标准信号(0-5V,4-20mA) 在没有隔离模块的情况下想保证430不被现场的超流超压信号烧毁 该如何做? 大家应用片上AD的场合都是怎么用的呢?…

查看全部问答>