51单片机汇编学习笔记(待续)

来源:互联网 发布:淘宝返佣金 编辑:程序博客网 时间:2024/05/01 16:58

51\52单片机汇编学习笔记

写在前面:

本文适合阅读ppt是参考。笔记参考书籍为《单片机中级教程-原理及应用》,参考ppt为三明学院机电工程学院使用ppt(文章结尾提供下载地址)。笔记内容只有操作指令解析。前面多为名词解释。在学校ppt时可以参考。后面部分为部门重点及难点。有不足,欢迎补充及讨论。指令只是很少的一部分,其余部分可以参考51汇编指令查询(文章结尾提供下载地址),建议结合使用。推荐使用crl+f查询本文中的名称。文章结尾提供部分特殊寄存器介绍图片,可以参考。

寄存器间接寻址:寄存器中放的是地址,通过间接寻址寄存器管理地址所指单元,在51\52单片机中叫Ri R0R1两个

Ri

51\52单片机中叫Ri R0R1两个。用于存储间接地址

Rn

当前选定的寄存器区中的8个工作寄存器R0~R7,即n=0~7。,控制寄存器的选择由PSW.3,PSW.4控制。

PSW.3=0,PSW.4=0,用的就是组0PSW.3=1,PSW.4=0,用的就是组1依次下去

四组,用于存储立即数

存储器配置(片内RAM

89C51片内RAM 128字节(00H7FH

89C52片内RAM 256字节(00H0FFH

外部数据存储器

就是片内以外的RAM

SP

指的是堆栈指针寄存器Stack Pointer,指示堆栈的栈顶地址,定位要入栈或出栈的数据的存放位置。

DPTR数据指针):

是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。

程序存储器

用于保存应用程序代码,同时还可以用于保存程序执行时用到的数据通常是只读储存器,因为单片机应用系统大多数是专用系统,一旦研制成功,其软件也就定性,程序固化到只读存储器,用只读存储器作为程序存储器,掉电以后程序不会丢失从而提高系统的可靠性;(具体工作过程可以看ppt第一页单片机的工作过程

51单片机中访问特殊功能寄存器SFR只能采用直接寻址方式原因:SFR分布在80H0FFH范围内,而52系列单片机有256节的片内RAM,其中的80H0FFHRAMSFR所占地址重叠

于是规定: 80H0FFH范围内的RAM只能用寄存器间接寻址方式,而SFR只能用直接寻址方式。从而解决了地址冲突的问题。例如:

é MOV A, 90H 等效于 MOV  A, P1 属直接寻址               éMOV A, @R0 事先知(R0) = #90H                      执行的操作:(90H)  属寄存器间接寻址,   é随意写的指令如:MOV  A, 85H 则是非法的!

位寻址

指令中直接给出了操作数所在的位地址。

例: CLR   P1.0    (P1.0) ← 0

     SETB  ACC.7   (ACC.7)← 1

     CPL    C      ( C )← NOT( C )

注意:

 1)位地址里的数据只可能是一个 或 

 2)有的位地址十分明确,如 P1.0, ACC.7,

    有的位地址则“不太明确”,如:

    [MOV  A17H ; (A)(17H),17H是字节地址]

    MOV ACC.017H ;(ACC.0)(17H),这里ACC.0

   是位地址所以该指令中的17H22H单元的第7

片内RAM中有128个位可按位寻址的位,位地址:00H7FH分布在:20H2FH单元;

另外,在SFR中还有92个位可按位寻址

既:当进行位寻址时是将22H中的单元进行位排序。然后将其位中的数值进行管理。体会上述例子(ppt第二讲14页)。

堆栈操作

堆栈区由特殊功能寄存器堆栈指针SP 管理

堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM,而是放在RAM区的靠后的位置

堆栈总是指向栈顶

通常PUSHPOP两条指令成对使用

PUSH:将数据压入SP指的地址。指令执行后SP+1

POP:将sp指的地址数据取出。指令执行后SP+1

特殊:

POP  SP;先执行SP-1,然后将SP指向地址的数据赋给SP

下载地址:

http://pan.baidu.com/share/link?shareid=433255&uk=1746528470