三mcs指令系统

上传人:乐*** 文档编号:117137860 上传时间:2019-11-18 格式:PPT 页数:110 大小:2.35MB
返回 下载 相关 举报
三mcs指令系统_第1页
第1页 / 共110页
三mcs指令系统_第2页
第2页 / 共110页
三mcs指令系统_第3页
第3页 / 共110页
三mcs指令系统_第4页
第4页 / 共110页
三mcs指令系统_第5页
第5页 / 共110页
点击查看更多>>
资源描述

《三mcs指令系统》由会员分享,可在线阅读,更多相关《三mcs指令系统(110页珍藏版)》请在金锄头文库上搜索。

1、电子工程学院 制作:杜西亮 1 电子工程学院 主要内容:P29-50 本章介绍MCS-51的指令系统,要想编出优秀的程 序就必须要熟练指令。 计算机语言分类简介 用于程序设计的语言基本上分为3种:机器语言、汇编语 言和高级语言。 1. 机器语言 二进制代码表示的指令、数字和符号简称为机器语言。不 易懂,难记忆,易出错。 2. 汇编语言 英文助记符表示的指令称为符号语言或汇编语言。将汇编 语言程序转换成为二进制代码表示的机器语言程序称为汇编程 序。经汇编程序“汇编(翻译)”得到的机器语言程序称为目标 程序,原来的汇编语言程序称为源程序。 2 电子工程学院 汇编语言特点: 面向机器的语言,程序设计

2、员须对MCS-51的硬件有相当 深入的了解。 助记符指令和机器指令一一对应,用汇编语言编写的程 序效率高,占用存储空间小,运行速度快,用汇编语言能编 写出最优化的程序。 能直接管理和控制硬件设备(功能部件),它能处理中 断,也能直接访问存储器及I/O接口电路。汇编语言和机器语 言都脱离不开具体机器的硬件,均是面向“机器”的语言,缺 乏通用性。 3 电子工程学院 3. 高级语言 不受具体机器的限制,使用了许多数学公式和数学计算上 的习惯用语,非常擅长于科学计算。常用的如BASIC、FORTRAN 以及C语言等。 高级语言优点:通用性强,直观、易懂、易学,可读性好 。 使用C语言(C51)、PL/

3、M语言来进行MCS-51的应用程序设 计。对于程序的空间和时间要求很高的场合,汇编语言仍是必 不可缺的。 C语言和汇编语言混合编程 在很多需要直接控制硬件的应用场合,则更是非用汇编 语言不可使用汇编语言编程,是单片机程序设计的基本功之一 4 电子工程学院 2+3 74022403 MOV A,#02H ADD A,#03H 汇编语言源程序 XXXASM 编译系统 二进制机器语言 XXXHEX XXXBIN MASM51宏汇编程序 源文件:是由指令语句、伪指令语句和宏指令语句构成的文 本文件。源文件一般应以.ASM为扩展名. sum=2+3 5 电子工程学院 4.汇编方法简介 (1) 手工汇编

4、(2) 机器汇编 返回本章首页 6 电子工程学院 (1) 手工汇编 就是先编写出汇编程序,然后对照单片机指令 表手工将汇编程序翻译成机器码,最后将机器码一 个一个地送入开发仿真器的RAM中去进行调试。 (2) 机器汇编 由于采用手工汇编稍有疏忽程序就会出错。而 采用机器汇编,在很大程度上可以避免上述麻烦。 只要通过键盘输入源程序后,其余作工作都由计算 机来进行,即查出相应的机器码,对地址进行定位 ,只要从PC机的通讯口直接传送到开发装置中去。 因此使用机器汇编大大提高了单片机开发的速度。 返回本节页 7 电子工程学院 5. 单片机汇编语言软件开发系统软件简介 (1)单片机汇编语言软件开发系统软

5、件 MASM51(美国INTEL) 南京伟福 重庆启东 南京万利 (2)单片机C51语言软件开发系统 Keil C51(美国Keil Software ) 返回本章首页 8 电子工程学院 MASM51宏汇编软件简介 返回本节页 9 电子工程学院 南京伟福仿真软件简介 返回本节页 10 电子工程学院 重庆启东仿真软件简介 返回本节页 11 电子工程学院 南京万利仿真软件简介 返回本节页 12 电子工程学院 3.1 MCS-51指令系统概述 MC5-51指令系统是一种简明易掌握、效率较高的指令系 统,共111条. 按指令的字节分类: 单字节指令49条 双字节指令45条 三字节指令17条 按指令的执

