单片微型计算机C第7讲(机械) (1)_第1页
单片微型计算机C第7讲(机械) (1)_第2页
单片微型计算机C第7讲(机械) (1)_第3页
单片微型计算机C第7讲(机械) (1)_第4页
单片微型计算机C第7讲(机械) (1)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上节内容回顾寻址方式请说明下面指令源操作数和目的操作数的寻址方式MOVA,#dataMOVRn,directMOV@Ri,directMOVCA,@A+DPTR第6-7讲教学目的和要求【教学目标】通过讲述单片机的寻址方式和指令系统功能,以及位寻址功能。掌握各种寻址方式、常用指令的功能和使用方法及汇编语言程序设计方法。【教学重点】①MCS51单片机的寻址方式;②MCS51单片机的指令系统;【教学难点】寻址方式及指令系统。第四章MCS-51单片机指令系统4.3MCS51指令系统MCS51指令系统共有111条指令,按功能分类,可分成5类。数据传送类指令:28条;算术操作类指令:24条;逻辑运算类指令:25条;控制转移类指令:17条;位操作类指令:17条4.3MCS51指令系统MCS51指令系统共有111条指令,按功能分类,可分成5类。数据传送类指令:28条;算术操作类指令:24条;逻辑运算类指令:25条;控制转移类指令:17条;位操作类指令:17条4.3.1

数据传送类指令数据传送类指令时编程时使用最频繁的一类指令一般不影响程序状态字寄存器PSW的状态。一般传送类指令(MOV)特殊传送类指令:MOVC、MOVX、PUSH、POP、XCH、XCHD、SWAP共28条数据传送类指令4.3.1.1

一般传送类指令16位传送(仅1条)MOVDPTR,#data16;DPTR←data16

【例】执行指令MOVDPTR,#1234H。

(DPH)=12H,(DPL)=34H。8位传送

通用格式:MOV

<目的字节>,<源字节>

;MOV指令①以A为目的操作数MOVA,Rn;

A←(Rn)direct;A←(direct)@Ri;

A←((Ri))

#data;A←data【例】若(R1)=20H,(20H)=55H。执行指令MOVA,@R1后,A寄存器的内容是多少?MOV指令②以Rn为目的操作数MOVRn,A;

Rn←(A)direct;Rn←(direct)#data;Rn←data【例】执行指令MOVR6,#50H后,(R6)=50HMOV指令③以直接地址direct为目的操作数MOVdirect,Adirect←ARn;

direct←(Rn)direct1;direct←(direct1)@Ri;

direct←((Ri))

#data;direct←data【例】若(R1)=50H,(50H)=18H,执行指令MOV40H,@R1后,40H单元内容是多少?MOV指令④以寄存器间接地址@Ri为目的操作数MOV@Ri,A;

(Ri)←(A)direct;(Ri)←(direct)#data;(Ri)←data【例】若(R1)=30H,(A)=20H,执行指令MOV@R1,A后,30H单元的内容是多少。内部数据传送类指令小结累加器A寄存器间址@Ri#data立即数直接地址direct工作寄存器Rn练习已知:(R0)=30H,试问执行如下指令,累加器A、R3、30H、31H单元中内容各是什么?MOVA,#20HMOVR3,#45HMOV@R0,#46HMOV31H,#47H执行后,结果为:A=20H;R3=45H;(30H)=46H;(31H)=47H4.3.1.2特殊传送类指令

以DPTR内容为基址读ROM中常数表项指令MOVC,亦称查表指令ROM中可以存放程序代码,还经常存放常数表

MOVCA,@A+DPTR;A←((A)+(DPTR))

以PC内容为基址MOVCA,@A+PC;A←((A)+(PC))常数表可以存放在ROM的任何位置,称为远程查表指令。常数表只能存放在该指令后的256个单元内,称为近程查表指令。举例已知A寄存器当前内容为04H,试编写程序,以DPTR作为基址寄存器,将片外ROM的2015H单元中内容读出,并把数送到片内RAM的7FH单元。MOVDPTR,#2011HMOVCA,@A+DPTRMOV7FH,A特殊传送指令MOVX

读片外RAM读片外RAM及接口单元数据的指令MOVX片外RAM中经常存放数据采集与处理的中间数据MOVXA,@DPTR;A←((DPTR))MOVXA,@Ri;A←((Ri))写片外RAMMOVX@DPTR,A;((DPTR))←AMOVX@Ri,A;((Ri))←A举例判断下列指令的正误,将错误的更正。MOVXA,2000HMOVDPTR,#2000HMOVXA,@DPTR2.MOVXA,20HMOVR0,#20HMOVXA,@R04.3.1.3堆栈操作指令PUSH与POP堆栈是一片存储区,遵循“后进先出”原则,栈顶由SP指示,初始化时,SP=07H。8051的堆栈设在片内RAM低端的128个单元,向上生长,即入栈时,栈顶指针增加。数据或指令数据或指令栈底SPPushpopSPXX+1X+2堆栈操作指令PUSH与POP入栈指令PUSH。PUSHdirect;SP←(SP)+1,(SP)←(direct)

