您的位置:网站首页 > 电器维修资料网 > 正文 >
MCS-51单片机传送类指令
来源: 日期:2013-11-18 21:55:05 人气:标签:
“#”符号表示后面跟的是一个数字,而不是地址,因为在51指令当中内部存储器的地址是直接用十六进制的数字表示的,如果我们把语句写成:
那么这句指令的含义是将内部存储器位于第23h那个字节中的值传至a,若23h中的值为ooh,则运行结果a=ooh,这被称为“直接寻址”。
51指令规定ro和rl寄存器为间接寻址寄存器,使用方法如下:
mova.@ro;@表示取ro内的值所代表的ram单元里的值,假设排号为23h的存储器中的值为ooh,ro中的值为23h,那么执行了上面的语句以后,a=ooh如果我们把指令写成mova,ro则运行以后a=23h51单片机也可以使用外部ram,读写外部ram的指令:
其中dptr是一个16位的数据地址指针,可以进行间接寻址,用于外部ram的寻址。
51单片机内的各类寄存器中值的传送,都可以通过mov指令实现。
在以上所介绍的语句中用到的“a”是51单片机的累加器,它是使用 频繁的寄存器,单片机绝大部分操作均需通过a。
②堆栈指令
堆栈,就象是一个手枪的子弹夹,而我们准备存放的数据,每一个字节就好比是一发子弹,我们把数据一个一个地压入堆栈,等到取数据时, 后一个被存入的字节会被 先取出。
往堆栈内存人数据的指令称为压栈指令,格式如下:
则运行结果如下图所示:
取出堆栈数据的指令称为弹出指令,格式如下:
若我们接着上面执行以下语句:
则运行结果:a=12h、23h=ooh、ro=11h,你可以看到运行以后,ro和a的值进行了交换。
③累加器传送指令
这个指令的作用就是交换累加器a和存储单元中的内容,它有如下三种使用情况,我们先假设:内部ram的20h单元内容为33h,累加器a的值为22h,r0的值为20h。执行指令:
运行以后,a内的值变为20h,ro的值变为22h。
若没有执行上面这条指令,而执行
则运行以后,a的值变为33h,20h的值变为22h若没有执行上述指令,而执行
那么运行以后,a的值为33h,20h的值为22h
这个指令是将ri间址单元内容的低4位与累加器内容的低4位互换,高4位不变。设ro的值为20h,ram的20h单元内容为75h,a的值为36h,执行:xchda,@ro运行以后20h单元的值变为76h,a的值变为35h
本指令实现累加器a的高、低4位内容互换。若a的值为36h,运行后a的值变为63h。
【看看这篇文章在百度的收录情况】
相关文章
- 上一篇: 如何设计单片机程序-把单片机当作黑匣子
- 下一篇: MCS-51单片机算术运算类指令