单片微型计算机C第7讲(机械)(1).

上传人:我** 文档编号:117886784 上传时间:2019-12-11 格式:PPT 页数:37 大小:1.11MB
返回 下载 相关 举报
单片微型计算机C第7讲(机械)(1)._第1页
第1页 / 共37页
单片微型计算机C第7讲(机械)(1)._第2页
第2页 / 共37页
单片微型计算机C第7讲(机械)(1)._第3页
第3页 / 共37页
单片微型计算机C第7讲(机械)(1)._第4页
第4页 / 共37页
单片微型计算机C第7讲(机械)(1)._第5页
第5页 / 共37页
点击查看更多>>
资源描述

《单片微型计算机C第7讲(机械)(1).》由会员分享,可在线阅读,更多相关《单片微型计算机C第7讲(机械)(1).(37页珍藏版)》请在金锄头文库上搜索。

1、1 1 1 1 1 1 上节内容回顾 寻址方式 请说明下面指令源操作数和目的操作数的寻址方式 ?MOV A,#data ?MOV Rn,direct ?MOV Ri,direct ?MOVC A,A+DPTR 2 2 2 2 2 2 第6-7讲教学目的和要求 【教学目标】通过讲述单片机的寻址方式和指令系统功能,以及 位寻址功能。掌握各种寻址方式、常用指令的功能 和使用方法及汇编语言程序设计方法。 【教学重点】MCS51单片机的寻址方式; MCS51单片机的指令系统; 【教学难点】寻址方式及指令系统。 3 3 3 3 3 3 第四章 MCS-51单片机指令系统 4 4 4 4 4 4 4.3 M

2、CS51指令系统 MCS51指令系统共有111条指令,按功能分类,可分成5类。 数据传送类指令:28条; 算术操作类指令:24条; 逻辑运算类指令:25条; 控制转移类指令:17条; 位操作类指令:17条 5 5 5 5 5 5 4.3 MCS51指令系统 MCS51指令系统共有111条指令,按功能分类,可分成5类。 数据传送类指令:28条; 算术操作类指令:24条; 逻辑运算类指令:25条; 控制转移类指令:17条; 位操作类指令:17条 6 6 6 6 6 6 4.3.1 数据传送类指令 数据传送类指令时编程时使用最频繁的一类指令 p一般不影响程序状态字寄存器PSW的状态。 p一般传送类指

3、令(MOV) p特殊传送类指令:MOVC、 MOVX、 PUSH、POP、 XCH、XCHD、 SWAP p共28条数据传送类指令 7 7 7 7 7 7 4.3.1.1 一般传送类指令 n 16位传送(仅1条) MOV DPTR,#data16; DPTR data16 【例】执行指令 MOV DPTR,#1234H 。 ( DPH )=12H,( DPL )=34H。 n 8位传送 通用格式: MOV , ; 8 8 8 8 8 8 MOV指令 以A为目的操作数 MOV A, Rn; A(Rn) direct; A(direct) Ri; A(Ri) #data; Adata 【例】若(R

4、1)= 20H,(20H)= 55H。执行指令 MOV A,R1 后,A寄存器的内容是多少? 9 9 9 9 9 9 MOV指令 以Rn为目的操作数 MOV Rn, A; Rn(A) direct; Rn(direct) #data; Rndata 【例】执行指令 MOV R6,#50H 后,(R6)= 50H 101010101010 MOV指令 以直接地址direct为目的操作数 MOV direct, A direct A Rn; direct (Rn) direct1; direct (direct1) Ri; direct (Ri) #data; direct data 【例】若(R

5、1)=50H,(50H)=18H,执行指令 MOV 40H,R1 后,40H单元内容是多少? 111111111111 MOV指令 以寄存器间接地址Ri为目的操作数 MOV Ri, A; (Ri)(A) direct; (Ri)(direct) #data; (Ri)data 【例】若(R1)=30H,(A)=20H,执行指令 MOV R1,A 后,30H单元的内容是多少。 121212121212 内部数据传送类指令小结 累加器A 寄存器间址Ri #data 立即数 直接地址direct 工作寄存器Rn 131313131313 练习 已知:(R0)=30H,试问执行如下指令,累加器A 、R

6、3、30H、31H单元中内容各是什么? MOV A, #20H MOV R3, #45H MOV R0,#46H MOV 31H, #47H 执行后,结果为:A=20H;R3=45H;(30H)=46H;(31H)=47H 141414141414 4.3.1.2特殊传送类指令 以DPTR内容为基址 读ROM中常数表项指令MOVC,亦称查表指令 ROM中可以存放程序代码,还经常存放常数表 MOVC A,A+DPTR;A (A)+(DPTR) 以PC内容为基址 MOVC A,A+PC ;A (A)+(PC) 常数表可以存放在ROM的任何位置,称为远程查表指令 。 常数表只能存放在该指令后的256

7、个单元内,称为近程 查表指令。 151515151515 举例 已知A寄存器当前内容为04H,试编写程序,以 DPTR作为基址寄存器,将片外ROM的2015H单元中 内容读出,并把数送到片内RAM的7FH单元。 MOV DPTR,#2011H MOVC A,A+DPTR MOV 7FH,A 161616161616 特殊传送指令MOVX 读片外RAM 读片外RAM及接口单元数据的指令MOVX 片外RAM中经常存放数据采集与处理的中间数据 MOVX A,DPTR ;A (DPTR) MOVX A,Ri ; A (Ri) 写片外RAM MOVX DPTR,A ;(DPTR)A MOVX Ri,A

