版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主要内容寻址方式指令系统传送与交换指令算术运算、逻辑运算指令控制转移指令位操作指令伪指令程序设计举例第3章MCS-51系列单片机的指令系统及汇编语言程序设计编辑ppt
计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。
MCS-51单片机汇编语言指令格式:
操作符目的操作数,源操作数操作符指明该指令完成什么操作;操作数是指明该指令的操作对象。目的操作数是存放结果的。指令中操作数提供的方式称为寻址方式。编辑ppt
指令中的常用符号Rn:
表示当前工作寄存器R0~R7中的一个。Ri:
代表R0和R1寄存器中的一个,用作间接寻址寄存器。dir:8位直接字节地址(片内RAM和SFR)#data:8位立即数,即8位常数。可以为2进制(B)、10进制、16进制(H)、字符(‘
’)#data16:
表示16位立即数,即16位常数,取值范围为:#0000H~#0FFFFHaddr16:
表示16位地址addr11:
表示11位地址rel:
相对偏移量(为一字节补码)用于相对转移指令中bit:
位地址,在位地址空间中。 $:表示当前指令的地址。编辑ppt
指令中直接给出操作数的寻址方式。在51系列单片机的指令系统中,立即数用一个前面加“#”号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。立即寻址中的数,称为立即数。例如指令:MOVA,#58H;58H→A3.1寻址方式
3.1.1立即寻址编辑ppt
操作数的地址直接出现在指令中。 寻址对象:①内部数据存贮器:使用它的地址。②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。③位地址空间④程序存储器空间例:MOVA,40H;(40H)→AMOV40H,41H;(41H)→(40H)
MOVP0,#45H;
45H→P0MOV80H,#45H;
45H→P0MOVC,18H;
位地址18H→C3.1.2直接寻址编辑ppt
操作数存放在寄存器中。寻址对象:A,B,C,DPTR,R0~R7。
B仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。
A可以寄存器寻址又可以直接寻址,直接寻址时写作ACC
例如:MOVA,R0;R0→AMULAB;A*B→BAADDA,ACC;A+A→A3.1.3寄存器寻址编辑ppt
操作数存放在以寄存器内容为地址的单元中,用做间址的寄存器为Ri(i=0,1)、DPTR。
①对片内的间接寻址用Ri(i=0,1)如:MOVR0,#20H
MOV@R0,A;A→(20H)
②对片外的间接寻址可用Ri(i=0,1)或DPTR
如:MOVX@DPTR,A;A→以DPTR的内容为地址的外部RAM中
MOVX@R1,A;A→以P2R1内容为地址的外部RAM中③PUSH和POP指令的源操作数是以SP间接寻址注意:寄存器间接寻址不能访问SFRMOVR1,#81HMOVA,@R1;不能访问SP,只能用MOVA,SP3.1.4寄存器间址编辑ppt
变址寻址只能访问程序存储器。操作数所在位置的地址由DPTR或PC寄存器与A的内容相加后形成。其中累加器A内容是可变的。变址寻址只有三条指令。
MOVCA,@A+DPTR;(A+DPTR)→AMOVCA,@A+PC;(A+PC)→AJMP
@A+DPTR;A+DPTR→PC注意:①A的内容是无符号数。②PC值是指令的当前PC值,即下条指令的PC值3.1.5变址寻址编辑ppt3.1.6相对寻址
变址寻址只能访问程序存储器。相对寻址是将程序计数器PC的当前值与指令第二字节给出的偏移量相加,从而形成转移的目标地址。
如:JZ61H注意:①相对偏移量是一字节有符号数,用补码表示,偏移范围是:-128~+127。②PC值是指令的当前PC值,即下条指令的PC值。③源程序中偏移量常用符号地址表示。编辑ppt
对可位寻址的位地址寻址。包括片内RAM的位地址空间和可位寻址的SFR(地址能被8整除) 如:MOVC,20H
;位寻址
MOVA,20H
;字节寻址以上两条指令究竟是位寻址还是字节寻址,根据两操作数类型一致的原则,由另一个操作数决定。
3.1.7
位寻址编辑ppt立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址相对寻址位寻址片内RAM低128B单元√√工作寄存器组R0~R7√√√特殊功能寄存器SFRA、B、DPTR、C√√√程序存储器√√√√片外RAM√位地址空间√√寻址方式与存储空间的对应关系
编辑ppt
dir@Ri
Rn#dataAMOVA, Rn
#datadir
@RiMOVdir, ARn,@Ri
#data
dir
MOV@Ri, Adir#data内部RAM、SFR之间的传送MOV指令MOVRn,
Adir#data3.2指令系统
3.2.1数据传送与交换指令编辑ppt例R1=20H,(20H)=55H,
MOVA,@R1执行后,A=55H。例(40H)=30H,
MOVR7,40H执行后,R7=30H。例MOVR7,#40H执行后,R7=40H。注意:寄存器之间无传送;寄存器间址和寄存器之间无传送;立即数不能做目标地址;编辑ppt@Ri,A@DPTR,AA,@RiA,@DPTRMOVXMOVCA,@A+PCA,@A+DPTR2.外部存储器和A累加器之间的传送MOVXA
外部数据存储器程序存储器MOVC编辑ppt
利用MOVX实现片外数据存储器数据传送
(2000H)→(2100H)
MOVDPTR,#2000H MOVXA,@DPTR MOVDPTR,#2100H MOVX@DPTR,A
;DPTR=2000H
;DPTR=2100H;A←X
;(2100H)←Xx片外数据存储器不能直接寻址。下列为非法指令:
MOVXA,2000H×MOVX2100H,2000H×编辑ppt
利用Ri间址来实现将(2000H)→(2100H)MOVP2,#20H ;高位地址
MOVR0,#00 ;低位地址
MOVXA,@R0 ;读片外RAMMOVP2,#21H ;改变高位地址
MOVX@R0,A ;写片外RAM编辑ppt
利用MOVC指令实现查表功能
注:①只能从程序存储器读取数据到A累加器。
②只能使用变址间接寻址方式
1)DPTR为基址寄存器
MOVCA,@A+DPTR;A←(A+DPTR)
查表范围为64KB程序存储器任意空间。2)PC为基址寄存器
MOVCA,@A+PC ;A←(A+PC)
常数表只能在查表指令后256B范围内。编辑ppt例查表法求Y=X2。设X(0≤X≤15)在片内RAM20H单元,要求将查表求Y,存入片内RAM21H单元1)用DPTR作基址寄存器
ORG0100H SQU: MOVDPTR,#TAB ;确定表首地址
MOVA,20H ;取X
MOVCA,@A+DPTR;查表求Y=X2
MOV21H,A ;保存Y RET ;子程序结束
… ;其它程序段
ORG0200H ;常数表格首地址TAB: DB00,01,04,09,…,225;平方表编辑ppt
指令地址
源程序
ORG0100H ;程序起始地址
0100H SQU:MOVA,20H ;取X 0102H ADDA,#3 ;修正偏移量
0104H MOVCA,@A+PC;查表求Y=X2 0105H MOV21H,A ;存结果
0107H RET ;子程序结束
0108H TAB:DB00,01,04 ;平方表
010BH DB09,…,225 思考题:当0≤X≤255时,如何用查表法编程求Y=X22)用PC作基址寄存器编辑ppt3.交换指令
实现片内RAM区的数据双向传送1)字节交换指令
XCHA,Rn;A←→Rn XCHA,@Ri;A←→(Ri)XCHA,dir;A←→(dir)2)半字节交换指令
XCHDA,@Ri;A0~3←→(Ri)0~3SWAPA ;A4~7←→A0~3
dir@Ri
RnA4.堆栈操作指令
入栈指令:PUSHdir;SP←SP+1,(SP)←(dir)
出栈指令:POPdir;(dir)←(SP),SP←SP-1
@RiA7~47~43~03~0A7~43~0编辑pptdir@RiRn#dataA
dir@Ri
Rn#dataAA,Rn,@Ri
#datadirADDADDCSUBBANLORLXRL加进位加借位减与或异或1.以A为目的操作数的算术、逻辑运算指令(24条)3.2.2算术运算和逻辑运算指令编辑ppt2.以dir为目的操作数逻辑运算指令(6条)A#data
dir与ANL或ORL异或XRLdir,#dataA3.加1、减1指令@RiAdirRnDPTRINC@RiAdirRnDEC编辑ppt4.十进制调整指令
DAA;仅对存于A中的加法结果进行十进制调整
若需完成十进制减法运算,则应变减法运算为补码的加法运算即可,其减数X的补码通过(99-X)+1再DAA后得到。
原则:和低4位大于9或有半进位,则低4位加6
和高4位大于9或有进位,则高4位加6例:(DATA)-(DATA+1)=>(DATA+2)Y-X=Y-X+100-->有效位为2位十进制,模为100=Y+(99-X)+1编辑ppt5.乘、除法指令MUL AB;A×B→BADIV AB;A÷B→商在A中,余数在B中6.专对A的指令CPL ACLR A;0→A;A→AMOVA,#99HDAACLRCADDA,DATASUBBA,DATA+1DAAADDA,#1MOVDATA+2,A编辑pptCYRRARLARLCARRCA移位指令(仅对A)00101101A01001011ACY11001011A000101101A1CY10010110A设1CYCY编辑ppt1.调用程序和返回类指令
1)长调用
LCALLaddr16;addr16→PC0~15
指令功能同80X86中的CALL,调用范围64KB全部空间,指令的机器码为三字节。
2)短调用
ACALLaddr11;addr11→PC0~10
指令的功能同前,主要区别为:
addr11→PC0~10,而PC11~15保持原值不变,故其调用范围为2KB,即子程序入口距当前PC不得超过2KB地址范围。本指令的机器码为二字节。3.2.3控制转移类指令编辑ppt3)子程序返回指令(从栈顶弹出断点到PC)
RET;从调用子程序返回。
RETI;从中断服务程序返回并恢复中断优先级状态触发器。2.转移指令
1)无条件转移指令(1)短转移
AJMPaddr11;addr11→PC0~10
转移范围:2KB机器码为2字节编辑ppt(2)长转移
LJMPaddr16;addr16→PC0~15
转移范围:64KB机器码为3字节。(3)间接转移
JMP@A+DPTR;A+DPTR→PC
分析下列程序段,说出当A分别为0和2时,程序转置何处?该程序段的功能是什么?
MOVDPTR,#TABLEJMP@A+DPTRTABLE:AJMPPROC0AJMPPROC1AJMPPROC2AJMPPROC3编辑ppt
(4)无条件相对转移
SJMPrel;PC+rel→PC,即As+2+rel→PC,机器码为2字节
As为源地址(本指令的首地址),执行本指令时当前PC=As+2,rel为转移的偏移量,转移可以向前转(目的地址小于源地址),也可以向后转(目的地址大于源地址),因此偏移量rel是1字节有符号数,用补码表示(-128~+127),所以指令转移范围在离源地址As的-126~+129字节之间。编辑ppt2)条件转移指令(1)累加器为零(非零)转移
JZ/JNZrel;A=0/(A≠0)则转移,否则顺序执行程序(2)减1不等于零转移
DJNZRn/dir,rel
功能为:Rn(dir)-1→Rn(dir)
相减结果≠0转,否则顺序执行程序编辑ppt
(3)比较转移指令
CJNEA,dir,relCJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,rel操作数1不等于操作数2则转,否则顺序执行。1例:Y=-1X≥ZX<Z
Z
X
YDATA+2DATA+1DATAMOVDATA+2,#0FFHMOVA,DATACJNEA,DATA+1,NEXTNEXT:JCNEXT1MOVDATA+2,#1NEXT1:RETdir@RiRn#dataA编辑ppt1.位传送指令
MOVC,bit;(bit)→CYMOVbit,C;CY→bit2.位状态控制指令
CLRC;0→CY
CLRbit;0→bitSETBC;1→CYSETBbit;1→bitCPLC;CY→CYCPLbit;bit→bit3.2.4位操作指令编辑ppt3.位逻辑运算指令
ANLC,bit;CY∧(bit)→CY
ANLC,/bit;CY∧(bit)→CY
ORLC,bit;CY∨(bit)→CY
ORLC,/bit;CY∨(bit)→CY编辑ppt
4.位转移 位转移根据位的值决定转移,均为相对转移指令。
JCrel;CY=1,则转移,否则顺序执行程序
JNCrel;CY=0,则转移,否则顺序执行程序
JBbit,rel;(bit)=1,则转移,否则顺序执行程序
JNBbit,rel;(bit)=0,则转移,否则顺序执行程序
JBCbit,rel;(bit)=1,则转移,且该位清零,否则顺序执行程序编辑ppt1.定义:汇编控制指令,没有指令代码,不能被CPU执行,只用于汇编过程,为汇编程序提供汇编信息。2.常用伪指令(1)ORGORG是设置起始地址伪指令,其格式是:
ORG 16位地址或标号(2)ENDEND是结束汇编伪指令,其格式是:
END(3)DB DB是定义字节伪指令,其格式是:
[标号:]DB字节型数表(4)DW DW是定义字伪指令,其格式是:
[标号:] DW字型数表3.3伪指令编辑ppt(5)DS DS是定义存储空间伪指令,其格式是:
[标号:] DS表达式(6)EQU EQU是赋值伪指令,其格式是: 字符名称 EQU 数据或汇编符号(7)DATA DATA是数据地址赋值伪指令,其格式是: 字符名称 DATA 表达式(8)BIT BIT是位地址赋值伪指令,其格式是: 字符名称 BIT 位地址
详见表3.3MCS-51中的伪指令编辑ppt进制间的转换1.十进制→二进制(整数)任何十进制数D有:D=dn-1×10n-1+dn-2×10n-2+…
+d1×101+d0×100
=(…(dn-1×10+dn-2)×10
+…
+d1)×10+d0规律:di×10+di-1(i=1,2,…n-1)按二进制运算规则运算则得二进制数3.4程序设计举例编辑ppt例:将4位十进制数D3D2D1D0转换成二进制数,设4位十进制数D3D2D1D0按分离BCD码形式存放,要求结果的高位存放在R3中,结果的低位存放在R2中。方法:D3D2D1D0=(((0×10+D3)×10+D2)×10+D1)×10+D0结果:16位二进制数0D30D20D10D0DATA编辑ppt流程:设置指针指向DATA计数器初始(R7=3)Di初始→结果单元结果单元内容×10+Di-1→结果单元修改指针计数器-1→计数器↓↓↓↓↓↓计数器=0?↓返回YN编辑ppt×R3R2R2×0AHR3×0AH0A000R3R2MOV A,R2MOV B,#0AHMUL ABMOV R2,AMOV A,BXCH A,R3MOV B,#0AHMUL ABADD A,R3MOV R3,ARETMUL10:结果单元乘10子程序由于4位10进制(9999)小于16位2进制(65535),所以转换结果不会大于16位编辑pptMOV R0,#DATAMOV R7,#03HMOV A,@R0MOV R2,AMOV R3,#0ACALLMUL10INC R0MOV A,@R0ADD A,R2MOV R2,AMOV A,R3ADDC A,#0MOV R3,ADJNZ R7,BCDB1RETBCDB:BCDB1:0D30D20D10D0DATA编辑ppt2.十进制→二进制(小数)10进制乘2取整(取溢出)例:0.625=2-1+2-3
=
0.10100000Ba.小数点位数由乘2次数定,结果单元字节数也由此定b.第一次的整数权最高=2-1c.乘2是10进制的乘2,自身相加再DAA调整D
=b-1×2-1+b-2×2-2+…+b-m×2-m
编辑ppt例:设入口时10进制数在A中,要求结果放在R2中(8位二进制小数)结果单元清0次数计数器初始十进制小数单元乘2整数移入结果单元计数器-1→计数器↓↓↓↓↓计数器=0?↓返回YNBCDBP:MOV R2,#0 MOV R6,#8BCDBP1:ADDA,ACC DAA XCH A,R2 RLC A XCH A,R2 DJNZR6,BCDBP1 RET;结果单元清0;次数初始;10×2;将整数移入结果单元溢出在进位位中编辑ppt3.二进制→十进制(整数)按权展开以8位为例:b7b6b5b4b3b2b1b0=b7×27+b6×26+…+b0×20
=(…((0×2+b7)×2+b6)×2+…)×2+b0将二进制数逐步左移得:b7,b6,b5,b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东江门幼儿师范高等专科学校《基础英语二》2023-2024学年第一学期期末试卷
- 广东财贸职业学院《陈设设计》2023-2024学年第一学期期末试卷
- 二氧化碳制备课件
- 《如何赢得合作》课件
- 赣州职业技术学院《工程计量与计价》2023-2024学年第一学期期末试卷
- 2024“五史”全文课件
- 小学生手工剪纸课件
- 赣南卫生健康职业学院《汉语言文学专业概论》2023-2024学年第一学期期末试卷
- 赣南科技学院《燃烧学B》2023-2024学年第一学期期末试卷
- 《保护煤柱的设计》课件
- 奥齿泰-工具盒使用精讲讲解学习课件
- 最新MARSI-医用黏胶相关皮肤损伤课件
- 工程开工报审表范本
- 航空小镇主题乐园项目规划设计方案
- 保洁冬季防滑防冻工作措施
- 少儿美术课件-《我的情绪小怪兽》
- 永续债计入权益的必备条件分析
- 预应力钢绞线张拉伸长量计算程序单端(自动版)
- 基坑监测课件ppt版(共155页)
- 开发区开发管理模式及发展要素PPT课件
- 急诊科科主任述职报告范文
评论
0/150
提交评论