51\52单片机汇编学习笔记 写在前面: 本文适合阅读ppt是参考。笔记参考书籍为《单片机中级教程-原理及应用》,参考ppt为三明学院机电工程学院使用ppt(文章结尾提供下载地址)。笔记内容只有操作指令解析。前面多为名词解释。在学校ppt时可以参考。后面部分为部门重点及难点。有不足,欢迎补充及讨论。指令只是很少的一部分,其余部分可以参考51汇编指令查询(文章结尾提供下载地址),建议结合使用。推荐使用crl+f查询本文中的名称。文章结尾提供部分特殊寄存器介绍图片,可以参考。 寄存器间接寻址:寄存器中放的是地址,通过间接寻址寄存器管理地址所指单元,在51\52单片机中叫Ri 有R0和R1两个; Ri: 51\52单片机中叫Ri 有R0和R1两个。用于存储间接地址。 Rn: 当前选定的寄存器区中的8个工作寄存器R0~R7,即n=0~7。,控制寄存器的选择由PSW.3,PSW.4控制。 PSW.3=0,PSW.4=0,用的就是组0;PSW.3=1,PSW.4=0,用的就是组1,依次下去。 有四组,用于存储立即数 存储器配置(片内RAM): 89C51片内RAM 128字节(00H—7FH) 89C52片内RAM 256字节(00H—0FFH) 外部数据存储器: 就是片内以外的RAM SP: 指的是堆栈指针寄存器Stack Pointer,指示堆栈的栈顶地址,定位要入栈或出栈的数据的存放位置。 DPTR(数据指针): 是一个16位的特殊功能寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示,DPTR既可以作为一个16位的寄存器来处理,也可以作为两个独立的8位寄存器来使用。主要功能是存放16位地址,作为片外RAM寻址用的地址寄存器(间接寻址),故称数据指针。 程序存储器: 用于保存应用程序代码,同时还可以用于保存程序执行时用到的数据。通常是只读储存器,因为单片机应用系统大多数是专用系统,一旦研制成功,其软件也就定性,程序固化到只读存储器,用只读存储器作为程序存储器,掉电以后程序不会丢失从而提高系统的可靠性;(具体工作过程可以看ppt第一页单片机的工作过程)
在51单片机中访问特殊功能寄存器SFR只能采用直接寻址方式的原因:SFR分布在80H~0FFH范围内,而52系列单片机有256字节的片内RAM,其中的80H~0FFH的RAM与SFR所占地址重叠。 于是规定: 80H~0FFH范围内的RAM只能用寄存器间接寻址方式,而SFR只能用直接寻址方式。从而解决了地址冲突的问题。例如: é MOV A, 90H 等效于 MOV A, P1 属直接寻址 éMOV A, @R0 ;(事先知(R0) = #90H ) 执行的操作:A ←(90H) 属寄存器间接寻址, é随意写的指令如:MOV A, 85H 则是非法的!
位寻址 指令中直接给出了操作数所在的位地址。 例: CLR P1.0 ;(P1.0) ← 0 SETB ACC.7 ;(ACC.7)← 1 CPL C ;( C )← NOT( C ) 注意: 1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0, ACC.7等, 有的位地址则“不太明确”,如: [MOV A,17H ; (A)←(17H),17H是字节地址] MOV ACC.0,17H ;(ACC.0)←(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位 片内RAM中有128个位可按位寻址的位,位地址:00H—7FH分布在:20H—2FH单元; 另外,在SFR中还有92个位可按位寻址 既:当进行位寻址时是将22H中的单元进行位排序。然后将其位中的数值进行管理。体会上述例子(ppt第二讲14页)。
堆栈操作:
堆栈区由特殊功能寄存器堆栈指针SP 管理 堆栈区可以安排在 RAM区任意位置,一般不安排在工作寄存器区和可按位寻址的RAM区,而是放在RAM区的靠后的位置 堆栈总是指向栈顶 通常PUSH与POP两条指令成对使用 PUSH:将数据压入SP指的地址。指令执行后SP+1; POP:将sp指的地址数据取出。指令执行后SP+1; 特殊: POP SP;先执行SP-1,然后将SP指向地址的数据赋给SP
下载地址: http://pan.baidu.com/share/link?shareid=433255&uk=1746528470 |