6、行时间分类: 单机器周期指令64条 双机器周期指令45条 四机器周期指令2条(乘除法指令) 按指令的功能分类: 数据传送指令:28条 算术操作指令:24条 逻辑运算指令:25条 控制转移指令:17条 位操作指令: 17条 返回本章首页 13 电子工程学院 两部分组成,即操作码和操作数。 操作码用来规定指令进行什么操作,操作数则是指令操作的 对象 有单字节指令、双字节指令、三字节不同长度的指令, 格式不同: (1)单字节指令:指令只有一个字节,操作码和操作数同 在一个字节中。 3.2 指令格式及常见符号 A. 8位编码仅编码仅 为为操作码码 如:INC A。该指令的编码为:0000 0100B,

7、其十六进制 表示为04H,累加器A隐含在操作码中。指令的功能是累加 器A的内容加1。 1. 机器指令的编码格式 14 电子工程学院 (2)双字节指令:一个字节为操作码,另一个字节是操作 数。 B. 8位编码编码 含有操作码码和寄存器编码编码 高5位为操作码,低3位为存放操作数的寄存器编码。 如:MOV A,R0 编码为1110 1000B,其十六进制表示为E8H(低3位000为寄 存器R0的编码)。功能是将当前工作寄存器R0中的数据传 送到累加器A中。 15 电子工程学院 (3)三字节指令:操作码占一个字节,操作数占二个字节 。其中操作数既可能是数据,也可能是地址。 第一字节表示操作码,第二个

8、字节表示参与操作的数据或数 据存放的地址。 如:MOV A,#50H 编码为0111 0100B,0101 0000B。其十六进制表示为 74H,50H。功能是将立即数“50H”传送到累加器A中。 指令的第一字节表示该指令的操 作码,后两个字节表示参与操作的数 据或数据存放的地址。如:MOV 20H ,#50H 编码为0111 0101B,0010 0000B, 0101 0000B。其十六进制表示为75H, 20H,50H。功能是将立即数“50H”传 送到内部RAM 的20H单元中。 16 电子工程学院 返回本章首页 2. MCS-51的汇编语言的四分段格式如下(符号指 令的格式): 标号字

9、段 操作码字段 操作数字段 注释字段 规则: (1)标号字段和操作字码段之间要有冒号“:”相隔; (2)操作码字段和操作数字段间的分界符是空格; (3)双操作数之间用逗号相隔; (4)操作数字段和注释字段之间的分界符用分号“;”相隔 。 操作码字段为必选项,其余各段为任选项。 下面是一段汇编语言程序的四分段书写格式 17 电子工程学院 标号字段 操作码字段 操作数字段 注释字段 START: MOV A, #00H ;0A MOV R1,#10 ;10R1 MOV R2,#00000011B ;3R2 LOOP: ADD A,R2 ;(A)+(R2)A DJNZ R1,LOOP;R1内容减1不

10、为零,则循环 NOP HERE: SJMP HERE 基本语法规则: (1) 标号字段 是语句所在地址的标志符号 18 电子工程学院 1)标号后边必须跟以冒号“:” 2)由1-8个ASCII字符组成 3)同一标号在一个程序中只能定义一次 4)不能使用汇编语言已经定义的符号作为标号 (2) 操作码字段 是汇编语言指令中唯一不能空缺的部分。汇编程序就 是根据这一字段来生成机器代码的。 (3) 操作数字段 通常有单操作数、双操作数和无操作数三种情况。如 果是双操作数,则操作数之间,要以逗号隔开。 (4) 注释字段 必须以分号“;”开头,换行书写,但必须注意也要 以分号“;”开头。汇编时,注释字段不会

