00H-1FH为工作寄存器区,里面就是通用寄存器组R0-R7,每八个分一组,如第一组为R0-R7,地址位00-07H;假设第一组叫1(R0-R7),那么08-0FH为第二组,就叫2(R0-R7),依次类推共有4组。这个区域是最常用的数据区,数据的操作大部分在这里进行。通用寄存器分组的好处是:当程序切换(特别是被中断或抢占的时候)只需要切换一组寄存器就可以获得一组新的寄存器,而不必担心和别的程序冲突,也可以尽量少的进行入栈和出栈操作,提高运行效率。作用?当然是放数据,只不过这个地方最好用。
20H-2FH为可位寻址区,这里和通用寄存器组一样可以进行位寻址,也就是说可以比较方便的进行位操作,个人认为它和通用寄存器组的区别是,没有逐个的命名和分组。使用频率较高的数据,或需要位操作的数据会放在这里。
30H-7FH是字节寻址区,很普通的数据缓存区,用来建立堆栈,还有放一些不太常用的数据。
以下需要注意,有两个80-FFH的数据区。
其一:80-FFH,特殊功能寄存器组区,支持直接寻址,各种各样的特殊功能寄存器都在这里。
其二:80-FFH,间接寻址区,着里只支持间接寻址,使用间接寻址指令避免和特殊功能寄存器区冲突。用来放一些不常用(相对不常用)的数据,由于使用R0或R1作指针寻址,用来建立数组数组是非常好的。