- 115
- 0
- 约2.39万字
- 约 150页
- 2019-04-14 发布于浙江
- 举报
知识链接 74S48功能表 1. 1)七段译码功能(=空,RBI=空) 在灯测试输入端()和动态灭零输入端(RBI)都接无效电平时,输入DCBA经74S48译码,输出高电平有效的七段字符显示器的驱动信号,显示相应字符。除DCBA = 0000外,RBI也可以接低电平,见表4-4中1~16行。 知识链接 2)消隐功能(BI=0) 此时BI/RBO端作为输入端,该端输入低电平信号时,表4-4中倒数第3行,无论 和RBI输入什么电平信号,不管输入DCBA为什么状态,输出全为“0”,七段显示器熄灭。该功能主要用于多显示器的动态显示。 知识链接 3)灯测试功能(=0) 此时BI/RBO端作为输出端,该端输入低电平信号时,表4-4中最后一行与RBI及DCBA输入无关,输出全为“1”,显示器7个字段都点亮。该功能用于七段显示器测试,判别是否有损坏的字段。 知识链接 4)动态灭零功能(=1,RBI=0) 此时BI/RBO端也作为输出端, 端输入高电平信号,RBI 端输入低电平信号,若此时DCBA = 0000,表4-4中倒数第2行输出全为“0”,显示器熄灭,不显示零。DCBA≠0,则对显示无影响。该功能主要用于多个七段显示器同时显示时熄灭高位的零。 知识链接 十进制数调整指令 二、 十进制调整指令DA 1. 在进行BCD码运算时,十进制调整指令总是跟在ADD或ADDC指令之后,其功能是将执行加法运算后存于累加器A中的结果进行调整和修正,使结果也为正确的BCD码。 指令格式:DA A 指令功能:对加法运算后存在累加器A中的BCD码加法结果进行调整。两个BCD码按二进制数相加之后,必须经本指令调整,才能得到正确BCD码的和数。 知识链接 1)十进制调整问题 上述的BCD码运算中:(A)结果正确;(B)结果不正确,因为BCD码中没有1111这个编码;(C)结果不正确,正确结果应为17,而运算结果却是11。可见,二进制数加法指令不能完全适用于BCD码十进制数的加法运算,要对结果做有条件的修正,这就是所谓的十进制调整问题。 对BCD码加法运算,只能借助于二进制加法指令。但二进制数加法原则上并不适于十进制数的加法运算,有时会产生错误结果。例如, 知识链接 2)出错原因和调整方法 出错原因在于BCD码共有16个编码,但只用其中的10个,剩下6个没用到。这6个没用到的编码(1010、1011、1100、1101、1110、1111)为无效编码。在BCD码加法运算中,凡结果进入或者跳过无效编码区时,结果出错。因此一位BCD码加法运算出错的情况有以下两种。 (1)加结果大于9,说明已经进入无效编码区。 (2)加结果有进位,说明已经跳过无效编码区。 无论哪种错误,都是由6个无效编码造成的。因此,只要出现上述两种情况之一,就必须调整。方法是把运算结果加6调整,即十进制调整修正。 知识链接 DA指令具体调整方法为:若累加器A中的低4位数值大于9或者低3位向低4位产生进位,即AC=1,则需将A的低4位内容加6调整,以产生低4位正确的BCD码值。如果加6调整后,低4位产生进位,且高4位均为1,则内部加法将置位CY,使CY=1。 若累加器A中的高4位值大于9或最高进位位CY=1,则高4位需加6调整,以产生高4位的正确BCD码值。同样,在加6调整后产生最高进位,则置位CY,反之,原CY的值不变,表示和数BCD码值大于等于100。这对多字节十进制加法有用,不影响OV标志。 知识链接 由此可见,十进制调整指令是根据累加器A的原始数值和PSW的状态,对累加器A进行加06(低4位有进位时)、60(高4位有进位时)或66(低4位和高4位都有进位时)的操作。必须注意,本指令不能简单地把累加器A中的16进制数交换成BCD码,也不能用于十进制减法的调整。 知识链接 应用程举例 2. 设计将两个4位压缩BCD码数相加的程序。其中一个加数存放在30(存放十位、个位)、31(存放千位、百位)单元,另一个加数存放在32(存放十位、个位)、33(存放千位、百位)单元,和数存入30、31单元。 参考程序段如下。 MOV R0,#30 ;地址指针指向一个加数的个位、十位 MOV R1,#32;另一个地址指针指向第二个加数的个位、十位 MOV A,@R0;一个加数送累加器A ADD A,@R1;两个加数的个位、十位相加 D AA;调整为正确的BCD码 MOV @R0,A;和数的个位、十位送30单元 INC R0;两个地址指针分别指向两
原创力文档

文档评论(0)