单片机基础:对单片机指令系统中七种寻址方式的理解 您所在的位置:网站首页 单片机有几种中断类型 单片机基础:对单片机指令系统中七种寻址方式的理解

单片机基础:对单片机指令系统中七种寻址方式的理解

2024-07-07 10:46| 来源: 网络整理| 查看: 265

七种寻址方式 1.立即寻址2.直接寻址3.寄存器寻址4.寄存器间接寻址4.1记录一下调试程序过程中遇到的一个错误 5.基址加变址寻址6.相对寻址7.位寻址

1.立即寻址

立即寻址就是不寻址,直接把被操作的数据(立即数)写在指令当中。在指令代码中,需要在立即数前面加上 #,表示立即寻址。

例如:把数据40H传送到累加器ACC中。

指令 在这里插入图片描述 Debug: 执行第三步程序时,寄存器A内数据变为十六进制0x40。 在这里插入图片描述

2.直接寻址

直接寻址就是将被操作的数据在存储器中的地址写在指令代码当中。也就是将操作数的地址写在指令当中。 例如:地址40H中的数据为5BH,将40H中的数据传入累加器ACC中。 指令: 在这里插入图片描述 这条指令中的40H,与立即寻址中的#40H意义不同,这里的40H表示数据#5BH的地址。 Debug: 在这里插入图片描述 单步执行到第4行指令时,累加器中的数据变为0x5b。

3.寄存器寻址

寄存器寻址就是将操作数(被操作的数据)存放在寄存器中。能够实现寄存器寻址的寄存器有A、B、DPTR、R0 ~ R7。 例如:在这里插入图片描述 在第3行指令中,对于目的操作数来说就是寄存器寻址,对于源操作数来说就是立即寻址。 在第4行指令中,目的操作数和源操作数都是寄存器,那么二者都是寄存器寻址。

在这里插入图片描述

4.寄存器间接寻址

与寄存器寻址相似,在寄存器寻址时,寄存器中存放的是操作数,而寄存机间接寻址时,寄存器中存放的是操作数的地址。只用R0、R1、DPTR可以实现寄存器间接寻址 例如: 在这里插入图片描述 寄存器R0中存放的是数据3FH的地址40H,这样寄存器间接寻址可以将数据3FH传到累加器ACC中。 Debug: 在这里插入图片描述 累加器的数据变为0x3f。

4.1记录一下调试程序过程中遇到的一个错误

在这里插入图片描述 如果程序这样写,会有什么错误。调试一下。 Debug 在这里插入图片描述 a中的数据没有变,可以看见R0中是0x3f,这时候a通过寄存器间接寻址得到的是地址3fh中的数据0x00。

5.基址加变址寻址

基址寄存器只能是PC和DPTR,变址寄存器为累加器A。这种寻址方式是将PC或DPTR中得值与A中的值相加,得到的结果是操作数的地址。注意:是操作数的地址,不是操作数本身。 例如:MOVC A, @A+DPTR 这条指令是把A和DPTR中的值相加,得到操作数的地址,存到A中,然后A在根据地址去找到操作数。 MOVC A,@A+PC 同理,这条只是将DPTR换为PC。 在这里插入图片描述

6.相对寻址

相对寻址就是PC指针当前指向的值,与设置的JC偏移量相加得到的值作为目标地址,其中偏移量是自己设定的。 JC 80H 假如这条指令存放在1005H,取出操作码后PC指向1006H,取出偏移量后PC指向1007H,那么目标地址就是1007H + 80H,但是偏移量是有符号数,80H是-128的补码,因此最后的目标地址是0F87H。

7.位寻址

单片机中21个特殊功能寄存器,其中有11个是可位寻址的(ACC、B、IP、IE、PSW、SCON、TCON、P0 ~ P3) 一共有四种表示形式,以PSW为例

直接使用位地址位名称单元地址加位特殊功能寄存器名称加位

MOV C, 0D2H MOV C, OV MOV C, 0D0H.2 MOV C, PSW.2



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有