先增加指针,以指向一个空的单元,将要数据压入堆栈出栈指令POP。POPdirect;(direct)←((SP)),SP←(SP)-1

先取出数据,再减指针,将单元空出

。堆栈用于子程序调用时保护返回地址,或者用于保护子程序调用之前的某些重要数据(即保护现场),还可以用于数据交换。堆栈操作指令PUSH与POP设(SP)=60H,(A)=30H,(B)=70H,连续执行两条指令PUSHACC和PUSHB;再连续执行两条指令POPDPH和POPDPL30H70H栈底60H61H62HSPPUSHACCPUSHBPOPDPHPOPDPLSPSPDPH=70HDPL=30H4.3.1.4数据交换指令包含XCH、XCHD和SWAP三条字节交换指令XCHXCHA,Rn;

(Rn)↔(A)direct;(A)↔(direct)@Ri;((Ri))↔(A)【例】若(R0)=80H,(A)=20H。执行指令

XCHA,R0后,(A)=80H,(R0)=20H。数据交换指令XCHD半字节交换指令XCHD指令形式:XCHDA,@Ri指令功能:将寄存器间址的RAM单元的低半字节与A的低半字节互换,而高半字节保持不变。【例】若(R0)=30H,(30H)=67H,(A)=20H。执行指令XCHDA,@R0指令后,(A)=27H,(30H)=60H。数据交换指令SWAP累加器高低位交换指令SWAP指令形式:SWAPA指令功能:将累加器的高低4位互换。【例】若(A)=30H,执行指令SWAPA后,(A)=03H。4.3.2

算术运算类指令算数运算结果要影响PSW中标志位;PSW中标志位的含义CY为1,无符号数(字节)加减发生进位或借位OV为1,有符号数(字节)加减发生溢出错误AC为1,十进制数(BCD码)加法的结果应调整P为1,存于累加器A中操作结果的“1”的个数为奇数算术运算指令影响标志位示例【例】有2个参与相加的机器数,一个是84H,另一个是8DH。试分析运算过程及其对状态标志的影响。ACC84H8DH11H结果:CY为1;AC为1

;OV为1

;P为0

10000100+10001101100010001此时PSW的值为多少?4.3.2.1加法运算加法指令(ADD,共4条)ADDA,[Rn][direct][@Ri][#data],源操作数为四选一。带进位的加法指令(ADDC,共4条)ADDCA,[Rn][direct][@Ri][#data],源操作数为四选一增1指令(INC,共5条)INC[A][Rn][direct][@Ri][DPTR],五选一不影响任何标志位。十进制调整指令(DA,1条)DAAADD不带进位的加法指令由寄存器A与(Rn、direct、@Ri、#data)中的一个相加,结果存回寄存器A中。【例】若有2个无符号数存于累加器A和RAM的30H单元,即(A)=84H,(30H)=8DH,执行指令ADDA,30H。8DHRAM30H84HA8DH84H+11H11H将同时修改PSW的内容加法运算结果的溢出判断无符号数:判断无符号是否溢出时,仅需判断CY是否为1即可。有符号数:判断有符号运算是否产生溢出时,仅需判断OV是否为1即可。程序设计中,若需要对结果是否产生溢出,进行不同处理时,无符号数用JNC或JC,有符号数要用JNB或JB进行条件转移。ADDC

带进位加法指令一般应用于多字节数据的加法ADDCA,Rn;

A←(Rn)+(A)+CYdirect;A←(direct)+(A)+CY@Ri;

A←((Ri))+(A)

+CY#data;A←data+(A)+CY【例】试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。R2R4R1R3+R6R5CMOV A,R2ADD A,R4MOV R6,AMOV A,R1ADCA,R3MOV R5,ADA

十进制调整指令DAA:调整A的内容为正确的BCD码当两个用压缩BCD表示的数进行相加时,后跟此指令,单片机自动完成调整。【例】在R3中有十进制数67,在R2中有十进制数85,用十进制运算,运算的结果放于R5中。程序为:MOVA,R3ADDA,R2 DA A

MOVR5,A 0110011110000101+1110110001100110+010100101

对某个寄存器或某单元中的数据,并不知道用户存放的类型是有符号数、无符号数,还是BCD码,需要用户在编程时,根据不同类型选择不同操作。4.3.2.2减法指令

带借位的减法指令(SUBB,共4条)SUBBA,[Rn][direct][@Ri][#data],源操作数为四选一若无须带借位相减,在执行此指令之前,清除借位位C的内容,即执行CLRC。减1指令(DEC,共5条)DEC[A][Rn][direct][@Ri][DPTR],五选一减法中关于标志位的说明SUBB中对标志位的影响CY为1,表示最高位有借位OV为1,有符号数减法时发生溢出错误,正-负或负-正时可能发生。AC为1,低半字节向高半字节有借位;DEC对标志位的影响仅影响P标志位。减法指令举例【例】求R3←R2-R1。

MOVA,R2

CLR C SUBBA,R1 MOV

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论