8、; (Ri)A 171717171717 举例 判断下列指令的正误,将错误的更正。 1. MOVX A, 2000H MOV DPTR, #2000H MOVX A, DPTR 2. MOVX A, 20H MOV R0, #20H MOVX A, R0 181818181818 4.3.1.3堆栈操作指令PUSH与POP 堆栈是一片存储区,遵循“后进先出”原则,栈顶由SP指示 ,初始化时,SP=07H。8051的堆栈设在片内RAM低端的 128个单元,向上生长,即入栈时,栈顶指针增加。 数据或指令 数据或指令 栈底 SP Pushpop SP X X+1 X+2 191919191919 堆

9、栈操作指令PUSH与POP 入栈指令PUSH。 PUSH direct ;SP(SP)1,(SP)(direct) 先增加指针,以指向一个空的单元,将要数据压入堆栈 出栈指令POP。 POP direct ;(direct)(SP),SP (SP)1 先取出数据,再减指针,将单元空出 。 堆栈用于子程序调用时保护返回地址,或者用于保护子程序调 用之前的某些重要数据(即保护现场),还可以用于数据交换 。 202020202020 堆栈操作指令PUSH与POP 设(SP)=60H,(A)=30H,(B)=70H,连续执行两条指令PUSH ACC和PUSH B;再连续执行两条指令POP DPH和PO

10、P DPL 30H 70H 栈底60H 61H 62H SP PUSH ACC PUSH B POP DPH POP DPL SP SP DPH=70H DPL=30H 212121212121 4.3.1.4数据交换指令 n 包含XCH、XCHD和SWAP三条 字节交换指令XCH XCH A, Rn; (Rn)(A) direct; (A)(direct) Ri; (Ri) (A) 【例】若(R0)=80H,(A)=20H。 执行指令 XCH A,R0 后,(A)=80H,(R0)=20H。 222222222222 数据交换指令XCHD n 半字节交换指令XCHD n 指令形式:XCHD

11、A,Ri n 指令功能:将寄存器间址的RAM单元的低半字节与A的低 半字节互换,而高半字节保持不变。 【例】若(R0)30H,(30H)67H, (A)20H。 执行指令XCHD A,R0 指令后, (A)27H,(30H)60H。 232323232323 数据交换指令SWAP n 累加器高低位交换指令SWAP n 指令形式:SWAP A n 指令功能:将累加器的高低4位互换。 【例】若(A)30H,执行指令SWAP A后, (A)03H 。 242424242424 4.3.2 算术运算类指令 n 算数运算结果要影响PSW中标志位; n PSW中标志位的含义 pCY为1,无符号数(字节)加

12、减发生进位或借位 pOV为1,有符号数(字节)加减发生溢出错误 pAC为1,十进制数(BCD码)加法的结果应调整 pP为1,存于累加器A中操作结果的“1”的个数为奇数 252525252525 算术运算指令影响标志位示例 【例】有2个参与相加的机器数,一个是84H,另一 个是8DH。试分析运算过程及其对状态标志的影响。 ACC84H8DH11H 结果:CY为1;AC为1 ;OV为1 ;P为0 1 0 0 0 0 1 0 0 +1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 此时PSW的值为多少? 262626262626 4.3.2.1加法运算 n加法指令(ADD,共4条)

13、 ADD A,RndirectRi#data,源操作数为四选一。 n带进位的加法指令(ADDC,共4条) ADDC A,RndirectRi#data,源操作数为四选一 n增1指令(INC,共5条) INC ARndirectRiDPTR,五选一 不影响任何标志位。 n十进制调整指令(DA,1条) DA A 272727272727 ADD 不带进位的加法指令 n 由寄存器A与(Rn、direct、Ri、#data)中的一个 相加,结果存回寄存器A中。 【例】若有2个无符号数存于累加器A和RAM的30H 单元,即(A)=84H,(30H)=8DH,执行指令 ADD A,30H 。 8DH RA

14、M 30H 84HA 8DH 84H + 11H 11H 将同时修改PSW的内容 282828282828 加法运算结果的溢出判断 无符号数:判断无符号是否溢出时,仅需判断CY是否为1即 可。 有符号数:判断有符号运算是否产生溢出时,仅需判断OV 是否为1即可。 程序设计中,若需要对结果是否产生溢出,进行不同处理时 ,无符号数用JNC或JC,有符号数要用JNB或JB进行条件 转移。 292929292929 ADDC 带进位加法指令 l 一般应用于多字节数据的加法 ADDC A, Rn; A(Rn)+(A)+CY direct; A(direct)+(A)+CY Ri; A(Ri)+(A) +

15、CY #data; Adata+(A)+CY 【例】试把存放在R1R2 和R3R4中的两个16位数 相加,结果存于R5R6中 。 R2 R4 R1 R3+ R6R5 C MOV A,R2 ADD A,R4 MOV R6,A MOV A,R1 ADC A,R3 MOV R5,A 303030303030 DA 十进制调整指令 DA A :调整A的内容为正确的BCD码 当两个用压缩BCD表示的数进行相加时,后跟此指令,单 片机自动完成调整。 【例】在R3中有 十进制数67,在 R2中有十进制数 85,用十进制运 算, 运算的结果 放于R5中。 程序为: MOV A,R3 ADD A,R2 DA A MOV R5,A 0110 0111 1000 0101+ 1110 1100 0110 0110+ 0101 00101 对某个寄存器或某单元中的数据,并不知道用户存放的类型 是有符号数、无符号数,还是B

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

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

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