11、产生机器代码 。 19 电子工程学院 若十六进制的操作数以字符AF中的某个开头时,则需在 它前面加一个 “0”,以便在汇编时把它和字符AF区别开来 。 2)工作寄存器和特殊功能寄存器的表示 采用工作寄存器和特殊功能寄存器的代号来表示,也可用 其地址来表示。 例如,累加器可用A(或Acc)表示。也可用0E0H来表示, 0E0H为累加器A的地址。 3)美元符号$的使用 用于表示该转移指令操作码所在的地址。例如,如下指令 : JNB F0, $ 与如下指令是等价的: HERE:JNB F0,HERE 再如: HERE:SJMP HERE 可写为: SJMP $ 20 电子工程学院 (4) 注释字段

12、必须以分号“;”开头,换行书写,但必须注意也要以 分号“;”开头。汇编时,注释字段不会产生机器代码。 21 电子工程学院 常用的缩写符号(一) 1 A :累加器 ACC 2 C :进位标志位或布尔处理中的累加器 3 AB :寄存器对 4 Rn : 当前选定寄存器组的工作寄存器R0R7 5 direct :直接地址或字节地址 6 bit :内部数据RAM或特殊功能寄存器里的直接寻址位 7 /bit :该位取反 8 #data :8位立即数 9 #data16 :16位立即数 10 addr16 :16位地址 11 addr11 :11位地址 12 rel :带符号的8位相对偏移量,范围128+1

13、27 13 :间接寻址前缀 14. Ri :寄存器间接寻址i=0,1 22 电子工程学院 常用的缩写符号(二) 15 :表示箭头左边的内容被箭头右边的内容所替代 16+ * :加减乘除 17 + :与、或、异或 18、 、 :等号,小于号,大于号,不等于号 19. (X):X中的内容 20(X):以寄存器X中的内容作地址里的内容 例: (R0)=30H (30H)=40H MOV A, R0 ;(A)=(R0)=(30H)=40H 返回本章首页 23 电子工程学院 3.3 MCS-51指令系统的寻址方式 大多数指令执行时,都需要使用操作数。所谓寻址方式就 是在指令中说明操作数所在地址的方法,M

14、CS-51采用了7种寻址 方式。 寻址方式越多,单片机功能就越强,灵活性越大,指 令系统也越复杂。 MCS-51寻址方式: 1. 寄存器寻址方式 2. 直接寻址方式 3. 寄存器间接寻址方式 4. 立即寻址 5. 基址加变址间接寻址方式 6. 相对寻址方式 7. 位寻址方式 返回本章首页 24 电子工程学院 节省运行时间 例: MOV A,00H ;2个机器周期 MOV A,R0 ;1个机器周期 如果我们选择工作寄存器组0,则R0就是RAM的00H单 元,那么这样一来,这两条指令不就没什么区别了吗? 的确,这两条指令执行的结果是完全相同的,都是将00H 单元中的内容送到A中去,但是执行的过程不

15、同,执行第一 条指令需要2个周期,而第二条则只需要1个周期,第一条指 令变成最终的目标码要两个字节(E5H 00H),而第二条则 只要一个字节(E8H)就可以了。 这么斤斤计较!不就差了一个周期吗,如果是12MHz的 晶振的话,也就1个微秒时间了,一个字节又能有多少? 不对,如果这条指令只执行一次,也许无所谓,但一条指 令如果执行上1000次,就是1毫秒,如果要执行1000000万次 ,就是1S的误差,这就很可观了,单片机做的是实时控制的 事,所以必须如此“斤斤计较”。 返回本节页 25 电子工程学院 节省书写次数 例: 要从30H单元取数: MOV A,30H 那么下一个单元的数呢? 是31

16、H单元的,怎么取呢?还是只能用MOV A,31H, 那么20个数,不是得20条指令才能写完吗?这里只有20个数 ,如果要送200个或2000个数,那岂不要写上200条或2000条 命令?这未免太笨了吧! 为什么会出现这样的状况?是因为我们只会把地址写在 指令中,所以就没办法了,如果我们不是把地址直接写在指 令中,而是把地址放在另外一个寄存器单元中,根据这个寄 存器单元中的数值决定该到哪个单元中取数据,那就可以解 决这个问题了。 MOV R7,#20 MOV R0,#30H LOOP: MOV A,R0 INC R0 DJNZ R7,LOOP 返回本节页 26 电子工程学院 27 电子工程学院 1. 寄存器寻址方式 操作数在寄存器中,指定了寄存器就能得到操作 数。在寄存器寻址方式的指令中以符号名称来表示寄 存器。 例如:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号