《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt

上传人:bao****ty 文档编号:131992673 上传时间:2020-05-11 格式:PPT 页数:70 大小:746.50KB
返回 下载 相关 举报
《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt_第1页
第1页 / 共70页
《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt_第2页
第2页 / 共70页
《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt_第3页
第3页 / 共70页
《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt_第4页
第4页 / 共70页
《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt》由会员分享,可在线阅读,更多相关《《单片机原理及应用教程》第章:MCS-单片机的指令系统.ppt(70页珍藏版)》请在金锄头文库上搜索。

1、MCS 51单片机原理及应用教程 清华大学出版社刘迎春主编 第3章MCS 51单片机的指令系统 汇编语言的指令格式及符号简介寻址方式数据传送类指令算术运算类指令逻辑运算类指令位操作类指令控制转移类指令思考练习题 3 1汇编语言的指令格式及符号简介 3 1 1指令格式 标号 操作码助记符 第一操作数 第二操作数 第三操作数 注释 例如 LOOP MOVA 50H A 50HDECR0 R0 R0 1DJNZR0 LOOP R0 1 0 则程序转移到LOOP地址 否则顺序执行END 结束 3 1 2本章中符号的定义 3 2寻址方式 MCS 51单片机有7种寻址方式 见表3 1 表3 17种寻址方式

2、的比较 3 2 1立即寻址 例如 MOVA 23H A 23H 即累加器A的内容被替换为立即数23H 图3 1MOVA 23H的执行示意图 该指令的功能是将8位的立即数23H传送到累加器A中 如图3 1所示 其中 目的操作数采用寄存器寻址 源操作数采用立即寻址 3 2 2直接寻址 直接寻址是指在指令中包含了操作数的地址 该地址直接给出了参加运算或传送的单元或位 直接寻址方式可访问三种地址空间 特殊功能寄存器SFR 该空间只能采用直接寻址 内部数据RAM的低128个字节单元 该空间还可以采用寄存器间接寻址 221个位地址空间 例如 MOVA 40H 把40H单元的内容送到累加器中 即 A 40H

3、 图3 2MOVA 40H的执行示意图 3 2 3寄存器寻址 寄存器寻址是指定某一可寻址的寄存器的内容为操作数 例如 MOVA R0 A R0 该指令的功能是将R0中的数据传送到累加器A中 源操作数与目的操作数都采用了寄存器寻址 在MCS 51单片机中 能够用来间接寻址的寄存器有 用户所选定的工作寄存器组的R0 R1 堆栈指针SP和16位的数据指针DPTR 内部数据RAM的寄存器间接寻址采用寄存器R0 R1 外部数据RAM的寄存器间接寻址有两种形式 一是采用R0 R1作间址寄存器 这时R0或R1提供低8位地址 而高8位地址则由P2端口提供 二是采用16位的DPTR作间址寄存器 3 2 4寄存器

4、间接寻址 例如 设R0的内容为60H 且 60H 10H 即60H地址单元中的内容为10H 则语句MOVA R0的执行过程如图3 3所示 执行后 A 10H 即累加器A的内容成为10H 图3 3MOVA R0的执行示意图 又如 MOVXA R0 A R0 用R0间接寻址的单元中的内容替换A的 内容 MOVXA DPTR A DPTR 用DPTR间接寻址的单元中的内容替换 A的内容 3 2 5变址寻址 这种寻址方式是以数据指针DPTR或程序计数器PC作为基址寄存器 以累加器A作为偏移量寄存器 将一个基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址 例如 MOVCA A DPTR设 A 10

5、H DPTR 1000H 程序存储器的 1010H 45H 则上面程序语句的功能是将A的内容与DPTR的内容相加形成操作数地址 1010H 把该地址中的数据传送到累加器A 即 A A DPTR 结果 A 45H 图3 4MOVCA A DPTR的执行示意图 相对寻址是把指令中给定的地址偏移量rel与程序计数器PC的当前值 读出该双字节或三字节的跳转指令后 PC指向的下条指令的地址 相加 得到真正的程序转移地址 例如 JC80H若C 0 则PC值不变 若C 1 则以当前PC值为基地址 加上80H得到新的PC值 设该转移指令存放在1005H单元 取出操作码后PC指向1006H单元 取出偏移量后PC

