51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel 8031单片机,后来随着Flash rom 技术的发展,8031单片机取得了长足的发展,成为了应用最广泛的8位单片机之一。51单片机是基础入门的一个单片机,并且还是应用最广泛的一种。今天我们主要讲讲51单片机的寻址方式。
【指令】
指令是人们向计算机发的一种命令,一条指令对应着一种操作。
【指令系统】
CPU所能执行的全部指令的集合。CPU能够执行多少条指令是由CPU的内部结构所决定的。不同的CPU,其指令系统不同。
【指令的表示方法】
指令在机器中必须以机器码(二进制码)的形式出现。在书写指令时,通常有两种方法:
1. 在计算机发展的初期,人们用机器码书写指令,这一阶段成为机器语言阶段。
优点:用机器码书写的程序,计算机可以直接识别和运行。
缺点:书写时容易出错,不容易记忆。
2. 为了克服机器语言的缺点,人们用符号书写指令:指令由操作码和操作数组成。
优点:容易理解和记忆。
缺点:计算机不能直接识别和运行。
汇编语言程序必须转换成机器语言程序,转换方法有两种:
手工转换:查表 符号指令——机器码指令——MEM
汇编程序:符号指令——机器——机器码指令——MEM
【寻址方式】
寻址方式由操作码和操作数组成。
操作码:决定CPU执行何种操作
操作数:就是操作对象,无论何种指令其操作的对象都是数据。
数据:数据在指令中有2种表示方法:1.数本身;2.数所在的地方
指出操作数所在的方式就是寻址方式。
【51单片机寻址的方式】
每一种计算机都具有多种寻址方式,寻址方式的多少是反映指令系统优劣的主要指标之一。
51单片机有7种寻址方式:
1. 立即寻址
2. 直接寻址
3. 寄存器间址
4. 寄存器寻址
5. 变址寻址(基址寄存器+变址寄存器间接寻址)
6. 相对寻址
7. 位寻址
【立即寻址】
指令的操作数存放在程序存储器中,操作数紧跟在操作码后面。
寻址空间:程序存储器
指令形式:操作码——OP 立即数——#data
注意:#表明其后跟的是立即数,立即数就是数字量本身
【直接寻址】
在指令中直接给出操作数的真实地址,操作码后面紧跟一个实际操作数地址
寻址空间:内RAM的低128字节,特殊功能寄存器SFR区
指令的三种形式:
【寄存器寻址】
当前选定的寄存器内容就是实际操作数
寻址空间:R0~R7,由RS0、RS1确定寄存器区
指令的三种形式:
【寄存器直接寻址】
寄存器中的内容是一个地址,由该地址单元寻址到所需的操作数
寻址空间:内部RAM
指令的三种形式:
注意:“间接”表示某寄存器中的“内容”只是一个“单元地址”,这个地址单元中存放的数据才是要找的“操作数”。
符号“@”表示“在....”,其含义与读音皆同“at”。
规定工作寄存器只有R0和R1采用与间接寻址。
规定用MOV指令访问片内RAM,用MOVX访问外部RAM。
【基址寄存器加变址寄存器间接寻址】
以DPTR或PC作基址寄存器,A作变址寄存器两者相加形成操作数地址。
寻址空间:程序存储器
指令形式:操作码
【相对寻址】
以当前PC值为基准地址,加上指令的偏移量“rel”,结果为目标地址。
Rel为有符号补码数,范围:-128~+127
寻址空间:程序存储器
指令的三种形式:一般为双字节或三字节指令
注意:“当前PC值”值程序中下一条指令所在的首地址,是一个16位数;符号“rel”在实际编程中通常用标号代替。
【位寻址】
以访问触发器的方式,对内部RAM、SFR的位地址空间进行访问,称为位寻址,位寻址用于布尔指令。
寻址空间:片内RAM的20H~2FH字节地址
注意:位地址里的数据只可能是一个0或1