我们看看内部RAM简单的分布情况:
从00H---1FH这32个单元,称为工作寄存器区
是R7----R0,共4组
从20H---2FH,是可以位寻址的区域
20H.1和01H位地址,实际是等价的
因为位地址也是从00H开始...........到最高位7FH
是这样算出来的:20H到2FH是16行,每行8位,共16*8=128位
从00H,01H,02H............7FH 是7*16=112,112+15=127位,还有一个00H,
刚好7FH就是128位!
3)位寄存器的定义名称,如C、EA等。
C是谁?
还记得程序状态寄存器PSW么?
PSW有8个位,每个位有个名称:
最高位称为CY(进位标志),最低位称为P标志
在程序当中,CY就要用C来表示,CY也称为位累加器或者进位标志
EA是什么?EA是控制单片机中断的开关位
我们可以用 SETB EA 让它=1SET C 让C=1
看看位操作指令表:
1 位数据传送指令:
上面的例子,很容易误解,正确的理解要看下图:
首先这里的07H不是指工作寄存器的07H,工作寄存器的07H实际是R7
这里的07H指的是位寻址空间(20H---2FH 中的07H),仔细看图:
79H 是0111 1001 就是说20H的内容0111 1001 的最高位是0
我们是把20H的最高位给C!
那么 MOVC,03H的意思就是把20H的第4位,赋给CY
但是,MOV A,07H 的意思就是把07H单元的8位2进制数,赋值给A!
07H单元在这里的意思就是R7,这里传送的是1个字节
位状态控制:
我们把上面的语句仿真一下:
建立新项目:
一开始SPX 是0x0007
单步一次:
SPX变成0x0080