分类:寻址方式从大的方面可以分成直接寻址和间接寻址。
直接寻址就像甲要和乙说话直接叫乙的名字就可以了,甲直接和乙建立联。
间接寻址就像甲要和乙说话,而乙在另外一个城市,甲就写了一封信通过邮递员送给乙,甲通过邮递员间接和乙建立联系,这就叫间接寻址。间接寻址中指针就充当了邮递员的角色。
直接寻址分为:绝对地址寻址,符号寻址
间接寻址分为:存储器间接寻址,寄存器间接寻址。
一、直接寻址
直接寻址是最简单的寻址方法,也是编程中最常用的寻址方式。
①绝对地址寻址
绝对地址寻址就是直接调用要使用的地址
示例:
i0.0 q1.0 mw0
②符号寻址
符号寻址就是通过符号表中的绝对地址的命名进行寻址
示例:
用下图中的i_motor_start进行寻址。
二、间接寻址
间接寻址是比较复杂的寻址方式,也是我们这里重点讲解的地方,间接寻址需重点理解指针的概念。
指针:理解指针主要需要理解指针的两个特性。
a.存储性:存储性指的是指针也是一段存储空间,它的存储内容是地址。
b.指向性:因为指针存放的内容是地址,那么指针中存放的是哪一个地址,我们就说指针指向了这个地址所对应的存储空间,这就是指针的指向性。
a.存储器间接寻址
【a1】16位指针寻址:
1)、16位指针存储空间
16位指针存储空间是16位,2个字节,通过这2个字节的空间来存放变量的地址。
2)、16位指针寻址范围
16位指针只能对计时器(t),计数器(c),数据块(db,di)的号,程序块(fb,fc)的号进行寻址,也就是这2个字节的存储空间中只能存放计时器的编号,计数器的编号,数据块的编号,程序块的编号。
3)、16位指针寻址表示格式
16位指针寻址表示格式为:区域标示符[16位地址指针]
示例:
db [mw0] //表示对db块进行寻址,mw0中如果存储的是1,那么该寻址结果为db1,也就是通过该指令找到了db1数据块。
t [mw2] //表示对计时器进行寻址,mw2中如果存放的是2,那么该寻址结果为t2,也就是通过该指令找到了计时器t2。
4)、16位指针寻址程序示例
例1:
l 2 //将2进行装载
t mw 0 //将2传送到mw0
a i 0.0 //如果i0.0 = true
l s5t#10s //装载时间
sd t [mw0] //t开始计时
例2:
l 1 //将1进行装载
t mw 0 //将1传送到mw0
opn db [mw 0] //打开db1
l 10 //将10进行装载
t dbw 0 //将10传送到db1.dbw0中
l dbw 0 //将db1.dbw0进行装载
t mw 2 //将db1.dbw0传送到mw2中
【a2】32位指针寻址
1)、32位指针存储空间
32位指针存储空间是32位,4个字节,通过这4个字节的空间来存放变量的地址。
2)、32位指针寻址范围
32位指针能对i、q、m、l、数据块的位、字节、字、双字进行寻址,也就是这4个字节的存储空间中能对上述存储类型中的位、字节、字、双字的地址进行存储。
3)、32位指针存储格式
4)、32位指针寻址表示格式
32位指针寻址表示格式为:地址存储器标示符[32位地址指针]
示例:
i[md0] //i表示输入存储区,md0存储地址信息。
q[md4] //q表示输出存储区,md4存储地址信息。
5)、32位指针三种寻址方法
①直接输入10进制数寻址(最复杂最不直观的寻址方式,不推荐使用)。
②将输入的10进制数左移3位进行寻址(比较直观的寻址方式)。
③利用 p#字节.位 格式进行寻址(最直观最方便的寻址方式,推荐使用)。
6)、32位指针三种寻址方法举例
例1:直接输入10进制数寻址
该程序实现的是两个数相加的功能。
这里我们要重点理解为什么第六句将10传送到了mw4中,而不是mw32中,为什么第八句将15传送到了mw6中,而不是mw48中。
这是因为32,和48存放到指针中是按照32位二进制数进行存放的,下面我们通过将48存放到md24来进行举例说明
由上图可知将48放进md24则mw[md24]指向了mw6
例2:左移3为进行寻址
由于将10进制数对应的2进制数左移三位后,字节存储区的二进制数和该10进制数对应的2进制数又相同了,而位存储区变为0,所以这样的寻址要比例1的寻址方式显得更为直观,便于使用和理解。
例3:以 p#字节.位 格式进行寻址
通过这个实例我们可以发现直接使用p#字节.位的寻址方式是最直观方便的。
b.寄存器间接寻址
寄存器间接寻址使用的是cpu的地址寄存器ar1和ar2
b1)、寻址格式
区域标示符[ar1/ar2,p#x]
注:
①ar1/ar2表示地址寄存器ar1或者ar2,地址寄存器中只能存放地址。
②p#x表示偏移量x是偏移具体数值。
b2)、寄存器间接寻址示例
展会直击 | 飞凌嵌入式亮相CMEF 2023
关于2G、3G、4G网络的差异
NFC标签的应用有哪些
谷歌非法出售iPhone用户信息,将于2018年开庭审理
连续三年蝉联铃轩奖,黑芝麻智能“硬技术”持续获认可
寻址方式分类及其详解
传感器制造商Sensirion的上市计划将近
回顾罗德与施瓦茨赢得埃及重大DVB-T2地面传输合同的内容介绍
如何庆祝国际妇女节:让谷歌Google告诉您
新唐科技NuMaker emWin RDK-N9H30接口平台简介
一片晶圆到底可以切割出多少晶片?(附30强晶圆代工厂)
6款常用音频功放电路详析
M2M和物联网的基本属性与特性介绍
简单讲述一些关于存储器的进化历程
5G革命进程加速 全球统一标准已成共识
艾德克斯携电源、电子负载等产品成功参展第85届中国电子展
通过3D磁性传感器增强智能家居安全性
华为mate9和华为P10哪个好?性能大拼比你看好谁?华为mate9和华为P10区别对比评测
盘点示波器的各种文件存储方式
如何连接放大器以使其正常工作