单片机论坛—独特的51教程之三上.pdfVIP

  • 4
  • 0
  • 约7.22千字
  • 约 8页
  • 2018-05-30 发布于广东
  • 举报
不一样的51教程 之三 指令系统 与 寻址方式 按照顺序,今天该到说 指令系统 的时候了,要说 指令系统 就必须说 寻址方式,否则就等于没说。今天说的内容,对于你点亮LED,那就是临门一 脚了。 这一篇文章,较少个人原创,多多少少来自各种资料的融合,只是按照我 自己的方式和顺序讲,看的时候你可以参考若干份一般51教程看,这里我会在 附件里上传一份我随手百度到的 这一部分 的资料,以供参考。 首先解释一个概念,什么叫 寻址方式? 寻址方式就是说,CPU在ROM或者RAM的不同存储区域读写数据以及单片 机内部存储器不同位置之间交换数据的方式。(个人理解) 这里简单说一下 51单片机的 指令系统 的基本情况。 51单片机总共有111条指令,它们的集合就叫 指令系统。别看它有111 条,也千万不要想着去背,更加不要去背程序千万不要! 按照基本的功能划分,我们一般将它划分成五大类。 这五大类分别是: 数据传送类指令 29条 ——这一大类是重点,因为下边的所有指 令,其实都隐含了数据传送作为第一步 算术运算类指令 24条 逻辑运算及移位类指令 24条 控制转移类指令 17条 位操作指令 17条 至于后四大类,如它名字所言。其中我想需要解释的是 第五类,位操作, 考虑到一部分读者未必熟悉数字电路。 前边我们说了,二进制数,一个位只有0和1 两个状态,当我们要计数更多 的时候,就要用多个位组合表示,这与十进制一样,个位就像我们的两只手, 撑死只能到10,两个位了就可以去到99 我们也说了,二进制位除了表示数目以外,很大程度上它其实是表达一系列 二进制状态——比如我们前面说的 红绿灯。 那么有时候,如果我们单单只要操作某些位,那我们就可以不整个二进制数 一起运算,而是把它拆成一个一个的位去操作,这个东西很多时候很方便。我 先举一个简单例子。 首先我假设你懂的 逻辑运算符 与 或 非(假如你不懂,请百度,解释这 个东西太费劲了。) 现在我们有一个二进制数0x51),它代表的意思是,8个人 里,凡是0就是女士,凡是1就是男士,那么,这8个位我们可以想象是8个 人站成一排。现在我们要判断某个位置是男士还是女士,我们该怎么做呢? 比如我要判断第五位是男士?那我就应该看 xx?x xxxx,?表示我们要判 断的第五位,我们的判断方法是,用 0010 0000和它去 位与 (请注意 位与 与 普通逻辑与 的差别——比方说,前面说的0x51和这个 0x20,如果是逻辑与,因为两个都非0,所以结果是1,但如果是位与,位与就 是说对应的位上的0或者1依次与,这里有8次与操作,于是,结果就是0000 0000). 这里简单提一下,位操作的好处,它可以保留或者去除,判断某一些特定 位的数值,而在单片机这种RAM紧张的系统中,我们经常用一个位去表示某个 状态,而不如PC程序,直接用一个数去表示。具体我们下边讲。 另外三类:控制转移指令,它的功能其实与一般高级编程语言里的条件判 断结构 if很接近。 而 算术运算 和 逻辑运算,如名。 我们重点只讲 第一大类,数据传送指令,为什么呢? 我先说一个个人观点:除去对数据进行运算,单片机对数据的所有操作其 实质就是在 移动数据。所以,如果你掌握了它,那单片机已经了然在你胸中。 前边说, 讲 指令系统 就必须讲 寻址方式,这针对的就是 这 数据传送 类指令。 前边说了,寻址方式,说白了就是CPU在各个存储器的不同位置之间 读 写数据,或者CPU控制存储器中不同位置的数据传送——因为CPU是整个单片 机的 CEO,它控制了一些。 先简单说说 51系统的七种寻址方式——以下内容纯COPY: 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 基址寄存器加变址寄存器的变址寻址 位寻址 不知道为什么,我记得是七种,这里却只有

文档评论(0)

1亿VIP精品文档

相关文档