![第3章指令系统_第1页](http://file4.renrendoc.com/view/2d1af2fd9d36fb18182aec861f0bf93d/2d1af2fd9d36fb18182aec861f0bf93d1.gif)
![第3章指令系统_第2页](http://file4.renrendoc.com/view/2d1af2fd9d36fb18182aec861f0bf93d/2d1af2fd9d36fb18182aec861f0bf93d2.gif)
![第3章指令系统_第3页](http://file4.renrendoc.com/view/2d1af2fd9d36fb18182aec861f0bf93d/2d1af2fd9d36fb18182aec861f0bf93d3.gif)
![第3章指令系统_第4页](http://file4.renrendoc.com/view/2d1af2fd9d36fb18182aec861f0bf93d/2d1af2fd9d36fb18182aec861f0bf93d4.gif)
![第3章指令系统_第5页](http://file4.renrendoc.com/view/2d1af2fd9d36fb18182aec861f0bf93d/2d1af2fd9d36fb18182aec861f0bf93d5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章指令系统及程序设计举例Exit§3.389C51指令系统§3.1汇编语言§3.2寻址方式§3.4程序设计举例§3.1汇编语言§3.1.1指令和程序设计语言§3.1.2指令格式BACK§3.1.1指令和程序设计语言指令:是CPU根据人的意图来执行某种操作的命令。程序设计语言:是实现人机交换信息的基本工具,分为机器语言、汇编语言和高级语言。机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。汇编语言:是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。BACK§3.1.2指令格式89C51汇编语言指令格式操作码[目的操作数][,源操作数][;注释]汇编语言指令对应的二进制代码格式单字节指令双字节指令三字节指令BACK单字节指令1、指令码中隐含着对某一种寄存器的操作如:指令“INCDPTR”的指令代码格式为:A3H=101000112、由指令中的rrr三位的不同编码指定某一寄存器如:指令“MOVA,Rn”的指令代码格式为:11101rrrBACK双字节指令用一个字节表示操作码,另一个字节表示操作数或操作数所在的地址。格式为:操作码立即数或地址BACK三字节指令一个字节操作码,两个字节操作数。格式为:操作码立即数或地址立即数或地址BACK§3.2寻址方式一、什么是寻址方式:如何找到存放操作数的地址,把操作数提取出来的方法。二、寻址方式的种类:三、寻址空间及符号注释:BACK二、寻址方式的种类:1、寄存器寻址2、直接寻址3、立即数寻址4、寄存器间接寻址5、变址寻址6、相对寻址7、位寻址BACK1、寄存器寻址寄存器寻址:由指令指出寄存器组R0~R7中的某一个或其他寄存器(A,B,DPTR等)的内容作为操作数。例如:MOVA,R0;(R0)→AMOVP1,A;(A)→P1口ADDA,R0;(A)+(R0)→ABACK2、直接寻址直接寻址方式:在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。直接寻址方式可访问片内RAM的128个单元以及所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。例如:MOVA,3AH;(3A)→AMOVA,P1;(P1口)→A或:MOVA,90H;90H是P1口的地址BACK3、立即数寻址立即数寻址:指令操作码后面紧跟的是一字节或两字节操作数,用“#”号表示,以区别直接地址。例如:MOVA,3AH;(3AH)→AMOVA,#3AH;3AH→AMOVDPTR,#2000H;2000H→DPTR;(DPH)=20H;(DPL)=00HBACK4、寄存器间接寻址
寄存器间接寻址:操作数的地址事先存放在某个寄存器中,寄存器间接寻址是把指定寄存器的内容作为地址,由该地址所指定的单元内容作为操作数。89C51规定R0或R1为间接寻址寄存器,它可寻址内部地址RAM低位的128B单元内容。还可采用DPTR作为间接寻址寄存器,寻址外部数据存储器的64KB空间。BACK例如:将片内RAM65H单元内容47H送A,可执行指令“MOVA,@R0”。其中R0内容为65H。如图所示:65H47HR0A47H数据存储器地址┋┋65H①②以指令中所指定的R0内容(65H)为指针将片内RAM65H单元内容47H送ABACK5、变址寻址(基址寄存器+变址寄存器间接寻址)变址寻址:以某个寄存器的内容为基地址,在这个基地址的基础上加上地址偏移量形成真正的操作数地址。89C51中采用DPTR或PC为基址寄存器,A的内容为地址偏移量。变址寻址只能访问程序存储器,访问范围为64KB。BACK例如:MOVCA,@A+DPTR;((A)+(DPTR))→A如图所示1EH0302HROMDPTRAA02F1H11H1EH+①②DPTR内容与A的内容之和为程序存储器地址程序存储器内容送ABACK6、相对寻址
相对寻址:是以当前的PC值加上指令中规定的偏移量rel而形成实际的转移地址。相对寻址只出现在相对转移指令中。当前的PC值是指执行完相对指令后的PC值;相对转移指令操作码所在地址称为源地址;转移后的地址称为目的地址。目的地址=源地址+相对转移指令字节数+relrel为补码表示的有符号数。BACK7、位寻址位寻址:采用位寻址方式的指令的操作数是8位二进制数中的某一位,指令中给出的是位地址。位地址在指令中用bit表示。例如:CLRbit;位地址的两种表示方法:直接使用位地址,如D3H;直接用寄存器名字加位数,如PSW.3。位寻址区域:片内RAM的20H-2FH的16个单元中的128位;字节地址能被8整除的SFR。BACK三、寻址空间及符号注释1、寻址空间:见表3-2。2、符号注释:BACK表3-2操作数寻址方式和有关空间BACK符号注释Rn(n=0-7):当前选中的工作寄存器组R0-R7。Ri(I=0,1):作为地址指针的两个工作寄存器R0,R1。#data:8位立即数。#data16:16位立即数。direct:8位片内RAM单元(包括SFR)的直接地址。addr11:11位目的地址,用于ACALL和AJMP指令中。addr16:16位目的地址。用于LCALL和LJMP指令中。rel:补码表示的8位地址偏移量。范围:-128-+127D。bit:片内RAM或SFR的直接寻址位地址。@:间接寄存器的符号。/:位操作指令中对该位先取反再参与操作,不影响原值。(×):×中的内容。((×)):×指出的地址单元中的内容。→:指令操作流程方向。BACKBACKMCS-51指令系统可分为五大类[1]数据传送指令:28条[2]算术运算指令:24条[3]逻辑运算及移位指令:25条[4]控制转移指令:17条[5]位操作指令(布尔操作):17条Back§3.3.1数据传送指令
1.以累加器A为目的操作数的指令(4条,即4种寻址方式)
2.以寄存器Rn为目的操作数的指令(3条)
3.以直接地址为目的操作数的指令(5条)
4.以间接地址为目的操作数的指令(3条)Back
5.十六位数据传送指令(1条)
6.查表指令(2条)
7.累加器A与片外RAM传送指令(4条)
8.栈操作指令(2条)
9.交换指令(4条)BackBack1.以累加器A为目的操作数的指令(4条,即4种寻址方式)例:MOVA,#30H;(A)=30HMOVA,30H;(A)=11HMOVA,@R1;(A)=11HMOVA,R1;(A)=30H
MOVA,#30H;(A)=30HMOVA,30H ;(A)=11HMOVA,@R1 ;(A)=11HMOVA,R1;(A)=30HBack
2、以寄存器Rn为目的操作数的指令(3条)Back这组指令的功能是把源操作数所指定的内容送到当前工作寄存器组R0~R7中的某个寄存器。源操作数有寄存器寻址,直接寻址和立即数寻址三种方式。如:(A)=78H,(R5)=47H,(70H)=F2H,执行指令:MOVR5,A ;(A) R5, (R5)=78HMOVR5,70H;(70H) R5, (R5)=F2HMOVR5,#A3H;A3H R5, (R5)=A3H注意,在89C51指令系统中没有“MOVRn,Rn”传送指令。Back3、以直接地址为目的操作数的指令(5条)BackBack4、以间接地址为目的操作数的指令(3条)BackBack@RidirectRn#dataACC图3-6传送指令在片内存储器的操作功能5、十六位数据传送指令(1条)这条指令的功能是把16位常数送入DPTR。DPTR由DPH和DPL组成。BackBack6、查表指令(2条)Back基地址寄存器+变址寄存器间接寻址@PC+A(程序存储器0-64K)基地址寄存器+变址寄存器间接寻址@DPTR+A(程序存储器0-64K)A寄存器图3-7程序存贮器传送(查表)例:
执行下面程序段后结果如何?MOVDPTR,#2000H;(DPTR)=2000HMOVA,#0AH;(A)=0AHMOVCA,@A+DPTR;(A)=((A)+(DPTR))=(200AH)则:(A)=(200AH)=11H例:
所以,最后结果为:(A)=02(R0)=02(PC)=1004Back7、累加器A与片外RAM传送指令(4条)Back
第2,4两条指令以DPTR为片外数据存储器16位地址指针,寻址范围达64KB。其功能是DPTR所指定的片外数据存储器与累加器A之间传送数据。 第1,3两条指令是用R0或R1作低8位地址指针,由P0口送出,寻址范围是256字节。这两条指令完成以R0或R1为地址指针的片外数据存储器与累加器A之间的传送数据。 上述四条指令的操作如图3-8所示:寄存器寄存器间接寻址
寄存器间接寻址@R1.@R0@DPTR(外RAM0-255)(外RAM0-64K)图3-8
外部数据存储器传送操作例:若:片内RAM(30H)=01H,片外RAM(30H)=02H,执行下面程序段后的结果如何。Back8、栈操作指令(2条)Back例:继续上例:Back
9、交换指令(4条)Back(1)字节变换指令
例:(2)半字节交换指令Back§3.3.2算术运算指令1、不带进位加法指令(4条)
2、带进位加法指令(4条)
3、带借位减法指令(4条)
4、乘法指令(1条)Back
5、除法指令(1条)
6、加1指令(5条)
7、减1指令(4条)
8、十进制调整指令(1条)Back1、不带进位加法指令(四条)Back例:Back2、带进位加法指令(四条)Back例:设(A)=0C3H,(R0)=0AAH, (CY)=1。
执行指令“ADDCA,R0”后的结果及标志位如何?
例:编程,将(30H),(31H)单元中的数与
(40H),(41H)单元中的数相加,结
果存于(30H),(31H)单元中。Back3、带借位减法指令(四条)Back
这组指令的功能是从累加器A中减去源操作数所指出的数及进位位CY的值,差保留在累加器A中。 由于89C51指令系统中没有不带借位的减法指令,如需要的话,可以在“SUBB”指令前用“CLRC”指令将Cy清0,这一点必须注意。例:设(A)=0C9H,(R2)=54H,Cy=1。
执行指令“SUBBA,R2”的结果如何?Back4、乘法指令(1条)该指令若乘积大于0FFH,则OV置1,否则OV清0。Cy位总是被清0。Back例:(A)=4EH,(B)=5DH,
执行指令“MULAB”后结果如何?Back5、除法指令(1条)BackBack6、加1指令(5条)Back例:若:(R1)=30H,(30H)=11H
求执行下面指令后的结果。
INC@R1;(30H)=12H
INCR1;(R1)=31HBack7、减1指令(4条)Back8、十进制调整指令(1条)Back例:设累加器A内容为:01010110B(即为56的BCD码),寄存器R3的内容为01100111B(即67的BCD码),CY内容为1。求执行下列指令后的结果。 ADDCA,R3;
DAA;Back§3.3.3逻辑操作指令
1.简单操作指令(2条)2.移位指令(4条)3.累加器半字节交换指令(1条)4.逻辑“与”指令(6条)5.逻辑“或”指令(6条)6.逻辑“异或”指令(6条)1.简单操作指令(2条)(1)累加器A清0指令(2)累加器A取反指令2.移位指令(4条)(1)累加器A循环左移指令例:(A)=69H,执行RLA后(A)=?01101001A的内容为:11010010执行指令后,A的内容:(2)累加器A循环右移指令
(3)累加器A连同进位位循环左移指令 RLCA;(4)累加器A连同进位位循环右移指令 RRCA;将(R1)=16H,(R0)=39H中的16位数逻辑左移1位分析,题目要求完成的操作为:000101100011100100101100011100100CY16392C720CLR CMOV A,R0RLC AMOV R0,AMOV A,R1RLC AMOV R1,A3.累加器半字节交换指令
4.逻辑“与”指令(6条)5.逻辑“或”指令(6条)6.逻辑“异或”指令(6条)“与”指令用于对某些位清0。“或”指令用于对某些位置1。“异或”指令用于对某些位取反。这类指令的操作均只影响标志位P。§3.3.4控制程序转移类指令1.无条件转移指令(4条)2.空操作指令(1条)3.条件转移指令(8条)4.调用和返回指令(4条)1、无条件转移指令(4条)(1)短转移指令
这条指令提供了11位地址,可在2K范围内无条件转移到由A10-A0所指出的地址单元中。因为指令只提供低11位地址,高5位为原PC11-15值,因此,转移的目标地址必须在AJMP指令后面指令的第一个字节开始的同一2K字节范围内。
(2)长转移指令(3)相对转移(短转移)指令SJMPrel;
0000rel
(相对地址)先(PC)+2→PC后(PC)+rel→PC(4)间接转移指令CLRC;清进位
RLCA;键值乘2
MOVDPTR,#JPTAB
;指向命令键跳转表首址
JMP@A+DPTR;散转入命令键入口
JPTAB:
AJMPCCS0;双字节指令
AJMPCCS1
AJMPCCS2根据累加器A的值,如A为0转移到CCS0执行,为1转移到CCS1处执行,为2转移到CCS2处执行(设三处转移地址均在同一2K空间内)。2空操作指令(1条)3条件转移指令(8条)
(1)判零转移指令(2)比较转移指令(4条)(3)循环转移指令(2条)DJNZ第一操作数,rel程序每执行一次本指令,将第一操作数的字节变量减1,并判字节变量是否为零,若不为0,则转移到目标地址,继续执行循环程序段;若为0,则结束循环程序段的执行,程序往下执行。其中,rel为相对于DJNZ指令的下一条指令的第一个字节相对偏移量,用一个带符号的8位数表示。所以,循环转移的目标地址应为DJNZ指令的下条指令地址和偏移量之和。片内RAM30H单元开始有10个字节的二进制数。编一子程序,求它们的和。将和存入20H单元中。MOV R0,#30H
CLR A
MOV R7,#10
CLR C
LOOP:
ADDC A,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三化学一轮复习 铁 金属材料
- 开学第一课-初三开学第一课
- 石棉项目风险分析和评估报告
- 医疗护理读书汇报
- 从数据中获取商业智能数据挖掘技术与管理
- 离婚孩子送养协议书
- 工地检查计划表
- 编制老师辞职报告(锦集9篇)
- 2024年印铁油墨合作协议书
- 经尿道前列腺电切术后膀胱冲洗的护理-课件
- 部编版(2024版)七年级历史上册第3课《中华文明的起源与形成》精美课件
- 头疗项目合作协议书
- 2025年高考数学一轮复习-7.1.2球的切、接问题【含解析】
- 2024年微信视频号品牌营销与运营服务协议
- 房颤患者护理查房
- 2024-2030年中国大理石行业发展分析及市场竞争格局与发展前景预测研究报告
- 2024-2030年中国保险中介行业市场深度调研及前景趋势与投资研究报告
- 外聘高管合同范本
- 2024秋七年级历史上册 第一单元 史前时期 中国境内人类的活动 第3课 远古的传说教案1 新人教版
- 保险公司与汽车救援公司 合作协议书范本
- 科研伦理与学术规范期末考试1题库
评论
0/150
提交评论