[KungFu8位 MCU]

KF8的六种寻址方式

[复制链接]
837|6
手机看帖
扫描二维码
随时随地手机跟帖
静听风易|  楼主 | 2018-5-25 11:00 | 显示全部楼层 |阅读模式
KF 系列单片机提供 6 种寻址方式,分别为:寄存器寻址、直接寻址、立即数寻址、寄 存器间接寻址、寄存器直接寻址和位寻址。KF 系列单片机的指令可以没有操作数、一个操 作数、两个操作数。
静听风易|  楼主 | 2018-5-25 11:01 | 显示全部楼层
1.寄存器寻址
采用这种寻址方式的指令中的操作数为寄存器组 R0-R7 的一个。
例:
CLR R0 ;R0←0 将寄存器 R0 清0
只有一个操作数(R0 的值),寻址方式为寄存器寻址。

ADD R0, R1 ;R0←R0+R1将寄存器 R0与 R1 的和赋值给 R0
两个操作数(R0和 R1), 寻址方式为寄存器寻址。

使用特权

评论回复
静听风易|  楼主 | 2018-5-25 11:01 | 显示全部楼层
2.直接寻址
在指令中的操作数为某个寄存器的直接地址,该地址指出其参与运算的数据所在的地 址。直接寻址可以是: 特殊功能寄存器、通用数据存储器。
例:
MOV R0,0X81 ;R0←(81H) 将 81H 单元的数据送到 R0 中
  指令中,源操作数寻址方式为直接寻址,目的操作数为寄存器寻址。

INC 0X3B ;3BH←(3BH)+1 将地址3BH 里的值加1,3BH即 BADDRL。
  指令中含有一个操作数,寻址方式为直接寻址。

使用特权

评论回复
静听风易|  楼主 | 2018-5-25 11:02 | 显示全部楼层
3.立即数寻址
在指令中的操作数为立即数。
例:
MOV R0,#0X20 ;R0←0X20 将立即数 0X20 送到寄存器 R0 中
ADD R0,#0X20 ;R0←(R0)+0X20 寄存器R0 的值与 0X20 相加结果送到 R0
AND R0,#0X20 ;R0←(R0)&0X20 寄存器R0 的值与 0X20 相与结果送到 R0
  以上三条指令中源操作数都是#0X20,为立即数寻址,目的操作数为寄存器寻址。

使用特权

评论回复
静听风易|  楼主 | 2018-5-25 11:02 | 显示全部楼层
4.寄存器间接寻址
这种寻址方式中,指令中的寄存器的内容指定操作数的地址,即寄存器中存放的是操作 数的地址。间接寻址只有两条指令 LD 和ST。

例:
LD R0, [R1] ;R0←((R1)) 将R1 的内容所指地址单元的数据送到 R0
  指令中源操作数的寻址方式为寄存器间接寻址,目的操作数为寄存器寻址。

ST [R0], R1 ;(R0)←(R1) 将R1 的内容送到 R0 的内容所指向的地址单元
  指令中目的操作数的寻址方式为寄存器间接寻址,源操作数为寄存器寻址。

使用特权

评论回复
静听风易|  楼主 | 2018-5-25 11:03 | 显示全部楼层
5.寄存器直接寻址
这种寻址方式中,目标寄存器的内容可以直接送给某个寄存器组 Rn,以实现寄存器直 接寻址。
例:
MOV R0 ,dir ;将 dir 目标寄存器的值赋值给 R0

使用特权

评论回复
静听风易|  楼主 | 2018-5-25 11:03 | 显示全部楼层
6.位寻址
指令中的操作数是寄存器的某位,这样针对位的寻址方式称为位寻址。
例:
CLR INTCTL, 1 ;将 INTCTL的第 1 位清0
CLR 0X80, 1 ;将 80H 的第 1 位清0
JNB 0X80, 1 ;如果 80H的第 1 位为0 则跳过下一条指令执行后面的程序

KF 系列单片机汇编指令共有 68 条,除子程序调用、子程序返回、中断返回、部分跳转 指令为双周期指令外,其余指令均为单周期指令。所有指令都占两个字节。
按照指令的功能可将其分为:数据传送指令、算术运算指令、逻辑运算指令、位操作指 令和转移指令和特殊指令。具体指令集请参考下表。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

231

帖子

0

粉丝