第四章指令系统及江编语言程序设计语言(④ 4.1编程语言简介 42指令和伪指令 43汇编语言程序调试 44利用 STC-ISP工具将程序下载到单片机中验证程序 45各类指令详解 45.1数据传送类指令 452逻辑操作类指令 具体指令系 453算术运算类指令 统介绍 454位操作指令 45.5控制类转移指令 46汇编语言程序设计 19:12:55
第四章 指令系统及汇编语言程序设计语言 4.1 编程语言简介 4.2 指令和伪指令 4.3 汇编语言程序调试 4.4 利用STC-ISP工具将程序下载到单片机中验证程序 4.5各类指令详解 4.5.1 数据传送类指令 4.5.2 逻辑操作类指令 4.5.3 算术运算类指令 4.5.4 位操作指令 4.5.5 控制类转移指令 4.6 汇编语言程序设计 4 19:12:55 具体指令系 统介绍
§4.5各类指令详解(11条)指令列表见附录E 4.51数据传送类指令(29条 8个助记符 数据传送类指令是使用频率最高的一类指令。 ◇功能:主要用来给单片机的内部和外部资源赋值、进 行堆栈的存取操作等。数据传送类指令执行前后,对 程序状态字PSW一般不产生影响。 (注:A为目的操作数时,影响PSW的奇偶标志位P。) ◇分类:根据操作方式不同,数据传送类指令分为三种 ◆数据传送(条)例:MOVA#13H ◆数据交换(条)例XCHA,adr8;A←→(adr8) ◆栈操作(2条) PUSH addr8;SP4SP+,(SP)(adr POP addr; (addr)*( SP), SP+-SP-1 519:12:55
§4.5 各类指令详解(111条) 数据传送类指令是使用频率最高的一类指令。 功能:主要用来给单片机的内部和外部资源赋值、进 行堆栈的存取操作等。数据传送类指令执行前后,对 程序状态字PSW一般不产生影响。 (注: A为目的操作数时, 影响PSW的奇偶标志位P。) 分类:根据操作方式不同, 数据传送类指令分为三种: 数据传送(22条) 数据交换(5条) 栈操作(2条) 5 19:12:55 8个助记符 例: MOV A, #13H 例:XCH A, addr8; A←→(addr8) PUSH addr8 ; SP←SP+1, (SP)←(addr8) POP addr8 ; (addr8)← (SP) , SP←SP- 1 §4.5.1 数据传送类指令(29条) 指令列表见附录E
s45.1数据传送类指令(29条)--数据传送(22条)(D 助记符 功能说明指令列表 MOV A Rn 寄存器内容送入累加器 见附录E Mov Adirect 直接地址单元中的数据送入累加器 MOV A.aRi 间接RAM中的数据送入累加器 MOVA,#data立即数送入累加器 MOV Rn.a 累加器内容送入寄存器 MOV Rn, direct直接地址单元中的数据送入寄存器 MOV Rn,#data立即数送入寄存器 MoV directa 累加器内容送入直接地址单元 Mov direct Rn寄存器内容送入直接地址单元 MOV direct, direct接地址单元中的数据送入另一个直接地址单元 MOV direct@Ri间接RM中的数据送入直接地址单元 MOvdirect,#data立即数送入直接地址单元
§4.5.1 数据传送类指令(29条)----数据传送(22条) 数据传送(22条) 数据交换(5条) 栈操作(2条) 6 19:12:56 指令列表 见附录 E
S4.51数据传送类指令(29条)-数据传送(22条)( 助记符 功能说明 MOV @ Ri, A 累加器内容送间接RAM单元 MOV@R, direct直接地址单元数据送入间接RAM单元 MOV@Ri,#a即数送入间接RAM单元 lOV DPTR执da166位立即数送入数据指针 MOSCA、@A+DPIR以DR为基地址变址寻址单元中的数据送入寄存器 MOVC A,@A+PC以PC为基地址变址寻址单元中的数据送入寄存器 将逻辑上在片外、物理上在片内外的扩展RAM8 MOVX A, @Ri 位地址)的内容送入累加器A中,读操作 MoVX aRL,A 将累加器A的内容送入逻辑上在片外、物理上在 内外的扩展RAM(8位地址)中,写操作 MOVX A, @DPTR 将逻辑上在片外、物理上在片内外的扩展 RAM(16位地址)的内容送入累加器A中,读操作 MOVX @DPTR, A累加器A的内容送入逻辑上在片外、物理上在 片内外的扩展RAM(16位地址)中,写操作
§4.5.1 数据传送类指令(29条)----数据传送(22条) 数据传送(22条) 数据交换(5条) 栈操作(2条) 7 19:12:56
§451数据传送类指令(29条)-栈操作(2条)-数据交换(5条) 助记符 功能说明 Push direct 直接地址单元中的数据压入堆栈 pop direct 栈底数据弹出送入直接地址单元 ⅩCHA,Rn 寄存器与累加器交换 XCH A direct直接地址单元与累加器交换 ⅩCHA,@Ri 间接RM与累加器交换 XCHD A@Ri 间接RM的低半字节与累加器交换 SWAP A 累加器内高低半字节交换 SWAP A也可分类到“对累加器A进行的逻辑操作” 数据传送类指令共8个助记符 9s:71618
§4.5.1 数据传送类指令(29条) --栈操作(2条) --数据交换(5条) 数据传送(22条) 数据交换(5条) 栈操作(2条) 8 19:12:56 SWAP A 也可分类到“对累加 器A进行的逻辑操作” 数据传送类指令共 8个助记符
4.5.1.1数据传送指令(22条) 1、MOV指令(16条) 2、MOVX指令(4条) 3、MOVC指令(2条) 1、MOV指令 ◇MOⅴ指令作用区间:内部数据存储器和特殊功能寄存器 ◇使用方法 ◆利用Rn可直接访问某工作寄存器; ◆利用aR可间接寻址内部数据RAM的某一字节单元; ◆直接寻址则可遍访问内部数据RAM(00H~7FH)和特殊 功能寄存器空间。 9s:71616
4.5.1.1 数据传送指令(22条) 1、MOV指令(16条) 2、MOVX指令(4条) 3、MOVC指令 (2条) 9 19:12:56 1、MOV指令 MOV指令作用区间: 内部数据存储器和特殊功能寄存器 使用方法 利用Rn可直接访问某工作寄存器; 利用@Ri可间接寻址内部数据RAM的某一字节单元; 直接寻址则可遍访问内部数据RAM(00H~7FH)和特殊 功能寄存器空间
1、MOV指令(16条) ◆双操作数的数据传送指令允许在工作寄存器、内部 数据RAM、累加器A和特殊功能寄存器(SFR任意两 个之间传送一个字节的数据,而且立即操作数能送 入上述任何单元中。 ◆利用MOV指令还可以把16bit的立即数直接送入数据 指针DPTR中。 ◇格式:MOV目的字节,源字节 ◇功能:把源操作数指定的字节变量传送到目的操作数 指定的单元中,源字节内容不变。MOV指令一般不 影响别的寄存器或标志。 (注:A为目的操作数时,影响PSW的奇偶标志位P 019:12:56
1、MOV指令(16条) 双操作数的数据传送指令允许在工作寄存器、内部 数据RAM、累加器A和特殊功能寄存器(SFR)任意两 个之间传送一个字节的数据,而且立即操作数能送 入上述任何单元中。 利用MOV指令还可以把16bit的立即数直接送入数据 指针DPTR中。 格式:MOV 目的字节, 源字节 功能:把源操作数指定的字节变量传送到目的操作数 指定的单元中,源字节内容不变。MOV指令一般不 影响别的寄存器或标志。 10 19:12:56 (注: A为目的操作数时, 影响PSW的奇偶标志位P。)
1、MOV指令(16条) ◆双操作数的数据传送指令允许在工作寄存器、内部数 据RAM、累加器A和特殊功能寄存器(SFR)任意两个 之间传送一个字节的数据,而且立即操作数能送入上 述任何单元中。附录B指令列表按目的操作数分类 (1)立即数送累加器A和Rn、内部RAM、SFR送(4条) (2)Rn、内部RAM、SFR与累加器A传送数据送(6条) (3)Rn、SFR和内部数据RAM之间的数据传送送(5条) (4)目标地址传送(条: MOV DPTR,#data16 19:12:56
1、MOV指令(16条) 双操作数的数据传送指令允许在工作寄存器、内部数 据RAM、累加器A和特殊功能寄存器(SFR)任意两个 之间传送一个字节的数据,而且立即操作数能送入上 述任何单元中。 11 19:12:56 (2)Rn、内部RAM、SFR与累加器A传送数据送 (6条) (1) 立即数送累加器A和Rn、内部RAM、SFR送 (4条) (3)Rn、SFR和内部数据RAM之间的数据传送送 (5条) (4)目标地址传送 (1条): MOV DPTR , #data16 附录 E指令列表按目的操作数分类
(1)立即数送累加器A和Rn、内部RAM、SFR MOV A. #data8 :A<#data 8 MOV addr, #data8 addr8)+#data8 direct. MOV aRi, #data8 (Ri)#data8 addre MO Rn. #data8 Rnt#data8 是间接寻址,(Ri表示由Ri(i=0,1)寄存器值所指出RAM单元。 例:MOVR0,#60H:将立即数60H送到寄存器R0中 MOV aR0,#56H;将56H送到R0间接寻址的单元(地址60H)中 ◇用直接寻址( direct或adr8)可把立即数送入低128字节 内部RAM任意单元或任一特殊功能寄存器: 例:MOV20H,#56H;将立即数56H送入20H单元中 MovP1,#80H;把80H直接送入P口(口地址为90H中 寻 19:12:56
(1) 立即数送累加器A和Rn、内部RAM、SFR MOV A, #data8 ;A← #data8 MOV addr8,#data8 ;(addr8)← #data8 MOV @Ri, #data8 ;(Ri)← #data8 12 19:12:56 @是间接寻址, (Ri)表示由Ri(i=0,1)寄存器值所指出RAM单元。 例: MOV R0, #60H ;将立即数60H送到寄存器R0中 MOV @R0, #56H ;将56H送到R0间接寻址的单元(地址60H)中 用直接寻址(direct或addr8)可把立即数送入低128字节 内部RAM任意单元或任一特殊功能寄存器: 例: MOV 20H, #56H ;将立即数56H送入20H单元中 MOV P1, #80H ;把80H直接送入P1口(口地址为90H)中 MOV Rn, #data8 ;Rn← #data8 direct: addr8 直接寻址
1、MOV指令(16条) (2)Rn、内部RAM、SFR与累加器A传送数据。 有6条指令: MOV A, addr A(addre) MOV A Ri ;A←(Ri) MOV A. Rn A←Rn MOV addr8,A;(adr8)←A MOV ORi A (Ri)←A MOV Rn. A Rn←A 19:12:56
1、MOV指令(16条) (2)Rn、内部RAM、SFR与累加器A传送数据。 13 19:12:56 有6条指令: MOV A, addr8 ;A←(addr8) MOV A, @Ri ;A← (Ri) MOV A, Rn ;A← Rn MOV addr8, A ;(addr8)← A MOV @Ri, A ;(Ri)← A MOV Rn, A ;Rn←A