汇编语言 -精简版.

上传人:我** 文档编号:117874200 上传时间:2019-12-11 格式:PPT 页数:37 大小:1.42MB
返回 下载 相关 举报
汇编语言 -精简版._第1页
第1页 / 共37页
汇编语言 -精简版._第2页
第2页 / 共37页
汇编语言 -精简版._第3页
第3页 / 共37页
汇编语言 -精简版._第4页
第4页 / 共37页
汇编语言 -精简版._第5页
第5页 / 共37页
点击查看更多>>
资源描述

《汇编语言 -精简版.》由会员分享,可在线阅读,更多相关《汇编语言 -精简版.(37页珍藏版)》请在金锄头文库上搜索。

1、汇编指令系统 目录 1、汇编语言简介 2、指令的字节数 3、单片机的寻址方式 1、汇编语言简介 51单片机的程序编写可以有汇编语言 和相应的C语言,本章主要通过汇编指令介 绍MCS-51的指令系统。 汇编语言指令格式由以下几个部分组成: 标号: 操作码 目的操作数 ,源操作数 ;注 释 MAIN: ADD A ,#10H ; (A)(A)+10H 方括号 表示该项是可选项,表示有的指令没有这 项。 标号是用户设定的符号,它实际代表该指令所在的地 址。 标号必须以字母开头,其后跟18个字母或数字,并以“ :”结尾。 操作码是用英文缩写的指令功能助记符。 它确定了本条指令完成什么样的操作功能。如:

2、ADD表 示加法操作。 任何一条指令都必须有助记符。 目的操作数提供操作的对象,并指出一个目标 地址,表示操作结果存放单元的地址;它与操作 码之间必须以一个或几个空格分隔。 如上例中A表示操作对象是累加器A的内容,并指 出操作结果又回送A存放。 源操作数指出的是一个源地址(或立即数), 表示操作的对象或操作数来自何处。它与目的操 作数之间要用“,”隔开。 注释部分是用户对该条指令或该段程序功能的 说明。它以分号“;”开头,可以用中文、英文或某 些符号来表示。 2、指令的字节数 在8051单片机中,对于不同的指令,指令 的字节数不相同。8051单片机有单字节, 双字节或三字节指令。 通过上一节的

3、学习,我们知道一条指令通 常由两部分组成:操作码和操作数。 操作码用来规定这条指令完成什么操作。 操作数则表示这条指令所完成的操作对象 ,即是对谁进行操作。 指令的字节数分类与这两部分密切相关。 2.1、 单字节指令:指令只有一个字节,操 作码和操作数同在一个字节中。在80C51 系列的指令系统中,共有49条单字节指令 。 (1)单字节指令中既包含操作码信息,也 包含操作数信息。 例如数据指针加1指令:INC DPTR,由于 操作的内容和对象都很明确,故不必再加 操作数字节。 (2)用一个字节中的几位来表示操作数或 操作数所在的位置。 如 MOV A,Rn 指令机器码为单字节 rrr可表示为0

4、00111,分别代表R0R7 11101rrr 2.2、 双字节指令:其中一个字节为操作码 ,另一个字节是操作数。 例如 把8位二进制数传送到累加器A的指令 : MOV A, #data 其中#data表示8位二进制数,也叫立即数 ,这就是双节指令。 在80C51系列的指令系统中,共有45条双 字节指令。 2.3、三字节指令则是一个字节的操作码, 两个字节的操作数。操作数可以是数据, 也可以是地址。如: MOV DPTR, #1234H ANL direct, #data 8051单片机共有17条三字节指令。 小结:如何判断指令的字节数 1.指令中既不包含直接地址,也不包含立 即数,那么这样的

5、指令为单字节指令; 2.指令中包含有直接地址或立即数的,那 么这样的指令为双字节指令; 3.指令中包含有直接地址又包含立即数的 ,那么这样的指令为三字节指令。 3、单片机的寻址方式 复习硬件知识: 51单片机的数据存储区 不同存储区的数据,对其进行调用、修改的路径是不 同的。 寻址方式就是通过确定操作数据所在的地 址把操作数据提取出来的方法。 本节通过寻址方式的讲解与MedWin软件 仿真调试相结合,帮助同学们学习如何准 确的调用不同存储区的内容。 在8051单片机中,有7种寻址方式: 1直接寻址 2立即寻址 3寄存器寻址 4寄存器间接寻址 5变址寻址 6相对寻址 7位寻址 1、直接寻址: 在