6、指向1007H单元 所以计算偏移量时PC当前地址为1007H 已经为转移指令首地址加2 这里的偏移量以补码给出 所以80H代表着 80H 补码运算后 就形成跳转地址0F87H 其过程如图3 5所示 3 2 6相对寻址 3 2 6相对寻址 图3 5JC80H的执行示意图 3 2 7位寻址 MCS 51单片机可对片内RAM的两个区域进行位寻址 一个是20H 2FH单元的128位 另一个是特殊功能寄存器的93位 在寻址时 同一个位地址可以有多种标识方式 读者可参看后面3 6节 位操作指令 的相关内容 3 3 1通用传送指令 格式 MOV目的操作数 源操作数功能 把第二操作数指定的字节内容传送到第一操

7、作数指定的单元中 不影响源操作数内容 不影响别的寄存器和标志 1 以累加器A为目的操作数的传送类指令 3 3数据传送类指令 指令助记符及功能说明如下 例1若 50H 10H 则执行指令MOVA 50H之后 A 10H 例2若 R0 20H 20H 39H 则执行指令MOVA R0后 A 39H 例3若 R5 55H 则执行指令MOVA R5后 A 55H 2 以Rn为目的操作数的传送类指令 例1若 A 20H 则执行指令MOVR3 A后 R3 20H 例2若 30H 01H 则执行指令MOVR7 30H后 R7 01H 指令助记符及功能说明如下 例1若 30H 20H R0 30H 则执行指令

8、MOV90H R0的结果为 90H 20H 例2若例1中的条件不变 而执行指令MOVP1 R0 则 P1 20H 3 以直接地址directX为目的操作数的传送类指令 指令助记符及功能说明如下 例1若 R0 50H 50H 20H A 10H 则执行指令 MOV R0 A 后 50H单元的内容由原来的20H变为10H 4 以寄存器间接地址 Ri为目的操作数的传送类指令 指令助记符及功能说明如下 5 16位目标地址传送指令 这条指令的功能是 把16位立即数送入DPTR中 而16位的数据指针DPTR由DPH与DPL组成 该指令执行后 16位立即数的高8位送入DPH中 低8位送入DPL中 该指令的执

9、行 不影响程序状态寄存器PSW 指令助记符及功能说明如下 3 3 2外部数据存储器 或I O口 与累加器A传送指令 例1设 P2 20H 现将A中数据存储到20FFH单元中去 可用以下程序实现 MOVR1 0FFH R1 0FFHMOVX R1 A 20FFH A 也可采用下述程序实现 MOVDPTR 20FFH DPTR 20FFHMOVX DPTR A DPTR A 即 20FFH A 指令助记符与功能说明如下 3 3 2外部数据存储器 或I O口 与累加器A传送指令 例2将外部数据存储器7FF0H单元中的数据取出 存放到外部数据存储器2000H单元中去 MOVDPTR 7FF0HMOVX

10、A DPTRMOVDPTR 2000HMOVX DPTR A 例1在外部程序存储器2000H单元开始存放了数字0 9的共阴极数码管的16进制数的字形代码3FH 06H 6FH 要求根据A中的值 0 9 来查找该数字所对应的代码以便显示 若用PC作基址寄存器 则需要在MOVCA A PC指令前用一加法指令对地址进行调整 ADDA dataMOVCA A PC 3 3 3程序存储器向累加器A传送数据指令 指令助记符与功能说明如下 1 字节交换指令 例1设 R1 30H 30H 45H A 7FH 则执行指令 XCHA R1结果 A 45H 而 30H 7FH 从而实现了累加器A与内部数据存储器RA

11、M中30H单元的数据交换 3 3 4数据交换指令 指令助记符与功能说明如下 2 半字节交换指令 例1设 30H 6FH R0 30H A 0F6H 则执行指令 XCHDA Ri结果 A 0FFH 30H 66H 数据交换指令除了影响始终跟踪A中数据奇偶性的P标志外 对PSW中其他标志位均无影响 指令助记符与功能说明如下 3 累加器A中高四位与低四位交换指令 SWAPA该指令所执行的操作是累加器A中的高4位与低4位的内容互换 其结果仍存放在累加器A中 例1设 A 0A5H 10100101B 则执行指令 SWAPA结果 A 5AH 01011010B 指令SWAP交换了A中高 低半字节 3 0和

