收藏 分销(赏)

单片机指令系统.doc

上传人:仙人****88 文档编号:11766805 上传时间:2025-08-12 格式:DOC 页数:5 大小:31.35KB 下载积分:10 金币
下载 相关 举报
单片机指令系统.doc_第1页
第1页 / 共5页
单片机指令系统.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
寻指方式: 立即寻址方式: 操作数在指令中直接给出 8位立即数: MOV  A, #20H 16位立即数: MOV  DPTR, #20D8H 直接寻址方式: 直接以单元地址的形式给出 MOV A, 20H 寄存器寻址方式: 操作数在寄存器 MOV A, R2 寄存器间接寻址方式: 以寄存器中的内容为地址取得操作数的方法。 使用的寄存器为Ri和DPTR,使用时寄存器前面加“@“标志。MOV A,@Ri ;MOVX A,@DPTR (R1)=80H、(80H)=33H,则执行指令MOV A,@Ri后,累加器A的内容为33H而不是80H 基址加变寻址方式: 以DPTR或PC为基址寄存器,以A为变址寄存器 形成16位地址 MOVC A,@A+DPTR 位寻址方式: 以位为操作数 MOV C, 4AH 范围: 1)内部RAM的位寻址区 2)可供位寻址的11个专用寄存器 相对寻址方式:根据地址相对当前PC的偏移量 JZ rel 1. 通用传送指令MOV : 该指令是“复制”,不改变源操作数. 1) 以累加器A为目的地址的指令 2) 以Rn为目的地址的指令 MOV A,Rn   ;A ← (Rn) MOV Rn,A ;Rn ← (A) MOV A,direct  ;A ← (direct) MOV Rn,direct ;Rn ← (direct) MOV A,@Ri   ;A ← ((Ri)) MOV Rn,#data ;Rn ← data MOV A,#data  ;A ← data 3) 以直接地址为目的地址的指令 MOV direct,A    ;direct ← (A) MOV direct,Rn ;direct ← (Rn) MOV direct,direct   ;direct ← (direct) MOV direct ,@Ri   ;direct ← ((Ri)) MOV direct ,#data   ;direct ← data 4) 以寄存器间接地址为目的的地址的指令 MOV @Ri,A ;(Ri)←(A) MOV @Ri,direct   ;(Ri)←(direct) MOV @Ri,#data   ;(Ri)←data 5)16位数据传送指令 MOV DPTR,#data16 ;DPTR ← data16 ;DPL ← data7~0 ;DPH ← data15~8 2. 数据交换指令 1) 字节交换指令XCH 功能:将累加器A中内容与源操作数互换。 XCH A,Rn ;(A)←→ (Rn) XCH A,direct ;(A)←→ (direct) XCH A,@Ri ;(A)←→( (Ri)) 例:设(A)=08H,(R7)=0DCH, 执行指令   XCH A, R7 结果为:(A)=0DCH, (R7)=08H 2) 半字节交换XCHD 功能:累加器A中内容与源操作数低4位交换,高4位不变。 XCHD A, @Ri  ;(A)低4位←→( (Ri))低4位 例:(A)=80H,(R0)=30H,(30H)=0FH,执行指令    XCHD A, @R 结果为:(A)=8FH, (30H)=00H 3) 累加器高低数字节交换指令SWAP A 功能:A中高4位与低4位互换。    SWAP A    ;(A)低4位←→ (A)高4位 例:(A)=80H ,执行SWAP A结果为:(A)=08H. 〔例3-4〕试用交换指令使片内20H单元的高4位与21H单元的低4位交换。 〔解〕 XCH A,20H SWAP A MOV R1,21H XCHD A,@R1 SWAP A XCH A,20H 3.栈操作指令: 数据写入堆栈称入栈,数据从堆栈中读出称出栈。 1) 入栈指令PUSH PUSH direct ;SP ← (SP)+1, (SP) ← (direct) PUSH指令常用于保护CPU现场 例:设(A)=30H,(B)=80H ,(SP)=50H .则执行指令:    PUSH A PUSH B 结果为:(51H)=30H,(52H)=80H,(SP)=52H 2) 出栈指令POP POP direct ; direct ← ((SP)), SP ← (SP)-1 POP指令常用于恢复CPU现场。 〔例3-5〕 试用栈操作指令完成P0和P1内容的互换。 解〕 PUSH P0   PUSH P1 POP P0 POP P1 3.3.2 片外数据存贮器与累加器A之间的传送指令   MOVX A, @DPTR ;A ← ((DPTR)) MOVX A, @Ri ;A ← ((Ri)) MOVX @ DPTR, A ;(DPTR) ← (A) MOVX @ Ri , A ;(Ri) ← (A) ①必须通过累加器A中转 ②寻址方式只能是寄存器间接寻址。参与间接寻址的寄存器只有Ri和DPTR两种(3个)。 DPTR为16位寄数器,寻址范围为000H~0FFFFH共64KB空间。 Ri是8位寄数器,只能寻址00~0FFH低256单元。 〔例3-6〕 ①将片外数据存贮器2000H单元的内容传送到片内的20H单元中;②将片外数据存贮器2000H单元的内容传送到片外0FAH单元。 〔解〕① MOV DPTR ,#2000H MOVX A,@DPTR MOV 20H, A ② MOV DPTR ,#2000H MOVX A,@DPTR MOV R0,#0FAH MOVX @R0,A 3.3.3 程序存贮器向累加器A传送指令 MOVC A,@A+PC ;A ← ((A)+(PC)) MOVC A,@A+DPTR  ;A ← ((A)+(DPTR)) 尽可能使用 程序存贮器只能读出,不能写入,所以其数据传送都是单向的 〔例3-8〕 改正下列指令中的错误,完成其功能: ①MOV A,2000H ;片外RAM 2000H单元内容送入A。 ②MOVX 20H,2000H ;片外RAM 2000H单元内容送入片内20H单元。 ③MOVC A,2000H ;将ROM 2000H单元内容送入A。 ④MOVX A,@A+DPTR ;以查表方式将片外RAM单元的内容送入A。 ⑤XCH 40H,30H ;交换片内RAM 30H和40H单元的内容. ⑥PUSH AB ;将寄存器对AB的内容压入堆栈。 〔解〕 ① MOV DPTR,#2000H ② MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A MOVX A,@DPTR ③ MOV DPTR,#2000H ④无法以查表方式将片外RAM 存贮单元的内容送入A。 MOV A,#0 MOVC A,@A+DPTR ⑤XCH A,20H ⑥PUSH A XCH A,30H PUSH B XCH A,20H 3.4 算术运算类指令 3.4.1 加法指令 1.不带进位加法指令 ADD ADD A,Rn ;A ←(A)+(Rn) ADD A,direct ;A ←(A)+(direct) ADD A,#data ;A ←(A)+ data ADD A,@Ri ;A ←(A)+((Ri)) 2.带进位加法指令ADCC ADDC A,Rn ;A ← (A)+(Rn)+(C) ADDC A,direct ;A ← (A)+( direct)+(C) ADDC A,#data ;A ← (A)+data+(C) ADDC A,@Ri ;A ← (A)+((Ri))+(C) 3. 增量指令INC INC A ; A ← (A)+1 INC Rn ; Rn ← (Rn)+1 INC direct ;direct ← (direct)+1 INC @Ri ;(R)i ←( (Ri))+1 INC DPTR ; DPTR ← (DPTR)+1 4.十进制调整指令DA A 3.4.2 减法指令 1.带进位减法指令SUBB : SUBB A,Rn ;A ← (A) –(Rn)–(C) SUBB A,direct ;A ← (A) –(direct)–(C) SUBB A,@Ri ;A ← (A) – ((Ri))–(C) SUBB A,#data ;A ← (A) – data – (C) 2. 减1指令DEC: DEC A ;A ← (A)-1 DEC Rn ;Rn ← (Rn)-1 DEC direct ;direct ← (direct)-1 DEC @Ri ;(Ri) ←((Ri))-1 3.4.3 乘法指令MUL   MUL AB 3.4.4 除法指令DIV DIV AB 3.5 逻辑运算及移位指令   3.5.1 逻辑运算指令 1.逻辑与指令ANL ANL A,Rn ;A ← (A)∧(Rn) ANL A,direct ;A ← (A)∧(direct) ANL A,@Ri ;A ← (A)∧((Ri)) ANL A,#data ;A ← (A)∧data ANL direct,A ;direct← (A)∧(direct) ANL direct,#data ;direct ← (direct)∧data 2.逻辑或指令ORL ORL A,Rn ;A ← (A)∨(Rn) ORL A,direct ;A ← (A) ∨(direct) ORL A,@Ri ;A ←(A) ∨((Ri)) ORL A,#data ;A ← (A) ∨data ORL direct, A ;direct← (A) ∨(direct) ORL direct, #data ;direct ← (direct) ∨data 4.累加器清0指令 CLR CLR A 5.累加器取反指令 CPL CPL A 3.6 位操作指令 3.6.1 位传送指令MOV MOV C,bit ;C ← (bit) MOV bit,C ;bit ← (C) 3.6.2 位置位/复位指令  1. 位置位(置1)命令SETB SETB C ;C ← 1 SETB bit ;bit ← 1 2. 位复位(清0)命令   CLR C ;C ← 0 CLR bit ;bit ← 0 3.6.3 位运算指令 1. 逻辑与指令ANL ANL C,bit ;C ←(C)∧(bit) ANL C,/bit ;C ←(C)∧(/bit) 2. 逻辑或指令ORL ORL C,bit ;C ← (C)∨(bit) ORL C,/bit ;C ← (C)∨(/bit) 3. 逻辑非(求反)指令CPL CPL bit ; bit ← (/bit) 3.7.1 无条件转移指令  1.长转移指令LJMP LJMP addr16 ;PC ← addr16 2. 短转移指令SJMP SJMP rel ;PC ← (PC)+2+rel 3. 绝对转移指令AJMP AJMP addr11 ;PC ← (PC)+2,PC10~0 ← addr11 4.变址转移指令JMP JMP @ A+DPTR ;PC ← (A)+(DPTR) 3.7.2 条件转移指令: 程序的转移是有条件的,当指令中规定的条则满足时,程序转移,否则程序不转移,仍顺序执行。 1. 测试转移指令 1)累加器A判0转移指令 JZ rel ;若(A)=0,转移,PC ← (PC)+2+rel ;若(A)≠0,顺序执行。 JNZ rel ;若(A)≠0,转移,PC ← (PC)+2+rel 2)进位位测试转移指令 JC rel ;若(C)=1,转移,PC ← (PC)+2+rel JNC rel ;若(C)=0,转移,PC ← (PC)+2+rel 3) 位单元测试转移指令 JB bit,rel ;若(bit)=1,转移,PC ← (PC)+3+rel JNB bit,rel ;若(bit)=0,转移,PC ← (PC)+3+rel JBC bit,rel ;若(bit)=1,转移,PC ← (PC)+3+rel ;同时将bit位清零。 3.9 MCS-51单片机指令小结 3.9.1 MCS-51单片机指令系统组成 MCS-51汇编语言有42种操作码助记符来描述33种操作功能。功能助记符与不同寻址方式组合,得到111条指令,分为5大类: 1)数据传送类指令29条 2)运算类指令24条 3)逻辑运算及移位类指令24条 4)位操作类指令17条 5)控制转移类指令17条 另外,MCS-51指令根据书写格式,可分为单操作数、双操作数、三操作数和无操作数;按照长度不同,分为单字节、双字节和三字节指令;根据执行时间的长短,分为单周期、双周期和四周期指令。 指令应用范围小结 1)外部RAM单元只能通过4条MOVX指令与累加器A进行数据传输: 1.MOVX A, @Ri 2.MOVX A, @DPTR 3.MOVX @Ri, A 4.MOVX @DPTR, A 2)对于程序寄存器ROM的操作有两种,一种是通过查表指令,将ROM单元的内送到累加器A中,指令有2条: MOVC A, @A+DPTR MOVC A, @A+PC
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服