6、指令中直接给出操作数据单元的地址。 适用数据区: 8051单片机中,用直接寻址方式可以访问 内部数据RAM区中00H-7FH及所有的特殊 功能寄存器。 示例: MOV A, 30H ;RAM区 MOV A,TH0 ;特殊功能寄存器 MOV A,8CH MedWin软件仿真调试:MOV A, 30H 执行指令: MOV A, 30H 执行前:累加器A 初始值为“00”。 执行后:累加器A的内容 变为30H地址里的内容“33”。 调试寻址程序流程:明确程序中涉及的 数据区域,执行指令,观察数据变化。 2、立即寻址 若指令的操作数是一个8位或16位数,就称 为立即寻址,指令中的操作数称为立即操 作数

7、。 在8051单片机中采用“”号来表示后面的 是立即数而不是直接地址。 示例: MOV A, #30H MOV DPTR, #2000H 比较: MOV A, #30H;立即寻址 MOV A, 30H ;直接寻址 执行指令: MOV A, #30H 3、寄存器寻址 指定寄存器的内容作为操作数据,在指令 的助记符中直接以寄存器的名字来表示操 作数据的位置。 寄存器寻址方式的寻址范围包括: (1)通用寄存器R0-R7 。 (2)部分特殊功能寄存器。例如累加器 ACC、B寄存器对以及数据指针DPTR。 示例: MOV A, R0 比较直接寻址与寄存器寻址 1、R0-R7对应的存储空间为 片内RAM的

8、00H-07H; 2、部分特殊功能寄存器。 方便编程及满足某些指令格式要求 MOV A,R0 MOV A,00H;执行结果相同 MOVX A,R0 MOVX A,00H;报错 4、寄存器间接寻址 若以寄存器的名称间接给出操作数据的地 址,则称为寄存器间接寻址。 在这种寻址方式下,指令中工作寄存器的 内容不是操作数据,而是操作数据的地址 。 通常用工作寄存器R0, R1或数据指针寄存 器DPTR来间接寻址,在寄存器名称前面加 一个符号来表示寄存器间接寻址。 示例1: MOV 30H,#33H MOV R0,#30H MOV A, R0 该指令执行之前R0寄存器的内容30H是操 作数据的地址,内部

9、RAM区中地址为30H 单元的内容33H才是操作数据,执行后, 累加器A中的内容变为33H。 示例2: 利用寄存器间接寻址可以访问 片外数据存储区 MOV dptr,#4000h MOVX a,dptr ;xdata区 MOV r1,#20h MOVX a,r1 ;pdata区 5、变址寻址 以某个寄存器的内容为基本地址,然后在 这个基址上加以地址的偏移量,才是真正 的操作数据地址。 用于访问程序存储区 采用数据指针DPTR或程序计数器指针PC 的内容为基本地址,地址偏移量则是累加 器A中的内容,将基址与偏移量相加,即以 DPTR或者PC的内容与A的内容之和作为 实际的操作数地址。 示例: 查

10、表程序,当XX为0-9的任一数时,r0的值 为表tab中的对应值。 mov dptr,#tab mov a,#XX movc a,a+dptr mov r0,a tab: db 10,11,12,13,14,15,16,17,18,19 6、相对寻址 在指令中给出的操作数为程序转移的偏移 量。 在指令中以rel表示相对偏移量,rel为一个 带符号的常数,可以为正数也可以为负数 ,若rel值为负数,则应用补码表示。 一般格式: SJMP rel 目的地址源地址指令字节数rel 示例: SJMP 54H 假设该指令所在的源地址为2000H, rel的值 为54H,则转移后的目的地址为: 2000H

11、+02+54H= 2056H. 7、位寻址 8051有位处理功能,可以对数据位进行操 作,因此,就有相应的位寻址方式。 位寻址的寻址范围: 1.片内RAM中的位寻址区 片内RAM中的单元地址20H2FH,共16 个单元128位,为位寻址区,位地址是00H 7FH。对这128个位的寻址使用直接位地 址表示。 示例: MOV C,2BH指令的功能是把位寻址区的 2BH位状态送累加位C。 2.可位寻址的特殊功能寄存器位 可供位寻址的特殊功能寄存器共有11个, 有寻址位83位。 示例: 如TCON定时器/计数器控制寄存器、IE中 断允许控制寄存器 课后思考题:总结不同存储区采用何种方式访问? 符号地址

12、功能介绍绍 B F0HB寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H串行口锁存器 SCON 98H串行口控制寄存器 P1 90HP1口锁存器 TH1 8DH定时器/计数器1(高8位) TH0 8CH 定时器/计数器1(低8位) TL1 8BH 定时器/计数器0(高8位) TL0 8AH 定时器/计数器0(低8位) TMOD 89H定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPH 83H 数据地址指针(高8位) DPL 82H 数据地址指针(低8位) SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H电源控制寄存器

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

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

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