1、在设计指令系统时,51系统中增加了位寻址指令,由于是8位的系统,自然是用一个字节区分指令(本码表示寻址了),一个字节表示寻址哪一个(本码指向欲寻的位),这时关键字来了,8位只能区分256个位址了)。【用双字节指令位寻址,后一个字节指向要寻的位】
2、51系统中给了用户128个位,它们对应在RAM的20H-2FH这16个字节上,20H.0位对指令的00H,2FH.7对应指令的7FH。(指令的第二个字节)
3、51系统中的许多特殊寄存器也是非常需要位寻的,特殊突破口有128个字节(地址从80H-FFH),全部位寻需要1024个位。如前所述,总共256位,用户用去128位,还剩余128位,合算成字节,也只能位寻16个字节。
4、于是将特殊突破口80-FFH中,选出能被8整除的地址字节(80H,88H,90H...F0H,F8H),恰好16个字节的128位,分配给了剩余的位寻址。
5、其中80H.0(也就是P0.0口)对应指令码80H,88H.6(也就是TCON.6 = TR1)对应指令码8EH。
6、明白以上,就知道:TMDO(89H),SBUF(99H)是不可以位寻址的了(地址不是8的整数倍)。
以上是个人对51的理解与猜想。
51的位寻功能,这其最灵活的特点。许多其它系统,无独立的位寻址指令。
|