累加器的作用具体如下:
在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器,能进行加、减、读出、移位、循环移位和求补等操作;在中央处理器CPU中,累加器是一种暂存器,它用来储存计算所产生的中间结果,如果没有像累加器这样的暂存器,在每次计算加法,乘法,移位等等后就必须要把结果写回到内存,再读回来,存取主内存的速度是比从数学逻辑单元到有直接路径的累加器存取更慢;在汇编语言程序中,累加器是一个寄存器,在程序中用它来保存临时数据时,最后将其转存到其它寄存器或内存单元中,以防止在其累加器的作用是什么?
CY位是累加器的进位、借位标志。下文的叙述按16位机来举例说明,如果是8位机或其它字长,则可换一个例子,但道理相似。
对于无符号数的运算,CY位就可以表示其是否溢出。但如果是有符号数,则不能按CY标志来判断了。为此,设了另一个标志OV,其含义就是“假如是有符号数运算,是否出现了溢出”。
例如对于16位运算器,65534 + 3,(即二进制的1111111111111110 + 0000000000000011),
本该得65537,(即二进制的10000000000000001),但因为寄存器只有16位,最高位的那个1丢掉了(进入了CY标志)。结果寄存器中只剩下了1,(即二进制的0000000000000001)。
此时,我们可以说,16位的无符号数加法,65534+3溢出了,溢出后的答案成了1。
但是对于有符号整数,情况就不同了。有符号整数采用补码表示法。16位有符号整数不可能表示65534,此时如果机内二进制是1111111111111110,程序中认为它是-2,故衡磨帆:
机内的二进制的1111111111111110 + 0000000000000011,代表的是(-2) + 3。
请注意,此时的(-2)+3和上文的无符号数65534+3,在CPU的运算器硬件上完全相同,都是得到和为1,而CY标志也为1。
但是,有符号数(-2)+3=1并无溢出。故此时的CY标志不能代游罩表它溢出了。
另外再举一例:
无符号数32763 + 8 = 32771,没有进位,CY标志为0。此时并不溢出。
但是,如果是有符号数32763 + 8,这就是溢出了,因为32773的二进制为1000000000000011,作为有符号数会被看成负数-32765。16位有符号数不可能表示32773的。
不管是有符号数还是无符号数,CPU的二进制运算器机器加、咐雹减操作是一样的,但其“溢出”的条件不同。
现在大多数的计算机中,如果是无符号数,都可以用CY标志来判断其是否溢出;而如果是有符号数,则需要用OV标志来判断其是否溢出。
至于OV标志在逻辑上又是根据什么产生的呢?则不同的计算机上有不同的实现方法,但效果都是一样。
这里介绍一种道理比较容易懂的方法:“双符号位法”。具体是:
作加、减法前,先将两个运算数都按照有符号数的规则扩充成17位。即:符号位是0的前面添一位0,符号位是1的前面添一位1。
然后按17位的机器加、减,得出17位的结果。
如果17位结果的高两位(即双符号位)不同,就置OV标志为1,否则,OV标志为零。
然后取其低16位作为最后结果。
汇编语言中寄存器AL有什么作用
汇编语言中寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作尘掘可能需要更少时间。
累加器作用:用于乘、除、输入陆兄搭/输出等操作,使用频率很早拿高。
累加器ACC的作用
ACC 累加器
B 用于辅助累加器做某些运算的寄存器
PSW 程序状态字 其中最高位是进/借位标志C;PSW.6是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位;PSW.4和PSW.3是闹袜寄存器组选择位RS1和RS0,用于从00H--1FH的32个存储器单元(4组)中选出当前准备使用的一组工作寄存器的映射地址;PSW.2是溢出标志OV;PSW.0是ACC的偶校验位P;PSW的其余位不用
IP 中断优先级控制寄存器 在51中IP.0--IP.4依次控制INT0、T0、INT1、T1、UART中断的优先级,高三位不用
IE 中断使能控制器 IE.7是所有中断的总开关EA,IE.0--IE.4依次控制INT0、T0、INT1、T1、UART中断功能的开放或关断
P0、P1、P2、P3 这四个寄存器用于读写51单片机的四个I/O端口
SBUF 串行数据缓冲器 将数据樱轿写入SBUF,单片机就自动将数据从UART口发送出去
SCON 串行口功能控制器 最高两位SM0、SM1控制串行口工作模式;第5位SM2通常用于液颂激多机通信中区分地址帧和数据帧;第4位REN是控制串口接收数据的使能位;第3位TB8和第2位RB8分别是在串口的相关工作模式下要发送的和接收到的第9位数据;次低位TI和最低位RI分别标识一个发送或接收过程已结束,这两个标志位都会触发串口中断