12、7 4 结果不影响标志寄存器PSW 3 3 5堆栈操作指令 堆栈操作指令只有2条 即 压入 PUSH 和弹出 POP 压入指令 PUSHdirect SP SP 1 SP direct 弹出指令 POPdirect SP direct SP SP 1 例1PUSHA 保护A中数据PUSHPSW 保护标志寄存器中数据 执行服务程序POPPSW 恢复标志寄存器中数据POPA 恢复A中数据 例2PUSHAPUSHPSW POPAPOPPSW 例3PUSHDPHPUSHDPL POPDPLPOPDPH 3 4 1加减运算指令 1 加法指令 这类指令所完成的操作是把源操作数 立即数 直接地址单元内容 间

13、接地址单元内容 工作寄存器内容 与累加器A的内容相加 将结果保存在累加器A中 3 4算术运算类指令 指令助记符与功能说明如下 例1执行指令 MOVA 0A9HADDA 0B8H对程序状态寄存器的影响如图3 6所示 运算结果 A 61H CY 1 AC 1 OV 1 P 1 PSW 0C5H 例28位数加法程序片断1 MOVA 23HADDA 5AH 运算结果 A 7DH CY 0 OV 0 AC 0 P 0 PSW 00H 例38位数加法程序片断2 MOVA 0ABHADDA 9AH 运算结果 A 45H CY 1 OV 1 AC 1 P 1 PSW 0C5H 带进位加法指令与前述加法指令的区

14、别仅为考虑进位位 其他与加法指令相同 2 带进位加法指令 指令助记符与功能说明如下 例3利用ADDC指令可以进行多字节的加法运算 设有两个16位数相加 被加数的高8位放在41H 低8位放在40H 加数的高8位放在43H 低8位放在42H 和的低8位存放在50H 高8位存放在51H 进位位存放在52H 可编程序如下 例1设 A 0AAH R0 55H C 1 则执行指令 ADDCA R0运算结果 A 00000000B AC 1 CY 1 OV 1 例2设 A 35H 40H 21H C 0 则执行指令 ADDCA 40H运算结果 A 56H AC 0 CY 0 OV 0 这与执行指令 ADDA

15、 40H 的结果是一样的 SHJ MOVA 40H A 被加数低8位ADDA 42H 与加数低8位相加MOV50H A 和的低8位存入50HMOVA 41H A 被加数高8位ADDCA 43H 被加数高8位与加数高8位以及低位来的进位相加MOV51H A 和的高8位存入51H单元MOVA 00H A 00HADDCA 00H A A 00H 高8位来的进位MOV52H A 进位位C内容存入52H单元 3 带借位减指令 指令助记符与功能说明如下 例1设 40H 0BAH 41H 98H 试编写40H内容减去41H内容后 结果再存入40H单元的程序 MOVA 40H A 40H CLRC 进位位C

16、清0SUBBA 41H A A 41H C MOV40H A 40H A 执行以上程序后 40H 22H CY 0 OV 0 如果参与运算的两数为无符号数 则其溢出与否与OV状态无关 而是靠CY是否有借位来判断 OV仅仅表示带符号数运算时是否溢出 例2设有两个16位数相减 被减数的高8位放在41H 低8位放在40H 减数高8位放在43H 低8位放在42H 差的低8位存放在50H 高8位存放在51H 借位位存放在52H 可编程序如下 SHJIAN MOVA 40H A 被减数低8位CLRC C位清0SUBBA 42H 减去减数低8位MOV50H A 差的低8位存入50HMOVA 41H A 被减数高8位SUBBA 43H 被减数高8位减去减数高8位与借位MOV51H A 差的高8位存入51H单元MOVA 00H A 00HADDCA 00H A 高8位的借位位MOV52H A 借位位C内容存入52H单元 1 乘法指令 例1设 A 67H 103 B 0ADH 173 执行指令 MULAB运算结果 乘积为459BH 17819 A 9BH B 45H 另外 OV 1 CY 0 3 4 2乘

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

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

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