首页 理论教育汇编语言和单片机内部存储器结构分析

汇编语言和单片机内部存储器结构分析

【摘要】:4)助记符语言:由助记符指令形成的程序语言,又称汇编语言。2)操作码:规定了指令将要干什么,必不可少。2)功能3要素:机器码、字节数、机器周期。这是由于其复杂的存储器结构造成的。2)传送指令中的内部存储器单元如图4-2所示。3)由图4-2可以看出单片机内部RAM非常复杂。控制转移指令SJMP、AJMP、LJMP指令的功能基本相同,但其长度却不相同,见表4-2。

(1)Keil C软件的使用方法

1)Keil C软件的安装及开发环境的设置;

2)编译、连接的方法;

3)调试命令、在线汇编及断点设置;

4)利用输出窗口(Output Windows)、观察窗口(Watch&Call Stack Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)、串行窗口(Serial Window)等调试工具进行调试;

(2)指令的基本概念

1)机器指令:用二进制数0、1表示的命令代码,常以十六进制表示。

2)机器语言:由机器指令描述的程序语言。

3)助记符指令:用字母和十六进制数代替机器指令形成的符号指令。

4)助记符语言:由助记符指令形成的程序语言,又称汇编语言。

(3)MCS-51单片机汇编语言指令格式

指令格式如下:

[标号:]操作码[操作数(目的操作数,源操作数)][;注释]

其中:

1)标号:称符号地址,代表该指令第1字节所在的地址,可有可无。

2)操作码:规定了指令将要干什么,必不可少。

3)操作数:表示参与运算的数或数的地址,可有可无。

4)注释:必须以“;”开始,可有可无。

(4)指令组成4要素和功能3要素

1)组成4要素:标号、操作码、操作数、注释。

2)功能3要素:机器码、字节数、机器周期。

(5)操作数

操作数按硬件物理单元地址可分为立即数、寄存器、存储单元RAM(寄存器除外)/ROM、位、I/O接口

(6)数据传送指令

1)传送指令数量繁多。这是由于其复杂的存储器结构造成的。存储器主要分为内RAM、ROM和外RAM、ROM,如图4-1所示。要想学好这部分内容,就要将软件和硬件结合起来理解。

978-7-111-49736-3-Chapter04-1.jpg

图4-1 存储单元的传送指令

①程序运行时内/外ROM同一地址单元只有一个起作用,因此内部程序存储器和外部程序存储器传送指令不像内部数据存储器和外部数据存储器分开用MOV和MOVX传送,而统一用MOVC指令传送。

②由于数据存储器的同一地址能同时指向内部或外部两个RAM单元,因此内部RAM和外部RAM的传送指令不同,分别为MOV和MOVX。(www.chuimin.cn)

③片外RAM或I/O芯片、程序存储器要和片内RAM之间传递数据必须通过A。

④片外RAM单元与片外RAM单元之间、地址不同的两个程序存储器单元之间、片外RAM单元与程序存储器单元之间,不能直接交换数据。

⑤数据传送指令不影响标志位C、AC和OV。POP PSW或MOV PSW,#data可能使某些标志位发生变化。

⑥源操作数寻址方式可分为寄存器寻址、寄存器间址、直接寻址、立即寻址和寄存器变址。目的操作数寻址方式可分为寄存器寻址、寄存器间址和直接寻址。

2)传送指令中的内部存储器单元如图4-2所示。由图4-2可见,以A、direct、@Ri、Rn、#data为顶点组成了五边形边边俱在,而由它们组成的内五角星形缺少Rn和@Ri之间的连接,因此:

①除Rn和@Ri外,内部单元之间可以传送数据。

②仅#data为单向传送数据。

③仅direct能自身传递数据。

④#data指向的数据和direct指向的地址在程序运行中不能改变。而Rn和@Ri在程序运行中通过指令能够改变,因此它们的使用非常灵活,在某些程序(如数据串操作)中应用较多。

⑤仅DPTR是16位的,其余都是8位的。DPTR是对外部存储器访问时的指针(注意体会软件依赖硬件,DPTR是由硬件存储器寻址需要而产生的)。PC也是16位的,但不能用MOV指令访问。

3)由图4-2可以看出单片机内部RAM非常复杂。结构复杂必使使用简单。#data、direct、Rn、@Ri身兼不同属性,见表4-1。程序设计中数据块在存储器中的移动非常频繁,因此数据和地址在程序运行中具有可变的属性显得非常重要,否则循环程序实现的数据块传递将不得不用固定地址和数据的指令重复数十遍才能完成。

978-7-111-49736-3-Chapter04-2.jpg

图4-2 传送指令中的内部存储器单元

表4-1 寻址方式总结

978-7-111-49736-3-Chapter04-3.jpg

(7)算术运算类指令

注意算术运算类指令对PSW的影响。

(8)逻辑操作与移位指令

对于逻辑操作与移位指令,如果direct是51系列单片机的某个并行口P0~P3(这里的端口是指并行口中具有端口地址的锁存器或寄存器,下同),则指令将以“读→修改→写”模式完成逻辑运算

(9)控制转移指令

SJMP、AJMP、LJMP指令的功能基本相同,但其长度却不相同,见表4-2。同样,ACALL和LCALL指令的功能基本相同,但其长度也不相同,见表4-3。也许读者会想:有LJMP、LCALL这两条指令不就足够了吗?这很可能是计算机发展初期速度不够快,内存很贵,因此程序员编程时尽量选用字节数较少、实时性高的指令。如今,计算机的速度越来越快,尽管上述指令功能有些“重叠”,但它们像“化石”一样,仍保留在计算机语言中,也算是计算机硬件发展的历史痕迹吧!

表4-2 SJMP、AJMP、LJMP长度和周期的比较

978-7-111-49736-3-Chapter04-4.jpg

表4-3 ACALL、LCALL长度和周期的比较

978-7-111-49736-3-Chapter04-5.jpg

(10)位操作指令

51系列单片机中特有布尔处理器,通过51系列单片机的位操作指令进行逻辑设计,可把逻辑表达式直接变换成软件执行,方法简便,免去了过多的数据往返传送、指令屏蔽,大大简化了编程,节省存储器空间,加快了处理速度,还可实现复杂的组合逻辑处理功能。所有这些,特别适合于某些数据采集、实时测控等应用系统。