1、 计算机硬件技术基础计算机硬件技术基础计算机科学与软件学院计算机基础教学部计算机科学与软件学院计算机基础教学部计算机科学与软件学院计算机基础教学部计算机科学与软件学院计算机基础教学部专题四专题四 MCS-51指令系统指令系统 第三章第三章本专题是全书的重点,本专题是全书的重点,本专题是全书的重点,本专题是全书的重点,是汇编语言程序设计的基础。是汇编语言程序设计的基础。是汇编语言程序设计的基础。是汇编语言程序设计的基础。学习指令系统重点要掌握以下几点:学习指令系统重点要掌握以下几点:1 1 1 1、指令功能、指令功能、指令功能、指令功能 2 2 2 2、寻址方式、寻址方式、寻址方式、寻址方式 3
2、 3 3 3、操作数的位数和存储结构、操作数的位数和存储结构、操作数的位数和存储结构、操作数的位数和存储结构 4 4 4 4、对、对、对、对PSWPSWPSWPSW的影响的影响的影响的影响 5 5 5 5、指令与存储区的对应关系指令与存储区的对应关系指令与存储区的对应关系指令与存储区的对应关系 6 6 6 6、各类指针及其指向的地址范围、各类指针及其指向的地址范围、各类指针及其指向的地址范围、各类指针及其指向的地址范围 7 7 7 7、转移指令的转移范围、转移指令的转移范围、转移指令的转移范围、转移指令的转移范围 8 8 8 8、指令字节数和机器周期数、指令字节数和机器周期数、指令字节数和机器
3、周期数、指令字节数和机器周期数 本章主要介绍单片机的寻址方式及指令系统,本章主要介绍单片机的寻址方式及指令系统,是必须掌握的内容。是必须掌握的内容。一台计算机所有指令的集合,一台计算机所有指令的集合,称为该计算机的称为该计算机的指令系统。指令系统。各种计算机都有专用的指令系统。各种计算机都有专用的指令系统。学时分配:学时分配:2 2学时学时 153+97+98+99 153+97+98+99 2 2学时学时 5496 100 5496 100 第三章第三章 单片机的指令系统单片机的指令系统3.1 MCS-51 指令系统概述指令系统概述3.1.1 指令格式指令格式 3.1.2 指令字长和指令周期
4、指令字长和指令周期 3.1.3 指令分类指令分类 汇编语言汇编语言指令格式指令格式机器语言机器语言指令格式指令格式3.1.1 指令格式指令格式一条用助记符表示的汇编语言指令一条用助记符表示的汇编语言指令操作码操作码操作数操作数指令的功能指令的功能指令的功能指令的功能指令的操指令的操指令的操指令的操作对象作对象作对象作对象 ADD A ADD A,#10H#10H ;ADDADD为操作码,为操作码,为操作码,为操作码,AA及及及及#10#10HH为操作数为操作数为操作数为操作数 汇编语言指令汇编语言指令汇编语言指令格式汇编语言指令格式标号:操作码助记符标号:操作码助记符标号:操作码助记符标号:操
5、作码助记符 目的目的目的目的操作数操作数操作数操作数,源源源源操作数操作数操作数操作数;注释;注释;注释;注释例如:例如:例如:例如:LoopLoop:MOV A,R0;(R0)-(A)MOV A,R0;(R0)-(A)机器语言指令格式机器语言指令格式双字节:双字节:单字节:单字节:操作码操作码操作码操作码操作码操作码操作码操作码 操作数或寻址方式操作数或寻址方式操作数或寻址方式操作数或寻址方式操作码操作码操作码操作码操作数或寻址方式操作数或寻址方式操作数或寻址方式操作数或寻址方式三字节:三字节:操作码操作码操作码操作码操作数或寻址方式操作数或寻址方式操作数或寻址方式操作数或寻址方式操作数或寻
6、址方式操作数或寻址方式操作数或寻址方式操作数或寻址方式例:例:例:例:ADD A ADD A,#10H#10H 或或指令字长有三种:指令字长有三种:单字节单字节 RET 双字节双字节 MOV A,#68H 三字节三字节 MOV 30H,46H3.1.2 指令字长和指令周期指令字长和指令周期指令周期是指执行一条指令所需要的时间指令周期是指执行一条指令所需要的时间 1 机器周期指令机器周期指令 2 机器周期指令机器周期指令 4 机器周期指令机器周期指令P318附录附录II 附表附表13.1.3 指令分类指令分类 按按按按 指指指指 令令令令 功功功功 能能能能 分分分分类类类类 按指令字长分类按指
7、令字长分类按指令字长分类按指令字长分类 按指令执行时间分类按指令执行时间分类按指令执行时间分类按指令执行时间分类 3.2 寻址方式寻址方式寻址方式:寻址方式:7种种寄存器寻址寄存器寻址寄存器寻址寄存器寻址直接寻址直接寻址直接寻址直接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址立即寻址立即寻址立即寻址立即寻址变址间接寻址变址间接寻址变址间接寻址变址间接寻址相对寻址相对寻址相对寻址相对寻址位寻址位寻址位寻址位寻址寻址方式与寻址空间寻址方式与寻址空间寻址方式与寻址空间寻址方式与寻址空间MCS-51MCS-51单片机的两个突出特点单片机的两个突出特点单片机的两个突出特点单片机的两个突出
8、特点寄存器寻址寄存器寻址操作数存放在寄存器中操作数存放在寄存器中MOV MOV AA,R0R0MOV MOV R0R0,#01001111B,#01001111B 工作寄存器(工作寄存器(工作寄存器(工作寄存器(0000H1FH)H1FH)RS1 RS0 RS1 RS0 寄存器组寄存器组寄存器组寄存器组 片内片内片内片内RAMRAM地址地址地址地址 寄存器寄存器寄存器寄存器 0 0 0 0 第第第第0 0组组组组 00 00HH07H R007H R0R7R7 0 1 0 1 第第第第1 1组组组组 08 08HH0FH R00FH R0R7R7 1 0 1 0 第第第第2 2组组组组 10
9、10HH17H R017H R0R7R7 1 1 1 1 第第第第3 3组组组组 18 18HH1FH R01FH R0R7R7 SETB RS0SETB RS0MOV MOV R3R3,#56H,#56H寄存器为寄存器为寄存器为寄存器为 R0R7R0R7,AA,DPTRDPTR,CC 例如:例如:例如:例如:MOV A MOV A,R3 ;R3 ;机器码为机器码为机器码为机器码为 0 0EBHEBH 指令功能是把当前指令功能是把当前指令功能是把当前指令功能是把当前R3R3中的操作数送累加器中的操作数送累加器中的操作数送累加器中的操作数送累加器A A。指令执行示意图如图指令执行示意图如图指令执
10、行示意图如图指令执行示意图如图3 36 6所示。设(所示。设(所示。设(所示。设(R3R3)=12H=12H直接寻址直接寻址指令中直接给出操作数的地址指令中直接给出操作数的地址功能最强,可访问功能最强,可访问功能最强,可访问功能最强,可访问种地址空间种地址空间种地址空间种地址空间内部数据存储器地址空间():内部数据存储器地址空间():内部数据存储器地址空间():内部数据存储器地址空间():MOV MOV A,00H A,00H MOV 30H,20H MOV 30H,20H特殊功能寄存器地址空间,唯一方式特殊功能寄存器地址空间,唯一方式特殊功能寄存器地址空间,唯一方式特殊功能寄存器地址空间,唯
11、一方式 MOV A,90H MOV A,90H MOV A,B MOV A,B位地址空间位地址空间位地址空间位地址空间 MOV C,00HMOV C,00H 例:例:MOV A ,30H;机器码为机器码为E530H 指指令令功功能能是是把把直直接接地地址址30H单单元元的的内内容容送累加器送累加器A,即即(30H)(A)如图如图31所示。所示。34H34H34H34H寄存器间接寻址寄存器间接寻址将指定的寄存器的内容为地址,由该地将指定的寄存器的内容为地址,由该地址所指定的单元内容作为操作数。址所指定的单元内容作为操作数。mov A,R00102033030HH31H31H32H32H(R0)=
12、31H(R0)=(31H)(A)=02H指针指针例如:例如:例如:例如:MOV A MOV A,R1;R1;机器码机器码机器码机器码 E7HE7H 设设设设(R1R1)=60H=60H,(60H60H)=50H=50H,执执执执行行行行结结结结果果果果(A A)=50H,=50H,该指令执行过程如图该指令执行过程如图该指令执行过程如图该指令执行过程如图3 34 4所示。所示。所示。所示。立即寻址立即寻址在指令中直接给出操作数在指令中直接给出操作数例:例:例:例:MOV A,MOV A,#7Ah;747AH7Ah;747AH把立即数把立即数把立即数把立即数7 7AHAH送累加器送累加器送累加器送
13、累加器A A,指令执行示意图如图指令执行示意图如图指令执行示意图如图指令执行示意图如图3-23-2所示。所示。所示。所示。例例:MOV DPTR,#1234h (DPH)=12H (DPL)=34H注意:注意:立即数前加立即数前加“#”号,以区别直接地址。号,以区别直接地址。例如:例如:MOV A,#30H;(A)30H MOV A,30H;(A)(30H)变址间接寻址变址间接寻址基址寄存器变址寄存器的基址寄存器变址寄存器的间接寻址方式间接寻址方式DPTR/PC A MOVC A,A+DPTR (A)(DPTR)+(A)MOVC A,A+PC (A)(PC)+(A)JMP A+DPTR (PC
14、)=(A)+(DPTR)MOVC A,A+PC;83H 设执行指令之前(设执行指令之前(A)=50H 指令功能是把该指令指令功能是把该指令当前地址当前地址PC值值与与A累加器内容相加形成操作码地址累加器内容相加形成操作码地址3F51H,3F51H中的内容中的内容37H送送A累加器。累加器。PCPC当前值当前值当前值当前值相对寻址相对寻址以当前的以当前的PC值为基准,加上指令中给出值为基准,加上指令中给出的相对偏移量的相对偏移量(rel)形成有效的转移地址。形成有效的转移地址。jc Loop;jcLoopLoop:rell lrel补码补码补码补码-128-128,127127JC rel;40
15、85H 设设rel=85H,Cy=1目标地址目标地址目标地址目标地址PCPC当前当前当前当前值值值值位寻址位寻址 bit位寻址范围:位寻址范围:1、内内部部RAM的的位位寻寻址址区区,共共16个个单单元元的的128位位,字字节节地地址址为为20H2FH,位位地地址址为为00H7FH。可可用用直直接接位位地地址址或或字字节节地地址址加加位位的的表表示方法。示方法。例如:例如:MOV C,7AH或或 MOV C,2FH2 2 2、特殊功能寄存器、特殊功能寄存器、特殊功能寄存器、特殊功能寄存器SFRSFR可供位寻址的专用寄存器共可供位寻址的专用寄存器共可供位寻址的专用寄存器共可供位寻址的专用寄存器共
16、1111个,个,个,个,实有位地址位实有位地址位实有位地址位实有位地址位8383位。位地址有位。位地址有位。位地址有位。位地址有4 4种表达方式种表达方式种表达方式种表达方式 。以对程序状态寄存器以对程序状态寄存器以对程序状态寄存器以对程序状态寄存器PSWPSW辅助进位位辅助进位位辅助进位位辅助进位位ACAC进行操作为例:进行操作为例:进行操作为例:进行操作为例:PSW Cy PSW Cy AC AC F0 RSF0 RS1 1 RSRS0 0 OV POV P D0HD0H D7H D6H D0H D7H D6H D0H1 1)直接使用位地址直接使用位地址直接使用位地址直接使用位地址 3 3
17、)单元地址加位的表示法单元地址加位的表示法单元地址加位的表示法单元地址加位的表示法 MOV C MOV C,0D6H 0D6H MOV C MOV C,0D0H0D0H6 62 2)位名称表示法位名称表示法位名称表示法位名称表示法 4 4)专用寄存器符号加位的表示法专用寄存器符号加位的表示法专用寄存器符号加位的表示法专用寄存器符号加位的表示法 MOV C MOV C,AC AC MOV C MOV C,PSWPSW6 6 寻址方式寻址方式寻址方式寻址方式寻址空间寻址空间寻址空间寻址空间寄存器寻址寄存器寻址寄存器寻址寄存器寻址R0R7R0R7A A、ABAB、CYCY、DPTRDPTR直接寻址直
18、接寻址直接寻址直接寻址内部内部内部内部RAM 00H7FHRAM 00H7FH特殊功能寄存器特殊功能寄存器特殊功能寄存器特殊功能寄存器SFRSFR 80H0FFH 80H0FFH内部内部内部内部RAMRAM中中中中2020H2FHH2FH单元的单元的单元的单元的128128个位地址个位地址个位地址个位地址SFRSFR中中中中8383个有效个有效个有效个有效位地址位地址位地址位地址 80 80H0FFHH0FFH寄存器寄存器寄存器寄存器间接寻址间接寻址间接寻址间接寻址内部内部内部内部RAM 00H7FH (R0 RAM 00H7FH (R0、R1R1、SP)SP)外部外部外部外部RAMRAM或外
19、部或外部或外部或外部I/OI/O口口口口 0000 0000H0FFFFHH0FFFFH(R0(R0、R1R1、DPTR)DPTR)立即寻址立即寻址立即寻址立即寻址程序存储器程序存储器程序存储器程序存储器基址基址基址基址+变址变址变址变址寄间寻址寄间寻址寄间寻址寄间寻址程序存储器(程序存储器(程序存储器(程序存储器(A+DPTRA+DPTR、A+PC)A+PC)寻址方式与寻址空间寻址方式与寻址空间1 1、内部数据存储器的寻址方式、内部数据存储器的寻址方式、内部数据存储器的寻址方式、内部数据存储器的寻址方式 1 1)0000HH1FH1FH 寄存器寻址寄存器寻址寄存器寻址寄存器寻址 4 4组组组
20、组R0 R0 R7 R7 RnRn 直接寻址直接寻址直接寻址直接寻址 direct 寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 R0,R1R0,R1 例例例例:(0101HH)(02H02H)MOV 02H,01H ;MOV 02H,01H ;源寻址和目的寻址均为直接寻址源寻址和目的寻址均为直接寻址源寻址和目的寻址均为直接寻址源寻址和目的寻址均为直接寻址 MOV MOV R2R2,01H ;,01H ;源寻址为直接寻址,目的寻址为寄存器寻址源寻址为直接寻址,目的寻址为寄存器寻址源寻址为直接寻址,目的寻址为寄存器寻址源寻址为直接寻址,目的寻址为寄存器寻址 MOV MOV R0R0,
21、#01H,#01H MOV 02H,MOV 02H,R0R0;源寻址为寄存器间接寻址,源寻址为寄存器间接寻址,源寻址为寄存器间接寻址,源寻址为寄存器间接寻址,目的寻址为直接寻址目的寻址为直接寻址目的寻址为直接寻址目的寻址为直接寻址内部数据存储器与内部内部数据存储器与内部I/OI/O口统一编址口统一编址2)20H 2FH 可可位寻址区的寻址方式位寻址区的寻址方式 字节寻址字节寻址方式:方式:直接寻址直接寻址 direct 寄存器间接寻址寄存器间接寻址R0,R1 位寻址位寻址:bit 直接寻址直接寻址例:例:MOV 26H,C;位寻址位寻址 (26H)1位位 MOV 26H,A;字节寻址(字节寻址
22、(26H)8位位 3)30H 7FH 数据缓冲区的寻址方式数据缓冲区的寻址方式 字节寻址字节寻址方式:方式:直接寻址直接寻址 direct 寄存器间接寻址寄存器间接寻址R0,R1例:例:MOV 56H,A;字节寻址(字节寻址(56H)8位位 MOV R0,#66H MOV R0,#56H 可以将用户堆栈设在该区内,堆栈指针可以将用户堆栈设在该区内,堆栈指针SP 2、SFR 及及I/O口的操作口的操作只能直接寻址只能直接寻址 例:例:P1 口口 90H MOV A,90H MOV A,P1 MOV P1,A3、关于关于A累加器有两种寻址方式:累加器有两种寻址方式:MOV A,#23H ;A寄存器
23、寻址寄存器寻址 PUSH ACC POP 0E0H;直接寻址直接寻址统统一一编编址址4、可做片内、可做片内RAM的指针有:的指针有:R0R0,R1R1,四个组共有四个组共有四个组共有四个组共有8 8个个个个 预先设置预先设置预先设置预先设置RS1RS1、RS0RS0,以选定组。以选定组。以选定组。以选定组。SETB RS0SETB RS0 CLR RS1;1 CLR RS1;1组组组组 MOV R0,#34H MOV R0,#34H ;R0R0的地址是?的地址是?的地址是?的地址是?SETB RS1 ;3SETB RS1 ;3组组组组 MOV R0,#68H ;R0MOV R0,#68H ;R
24、0的地址是?的地址是?的地址是?的地址是?R0/R1指向的地址范围:指向的地址范围:00H7FH 片外数据存储区和外部扩展的片外数据存储区和外部扩展的I/O口的寻址方式口的寻址方式指针:指针:指针:指针:R0,R1 8R0,R1 8位位位位 DPTR 16DPTR 16位位位位指令助记符:指令助记符:指令助记符:指令助记符:MOVX MOVX 例:例:例:例:MOV DPTR,MOV DPTR,#2000H#2000H MOV A,#34H MOV A,#34H MOVX MOVX DPTRDPTR,A,AMOV MOV P2 P2,#20H,#20HMOV MOV R0R0,#00H,#00
25、HMOV A,#34HMOV A,#34HMOVX R0MOVX R0,A,A外部数据存储器的地址,或外部数据存储器的地址,或外部数据存储器的地址,或外部数据存储器的地址,或I/OI/O口的地址口的地址口的地址口的地址 16 16位位位位只能寄存器间接寻址只能寄存器间接寻址高高高高8 8位地址位地址位地址位地址低低低低8 8位地址位地址位地址位地址统统一一编编址址R0/R1R0/R1指向的地址范围:指向的地址范围:指向的地址范围:指向的地址范围:00 00H0FFHH0FFH3.3 MCS-51 单片机的指令系统单片机的指令系统指令描述符号简介指令描述符号简介指令分类:指令分类:数据传送类指令
26、数据传送类指令(29)传送类指令举例传送类指令举例传送类指令举例传送类指令举例算术运算类指令算术运算类指令(24)逻辑运算类指令逻辑运算类指令(24)控制转移类指令控制转移类指令(17)布尔处理类指令布尔处理类指令(17)指令描述符号(指令描述符号(1)P68RnRn-R0R7-R0R7 工作寄存器工作寄存器工作寄存器工作寄存器R R0 0R R7 7,n=0n=07 7 direct-direct-8 8位直接地址位直接地址位直接地址位直接地址,表示直接寻址方式表示直接寻址方式表示直接寻址方式表示直接寻址方式 RiRi-只能是只能是只能是只能是R0R0或或或或R1R1,所以所以所以所以i=0
27、i=0,1 1#data-#data-8 8位立即数,数据范围位立即数,数据范围位立即数,数据范围位立即数,数据范围0000HHFFHFFH#data16#data16-1616位立即数,位立即数,位立即数,位立即数,数据范围数据范围数据范围数据范围00000000HHFFFFHFFFFH addr16-addr16-1616位目标地址位目标地址位目标地址位目标地址 addr11-addr11-低低低低1111位目标地址位目标地址位目标地址位目标地址 指令描述符号(指令描述符号(2)rel rel 8 8位带符号地址偏移量位带符号地址偏移量位带符号地址偏移量位带符号地址偏移量,-128-128
28、,127127补码补码补码补码bit bit 位地址位地址位地址位地址$当前指令地址当前指令地址当前指令地址当前指令地址 ()()()()数据传送类指令数据传送类指令(1)(1)内部内部A累加器累加器direct直接直接寻址寻址Ri间接间接寻址寻址Rn寄存器寄存器data立即数立即数数据传送类指令数据传送类指令(2)movmov A A,RnRn;(A);(A)(RnRn)n=07)n=07movmov A A,direct;(A),direct;(A)(directdirect)movmov A A,RiRi;(A)(A)(RiRi)i=0,1)i=0,1movmov A A,#data;(
29、A),#data;(A)#data#data mov mov RnRn,A;(,A;(RnRn)(A)(A)mov mov RnRn,direct;(,direct;(RnRn)(directdirect)mov mov RnRn,#,#data;data;(RnRn)#data#data 数据传送类指令数据传送类指令(3)movmov directdirect,A;(direct),A;(direct)(A)(A)movmov directdirect,RnRn;(direct);(direct)(RnRn)n=07n=07movmov direct,direct,direct;(direc
30、t)direct;(direct)(directdirect)movmov directdirect,RiRi;(direct)(direct)(RiRi)i=0,1i=0,1movmov direct,direct,#data;(direct)#data;(direct)#data#data movmov RiRi,A;,A;(RiRi)(A)(A)movmov RiRi,direct;(,direct;(RiRi)(directdirect)movmov RiRi,#,#data ;data ;(RiRi)#data#data MOV R1,R0MOV R1,R0MOV R3,R0MOV
31、R3,R0MOV R1,R0MOV R1,R0MOV R1,R0MOV R1,R0数据传送类指令数据传送类指令(4)交换指令交换指令xchxch A,A,RnRn;(A)(A)(RnRn)n=07)n=07xchxch A,direct;(A)A,direct;(A)(direct)direct)xchxch A,A,RiRi;(A)(A)(RiRi)i=0,1)i=0,1xchd xchd A,A,RiRi;(;(A A 0303 )(RiRi)0303)swap A;(A swap A;(A 0303)(A A 4747 )pop direct;pop direct;(direct)(di
32、rect)(sp),(sp)(sp),(sp)(sp)-(sp)-1 1push direct;(sp)push direct;(sp)(sp)+1,(sp)(sp)+1,(sp)(direct)(direct)数据传送类指令数据传送类指令(5)堆栈操作堆栈操作1 1、堆栈、堆栈、堆栈、堆栈 一种数据结构,是一种数据结构,是一种数据结构,是一种数据结构,是“先进后出先进后出先进后出先进后出”线性表。线性表。线性表。线性表。2 2、堆栈操作:、堆栈操作:、堆栈操作:、堆栈操作:压入压入压入压入 PUSH PUSH,弹出弹出弹出弹出 POP POP 3 3、堆栈区:堆栈区:堆栈区:堆栈区:占片内占
33、片内占片内占片内RAM RAM 中连续的存储单元中连续的存储单元中连续的存储单元中连续的存储单元 复位后,系统自动将复位后,系统自动将复位后,系统自动将复位后,系统自动将SPSP指针指向指针指向指针指向指针指向0707HH 用户可将堆栈区设在用户可将堆栈区设在用户可将堆栈区设在用户可将堆栈区设在3030H7FHH7FH数据缓冲区内,数据缓冲区内,数据缓冲区内,数据缓冲区内,MOV SP,#5FHMOV SP,#5FH 堆栈有两种类型:堆栈有两种类型:堆栈有两种类型:堆栈有两种类型:向向向向上上上上生长型和向生长型和向生长型和向生长型和向下下下下生长型,如图生长型,如图生长型,如图生长型,如图2
34、-52-5所示。所示。所示。所示。向上向上向上向上生长型堆栈,栈底在生长型堆栈,栈底在生长型堆栈,栈底在生长型堆栈,栈底在低地址低地址低地址低地址单元。随着单元。随着单元。随着单元。随着数据进栈,地址递增,数据进栈,地址递增,数据进栈,地址递增,数据进栈,地址递增,SP SP 的内容越来越大,指针上移;的内容越来越大,指针上移;的内容越来越大,指针上移;的内容越来越大,指针上移;反之,随着数据的出栈,地址递减,反之,随着数据的出栈,地址递减,反之,随着数据的出栈,地址递减,反之,随着数据的出栈,地址递减,SPSP的内容越来越的内容越来越的内容越来越的内容越来越小,指针下移。如小,指针下移。如小
35、,指针下移。如小,指针下移。如(b)b)图所示。图所示。图所示。图所示。栈顶栈顶栈顶栈顶栈顶栈顶栈顶栈顶 MCS-51属属向向上上生生长长型型堆堆栈栈,这这种种堆栈的操作规则如下:堆栈的操作规则如下:进栈操作:先进栈操作:先SP加加1,后写入数据。,后写入数据。出栈操作:先读出数据,出栈操作:先读出数据,SP减减1。向向向向下下下下生生生生长长长长型型型型堆堆堆堆栈栈栈栈,栈栈栈栈底底底底设设设设在在在在高高高高地地地地址址址址单单单单元元元元。随随随随着着着着数数数数据据据据进进进进栈栈栈栈,地地地地址址址址递递递递减减减减,SPSP内内内内容容容容越越越越来来来来越越越越小小小小,指指指指
36、针针针针下下下下移移移移;反反反反之之之之,随随随随着着着着数数数数据据据据的的的的出出出出栈栈栈栈,地地地地址址址址递递递递增增增增,SPSP内内内内容容容容越越越越来来来来越越越越大大大大,指指指指针针针针上上上上移移移移。其其其其堆堆堆堆栈栈栈栈操操操操作作作作规规规规则则则则与与与与向向向向上上上上生生生生长型正好相反。如(长型正好相反。如(长型正好相反。如(长型正好相反。如(a a)图所示。图所示。图所示。图所示。堆栈的使用有两种方式:堆栈的使用有两种方式:一一一一种种种种是是是是自自自自动动动动方方方方式式式式,即即即即在在在在调调调调用用用用子子子子程程程程序序序序或或或或断断断
37、断点点点点时时时时,断断断断点点点点地地地地址址址址自自自自动动动动进进进进栈栈栈栈。程程程程序序序序返返返返回回回回时时时时,断断断断点点点点地地地地址址址址再再再再自自自自动动动动弹弹弹弹回回回回PCPC。这种操作无需用户干预。这种操作无需用户干预。这种操作无需用户干预。这种操作无需用户干预。另另另另一一一一种种种种是是是是指指指指令令令令方方方方式式式式,即即即即使使使使用用用用专专专专用用用用的的的的堆堆堆堆栈栈栈栈操操操操作作作作指指指指令令令令,执执执执行行行行进进进进出出出出栈栈栈栈操操操操作作作作,其其其其进进进进栈栈栈栈指指指指令令令令为为为为PUSHPUSH,出出出出栈栈栈
38、栈指指指指令令令令为为为为POPPOP。例如:例如:例如:例如:保护现场就是一系列指令方式的进栈操作;保护现场就是一系列指令方式的进栈操作;保护现场就是一系列指令方式的进栈操作;保护现场就是一系列指令方式的进栈操作;而恢复现场则是一系列指令方式的出栈操作。而恢复现场则是一系列指令方式的出栈操作。而恢复现场则是一系列指令方式的出栈操作。而恢复现场则是一系列指令方式的出栈操作。需要保护多少数据由用户决定。需要保护多少数据由用户决定。需要保护多少数据由用户决定。需要保护多少数据由用户决定。MOV SP,#_HPOP 01HPOP 01HPOP PSWPOP PSWPOP ACCPOP ACCPUSH
39、 PUSH ACC ACCPUSH PSWPUSH PSWPUSH 01HPUSH 01H保护现场:保护现场:保护现场:保护现场:恢复现场:恢复现场:恢复现场:恢复现场:.必须用必须用direct,采用直接寻址方式采用直接寻址方式数据传送类指令数据传送类指令(6)外部外部movxmovx A,A,Ri Ri;(A)(A)(RiRi)i=0,1)i=0,1 movxmovx A,DPTR;(A)A,DPTR;(A)(DPTRDPTR)movxmovx RiRi,A,A;(;(RiRi)(A)(A)movxmovx DPTR,A;DPTR,A;(DPTRDPTR)(A)(A)movcmovc A,
40、A+DPTR;(A)A,A+DPTR;(A)(A)+(DPTR)(A)+(DPTR)movc movc A,A+PC;(PC)A,A+PC;(PC)(PC)+1,(PC)+1,(A)(A)(A)+(PC)(A)+(PC)movmov DPTR,#data16;(DPTR)DPTR,#data16;(DPTR)#data16#data16内部内部内部内部1616位位位位外外外外部部部部数数数数据据据据外部外部外部外部程序程序程序程序传送类指令举例:传送类指令举例:例例例例3 311已已已已知知知知(R0R0)=30H=30H,问问问问执执执执行行行行如如如如下下下下程程程程序序序序,A A、R4
41、R4、30H30H和和和和3131HH单元的内容是什么。单元的内容是什么。单元的内容是什么。单元的内容是什么。MOV A MOV A,#10H#10HMOV R4 MOV R4,#36H#36HMOV R0 MOV R0,#7AH#7AHMOV 31H MOV 31H,#01H#01H解:解:解:解:80318031执行上述指令后的结果为:执行上述指令后的结果为:执行上述指令后的结果为:执行上述指令后的结果为:(A A)=10H=10H(R4R4)=36H=36H(30H30H)=7AH=7AH(31H31H)=01H=01H 例例例例3 322设设设设内内内内部部部部RAMRAM中中中中30
42、30HH单单单单元元元元的的的的内内内内容容容容为为为为4040H H,40H40H单单单单元元元元的的的的内内内内容容容容为为为为1010HH,P1P1口口口口作作作作输输输输入入入入口口口口,其其其其输输输输入入入入数数数数据据据据为为为为0 0CAHCAH,程程程程序序序序及及及及执执执执行行行行后的结果如下:后的结果如下:后的结果如下:后的结果如下:MOV R0MOV R0,#30H#30H ;单元地址单元地址单元地址单元地址3030HH送送送送R0R0中中中中MOV A MOV A ,R0 R0 ;R0 R0 间址,将间址,将间址,将间址,将3030HH单元内容送单元内容送单元内容送
43、单元内容送A AMOV R1 MOV R1,A A ;A A送送送送R1R1MOV B MOV B,R1R1 ;R1R1间址,将间址,将间址,将间址,将4040HH单元内容送单元内容送单元内容送单元内容送B BMOV R1MOV R1,P P 1 1 ;将将将将P1P1内容送内容送内容送内容送4040HH单元单元单元单元MOV P2 MOV P2,P1 P1 ;将将将将P1P1内容送内容送内容送内容送P2P2 执执执执行行行行结结结结果果果果:(R0)=30H R0)=30H,(R1R1)=40H=40H,(A A)=40H=40H,(B B)=10H=10H,(P1P1)=0CAH =0CA
44、H (40H40H)=0CAH=0CAH,(P2)=0CAH(P2)=0CAH 例例例例3 333已已已已知知知知片片片片外外外外RAM RAM 的的的的7070HH单单单单元元元元中中中中的的的的一一一一个个个个数数数数X X,需需需需送送送送到到到到片片片片外外外外RAMRAM的的的的 1010 1010HH单元,试编写程序。单元,试编写程序。单元,试编写程序。单元,试编写程序。解:解:解:解:ORG 1000HORG 1000H MOV R0 MOV R0,#70H#70H MOV DPTR MOV DPTR,#1010H#1010H MOVX MOVX A A,R0R0 MOVX MO
45、VX DPTR DPTR,AA SJMP$SJMP$END END 外部外部外部外部RAMRAM之间不能直接传之间不能直接传之间不能直接传之间不能直接传送数据送数据送数据送数据,必须通必须通必须通必须通过累加器过累加器过累加器过累加器AA传送传送传送传送 MOVX DPTR,R0MOVX DPTR,R0 例例例例3 355 设设设设(3030HH)=X=X,(40H40H)=Y=Y,试试试试利利利利用用用用堆堆堆堆栈栈栈栈区区区区域实现域实现域实现域实现3030HH和和和和4040HH单元中的数据交换。单元中的数据交换。单元中的数据交换。单元中的数据交换。解解解解:堆堆堆堆栈栈栈栈区区区区是是
46、是是片片片片内内内内RAMRAM的的的的一一一一个个个个数数数数据据据据区区区区,进进进进栈栈栈栈和和和和出出出出栈栈栈栈的数据符合的数据符合的数据符合的数据符合“先进后出先进后出先进后出先进后出”的原则。的原则。的原则。的原则。MOV SP MOV SP ,#50H#50H;设栈底(栈底不存数)设栈底(栈底不存数)设栈底(栈底不存数)设栈底(栈底不存数)PUSH 40H PUSH 40H ;(;(;(;(51H51H)(40H40H)PUSH 30H PUSH 30H ;(;(;(;(52H52H)(30H30H)POP 40H POP 40H ;(;(;(;(40H40H)(52H52H)
47、POP 30H POP 30H ;(;(;(;(30H30H)(51H51H)例例例例3 366 已已已已知知知知外外外外部部部部RAM RAM 20202020HH单单单单元元元元中中中中有有有有一一一一个个个个数数数数X X,内内内内部部部部RAM RAM 20H20H单单单单元元元元一一一一个个个个数数数数Y Y,试试试试编编编编出出出出可可可可以以以以使使使使它它它它们们们们互互互互相相相相交交交交换换换换的的的的程程程程序。序。序。序。解:解:解:解:MOV P2MOV P2,#2020H H MOV R1 MOV R1 ,#2020HH MOVX A MOVX A ,R1R1 XC
48、H A XCH A,R1R1 MOVX R1 MOVX R1,A A SJMP$SJMP$END END指向内部指向内部指向内部指向内部RAMRAM20H20H单元单元单元单元指向外部指向外部指向外部指向外部RAMRAM2020H2020H单元单元单元单元 例例例例3 377 已知片内已知片内已知片内已知片内5050HH单元中有一个单元中有一个单元中有一个单元中有一个0 09 9的数,的数,的数,的数,试编程把它变为相应的试编程把它变为相应的试编程把它变为相应的试编程把它变为相应的ASCIIASCII码的程序。码的程序。码的程序。码的程序。解:因为解:因为解:因为解:因为0 09 9的的的的A
49、SCIIASCII码为码为码为码为30303939HH程序如下:程序如下:程序如下:程序如下:MOV R0 MOV R0,#50H#50H MOV MOV A A ,#30H#30H XCHD XCHD A A,R0 R0 MOV R0 MOV R0,A A SJMP$SJMP$END END 0 8 0 8 3 0 3 0 3 83 85050HHAA 0 0 0 0R0R0 例例例例3 388 把把把把0101HH单元内容送单元内容送单元内容送单元内容送0202HH单元,有几种不同的实现方法。单元,有几种不同的实现方法。单元,有几种不同的实现方法。单元,有几种不同的实现方法。MOV 02H
50、 MOV 02H ,01H01H;直接寻址直接寻址直接寻址直接寻址 3 3字节字节字节字节 2 2周期周期周期周期 MOV A MOV A ,01H01H ;直接寻址直接寻址直接寻址直接寻址+寄存器寻址寄存器寻址寄存器寻址寄存器寻址 MOV 02H MOV 02H ,A A ;4 4字节字节字节字节 2 2周期周期周期周期 MOV A MOV A ,R1 R1 ;寄存器寻址寄存器寻址寄存器寻址寄存器寻址 2 2字节字节字节字节 2 2周期周期周期周期 MOV R2 MOV R2 ,A A MOV R0 MOV R0 ,#01H#01H;4 4字节字节字节字节 3 3周期周期周期周期 MOV 0
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922