第3章—指令系统与汇编语言程序设计_第1页
第3章—指令系统与汇编语言程序设计_第2页
第3章—指令系统与汇编语言程序设计_第3页
第3章—指令系统与汇编语言程序设计_第4页
第3章—指令系统与汇编语言程序设计_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

1、第3章指令系统与汇编语言程序设计指令系统与汇编语言程序设计 3.1汇编语言概述汇编语言概述3.2指令系统简介指令系统简介 3.3汇编语言的编程方法汇编语言的编程方法 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 1. 汇编语言指令格式汇编语言指令格式 2.描述操作数的简记符号描述操作数的简记符号 3.寻址方式寻址方式3.2指令系统简介指令系统简介 3.3汇编语言的编程方法汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计汇编语言是用汇编语言是用助记符助记符形式表示形式表示指令指令的一种计算机语言的一种计算机语言, 其中助记符

2、由约定的其中助记符由约定的英文字母组成,而指令则是完成特定动作所需的指示和命令。汇编语言程英文字母组成,而指令则是完成特定动作所需的指示和命令。汇编语言程序需要经过编译程序翻译成机器码,让计算机执行。序需要经过编译程序翻译成机器码,让计算机执行。汇编语言编程的优点是代码精炼、执行速度快,但不便于编写较复杂的程汇编语言编程的优点是代码精炼、执行速度快,但不便于编写较复杂的程序。序。本章学习目的是了解汇编语言的规则,要求借助指令手册能读懂一般汇编本章学习目的是了解汇编语言的规则,要求借助指令手册能读懂一般汇编程序。程序。一条汇编语言指令中最多包含四个区段,其一般格式为: 标号标号: 操作码操作码

3、操作数操作数 ;注释注释 汇编语言指令格式汇编语言指令格式 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计标号标号区段由用户定义的区段由用户定义的16个字符组成,以英文字母开始个字符组成,以英文字母开始(不区分大小写(不区分大小写 ),冒号结尾。冒号结尾。.0122H0223H0124H. 35H 77H F4H 74H 12HROM标号代表当前指令的首字节在存储器单元中的存放地址,可以省略。START: MOV A,#12H ;立即数立即数12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,转转START 标号标号: 操作码操作码 操作数操

4、作数 ;注释注释第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计操作码操作码区段是指令的核心部分,不能省略,它由便于记忆的助记字符组成。区段是指令的核心部分,不能省略,它由便于记忆的助记字符组成。在在MCS-51单片机中共有单片机中共有42种操作码,每个操作码为种操作码,每个操作码为25个字符,不区分大个字符,不区分大小写。小写。START: MOV A,#12H ;立即数立即数12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,转转START 举例: 标号标号: 操作码操作码 操作数操作数 ;注释注释第3章单片机的汇编语言与程序设计单片机的汇

5、编语言与程序设计操作数操作数区段是指令要操作的对象。根据指令的不同功能,操作数可以是区段是指令要操作的对象。根据指令的不同功能,操作数可以是3个、个、2个、个、1个或没有操作数;操作数大于个或没有操作数;操作数大于1时,操作数之间用英文逗号隔开,不时,操作数之间用英文逗号隔开,不区分大小写。区分大小写。START: MOV A,#12H ;立即数立即数12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,转转START 举例: 标号标号: 操作码操作码 操作数操作数 ;注释注释第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计注释注释区段是对指令的

6、解释性说明,用以提高程序的可读性,可以用任何文字区段是对指令的解释性说明,用以提高程序的可读性,可以用任何文字描述,以英文分号开始,无需结束符号,可以省略。描述,以英文分号开始,无需结束符号,可以省略。START: MOV A,#12H ;立即数立即数12HA SETB P1.0 ;P1.01 CJNE A,R0, START ;若若AR0,转转START 举例:第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 1. 汇编语言指令格式汇编语言指令格式 2.描述操作数的简记符号描述操作数的简记符号 3.寻址方式寻址方式3.2指令系统简介指令系统简介 3.3

7、汇编语言的编程方法汇编语言的编程方法单片机指令手册中,每条指令的单片机指令手册中,每条指令的操作数操作数都以简记符号表示。都以简记符号表示。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计 操作数的简记符号操作数的简记符号 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计指令表举例MOV A,RnMOV A,R0 MOV A,R4 MOV A,RiMOV A,R0 MOV A,R1MOV A,#dataMOV A,#35H MOV A,#0111 0110BMOV A,directMOV A,20H MOV A,DP

8、LMOV DPTR,#data16MOV DPTR,#1305H MOV DPTR,#65000 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 1. 汇编语言指令格式汇编语言指令格式 2.描述操作数的简记符号描述操作数的简记符号 3.寻址方式寻址方式3.2指令系统简介指令系统简介 3.3汇编语言的编程方法汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计寻址方式寻址方式寻找操作数所在地址单元的方式。寻找操作数所在地址单元的方式。寻址方式越多,计算机的功能就越强。51单片机共有七种寻址方式:直接寻址、寄存器寻直接寻址、寄存器寻

9、址、寄存器间接寻址、立即寻址、变址寻址、位寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址、相对寻址址、相对寻址。 可以先跳过这一节,待学完指令系统后再返回学习可能会易于理解。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计(1)直接寻址)直接寻址 MOV A,68H ;A(68H),机器码为,机器码为E568H 对于片内低128字节单元可在指令中直接给出单元地址(如MOV A,68H),但对于特殊功能寄存器(位于高128字节区)除了可用其单元地址给出外,还可用它们的符号形式给出。如: MOV A,0D0H ;A(0D0H),机器码为,机器码为E5D0HMOV A,PSW ;APSW

10、,机器码为,机器码为E5D0H 它们的形式虽然不同,但汇编后的机器码是完全一样的,均为E5D0H。为增强所编程序的可读性,一般提倡尽量采用后者方式。 (2)寄存器寻址)寄存器寻址 指令中以通用寄存器的形式表示操作数的寻址方式称为寄存器寻址,这里的通用寄存器特指:A、B、DPTR、R0R7和CY。 MOV A,R1 ;AR1MUL AB ;BAAB,乘积高位存,乘积高位存B,低位存,低位存AINC DPTR ;DPTRDPTR+1第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计注意:B寄存器仅在乘法和除法指令中属于寄存器寻址,在其它指令中则属于直接寻址。此外,除上面所指出的几个寄存器外

11、,其它特殊功能寄存器也一律为直接寻址 寄存器间接寻址是二次寻找操作数地址的寻址方式。 (3)寄存器间接寻址)寄存器间接寻址 由指令指出某一个寄存器的内容作为操作数地址的寻址方式,称为寄存器间接寻址方式。计算机执行这类指令时,它首先根据指令中的寄存器名称找到所需要的操作数地址,再由操作数地址找到操作数,并完成相应操作。 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计寄存器间接寻址使用的寄存器叫做间址寄存器,用R0、R1和DPTR表示。 MOV A,R0 ;寻址范围为寻址范围为256B MOVX A,DPTR ;寻址范围为寻址范围为64KB 片内片内RAM30HR034HA30H34H

12、 MOV A ,R0 操作示意图操作示意图片外片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作示意图操作示意图第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计MOV A,#0E2H;A#0E2HMOV DPTR,#2000H ;DPTR#2000H(4)立即寻址)立即寻址 如果操作数在指令中直接给出,并与操作码的机器码一起存放在程序存储器内,则程序执行时便可立即得到,而不需要另外寻找,故称为立即寻址。该操作数称为立即数,并在其前冠以“#”号,以表示非地址。立即数可以是8位或16位二进制数,一般用十六进制数表示 汇编语言规定,凡以字母开始的十六进制数(立

13、即数或地址),在最高位前要加0以便与变量名区分,因而上述数据E2H要写为0E2H。 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计MOVC A,A+DPTR ;A(A+DPTR)MOVC A,A+PC ;A(A+PC)JMP A+DPTR;PC(A+DPTR)(5)变址寻址)变址寻址 变址寻址是以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,将基址寄存器与变址寄存器的内容相加形成操作数的实际地址。51指令集中采用变址寻址的指令共有三条: A为偏移量寄存器,DPTR或PC为变址寄存器。程序执行时,A中的无符号数先与DPTR或PC中的内容相加,形成访问地址,再通过寄存器间接寻

14、址方式取得实际操作数。其中前两条是程序存储器读指令,后一条是无条件转移指令。 MOVC A, A+DPTR 操作示意图操作示意图程序存储器程序存储器02F1HDPTRA0302H1EH11HA执行前执行前1EHA执行后执行后+第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计MOV C,7FH ;Cy(7FH),其中,其中,7FH是位地址是位地址MOV C,2FH.7 ;Cy(7FH),其中,其中,2FH.7是位地址是位地址MOV C,ACC.7 ;CyACC.7,其中,其中,ACC.7是位地址是位地址(6)位寻址)位寻址 51单片机片内RAM里的部分存储单元和某些特殊功能寄存器除了具

15、有字节地址外,还具有位地址。这些单元既可以采用字节方式访问,也可采用位地址方式访问。指令中直接给出操作数所在单元位地址的寻址方式称为位寻址,例如: 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计SJMP START ;PCPC+2+rel(7)相对寻址)相对寻址 相对寻址方式是为了程序的相对转移而设计的,它以PC的内容为基址,与指令中给出的偏移量rel进行合成,得到转移目的地址,进而改变PC值实现程序的跳转功能。 该指令的功能是将PC值修改为START语句行所在的首地址,从而使程序从START语句继续执行,该指令的的原形是SJMP rel。注意,由于rel只能形成-128+127字

16、节的跳转,故编程时必须考虑当前行与被跳转行之间的地址范围不能超限。 SJMP 08H 操作示意图操作示意图程序存储器程序存储器SJMP200AH08H2000H+208H执行前执行前PC2000H执行后执行后PC第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 3.2指令系统简介指令系统简介 1.数据传送与交换类指令数据传送与交换类指令 2.算术运算类指令算术运算类指令 3.逻辑运算及移位类指令逻辑运算及移位类指令 4.控制转移类指令控制转移类指令 5 .伪指令伪指令3.3汇编语言的编程方法汇编语言的编程方法计算机中全部指令的集合称为计算机中全部指令的集

17、合称为指令系统指令系统。MCS-51单片机指令系统共有单片机指令系统共有111条指令,条指令,按功能可划分为四大类:按功能可划分为四大类: 数据传送与交换类数据传送与交换类 算术运算类算术运算类 逻辑运算类逻辑运算类 转移控制类(位操作也可作为第五类转移控制类(位操作也可作为第五类考虑)考虑)第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 3.2指令系统简介指令系统简介 1.数据传送与交换类指令数据传送与交换类指令 2.算术运算类指令算术运算类指令 3.逻辑运算及移位类指令逻辑运算及移位类指令

18、4.控制转移类指令控制转移类指令 5.伪指令伪指令3.3汇编语言的编程方法汇编语言的编程方法数据传送与交换类指令数据传送与交换类指令可实现RAM、SFR和ROM之间的数据互传或交换,共31条。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计 助记符助记符 说明说明 MOVMOV、MOVXMOVX、MOVC MOVC 传送操作传送操作 XCHXCH、XCHDXCHD、SWAP SWAP 交换操作交换操作 PUSHPUSH、POP POP 堆栈操作堆栈操作v 源操作数寻址方式源操作数寻址方式: 立即寻址、直接寻址、寄存器寻址、立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。寄

19、存器间接寻址、变址寻址。v 目的操作数寻址方式目的操作数寻址方式: 直接寻址、寄存器寻址、寄存器间接寻址直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为除了目的操作数为ACCACC的指令影响奇偶标志的指令影响奇偶标志P P外,一般不影外,一般不影 响标志位。响标志位。数据传送类指令的基本通式为: , 它表示将源单元(src)的内容传送给目的单元 (dest) ,传送后源单元中内容不变。transfer是传送指令的操作码: MOV在片内RAM范围内传送 MOVX在片外RAM范围内传送 MOVC在全部ROM范围内传送第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编

20、语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计传送类指令中的两类特殊指令传送类指令中的两类特殊指令 交换类交换类使操作数的使操作数的内容互换内容互换(XCH、XCHD、SWAP) 堆栈类使操作数的内容进出堆栈(PUSH 、POP)0-3第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例1:分析如下程序段并指出运行后:分析如下程序段并指出运行后20H和和21H单元的结果单元的结果 MOV R0,#20H MOV R0,#38H MOV 21H,#48H 结果:(20H)=38H,(21H)=48H将data送入Ri的内容所指向的

21、单元的内容所指向的单元中(寄存器间接寻址) R0=20H MOV R0,#38H 等价于MOV 20H,#38H ;MOV Rn,#data;MOV Ri,#data;MOV direct,#data;Rndata;(R0)data;directdata第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计寄存器间接寻址用到的寄存器有寄存器间接寻址用到的寄存器有Ri、DPTR和和SP,其中其中i = 0 或或1;可以用类似(;可以用类似(R0)表示)表示R0第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例2:已知片内:已知片内RAM 38H单元中的数为单元中的数为12H,

22、试分析如下程序段并指出其功能试分析如下程序段并指出其功能注意:片内RAM 38H单元中数不能直接传送到外部RAM的1818H单元,必须经过累加器A的转传。功能:将片内RAM 38H单元中的数12H传送到外部RAM的1818H单元中。 MOV R0,#38H MOV DPTR,#1818HMOV A,R0MOVX DPTR,A; Rndata; DPTR data16; A(Ri); (DPTR)AR0=38HDPTR =1818HA(38H)=12H(1818H)=12H第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例3:试分析如下程序段并指出其功能:试分析如下程序段并指出其

23、功能MOV DPTR,#120H MOV A,#5 MOVC A,A+DPTRMOV 30H,A; DPTR data16; Adata; A(A+DPTR); (30H)A; DPTR =120H; A=5; A(125H); (30H)A功能:将功能:将ROM 125H地址中的数取出送到片内地址中的数取出送到片内RAM的的30H单元中。单元中。意义:采用DPTR作为基址寄存器,A作为变址寄存器,查找事先存放在ROM数据块中的数据值,其中DPTR指向数据块的首地址。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例3”:在如下所示的在如下所示的ROM 120H地址开始的地址开

24、始的10个个单元中存放着整数单元中存放着整数09的十进制平方值,的十进制平方值,编写一查表程序段,计算整数编写一查表程序段,计算整数5的平方值,的平方值,并将结果送入并将结果送入RAM 30单元。单元。 执行结果:(执行结果:(30H)=25 ROM地址数值0128H640127H490126H360125H250124H160123H090122H040121H010120H00查表做法:查表做法:1、在、在ROM中设置一数据块;中设置一数据块;2、将数据块的首地址赋值给、将数据块的首地址赋值给DPTR;3、将欲查的数存入累加器、将欲查的数存入累加器A;4、执行、执行MOV A,A+DPTR

25、查表指令;查表指令;5、查表后的结果送入指定单元。、查表后的结果送入指定单元。 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例4:已知已知70H中有一个数,其值在中有一个数,其值在09范围内,编制程序把它范围内,编制程序把它变为相应的变为相应的ASCII码。码。解:解:09的的ASCII码为码为30H39H。利用半字节交换指令可以把。利用半字节交换指令可以把09的的数装配成相应的数装配成相应的ASCII码。码。 MOV R0,#70H; R070H MOV A,#30H; A30H XCHD A,R0; A中形成相应ASCII码 MOV R0,A; ASCII码送回70H单

26、元0-3第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计数据传送对象和方向示意图数据传送对象和方向示意图Cbit虚线框代表片内RAM范围立即数和ROM地址只能作为源操作数ROM和外部RAM只能与A进行往来PUSH和POP只能对direct进行操作位传送只能在C与bit间进行第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述汇编语言概述 3.2指令系统简介指令系统简介 1.数据传送与交换类指令数据传送与交换类指令 2.算术运算类指令算术运算类指令 3.逻辑运算及移位类指令逻辑运算及移位类指令 4.控制转移类指令控制转移类指令 5 .伪指令伪指令3.3汇编语言的

27、编程方法汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计算术运算类指令算术运算类指令共有共有24条,包括加、减、乘、除条,包括加、减、乘、除和增减和增减1运算等。运算等。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计特点特点:算术运算指令一般对程序状态字:算术运算指令一般对程序状态字PSW中的中的CY、AC、OV三个标志位有影响。三个标志位有影响。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例5:试解读如下程序并说明其功能 MOVA,#34H ADD A,#0E7H MOV40H,A MOVA,#12H ADDCA,#0FH MOV41H

28、,A; A 34H; A= A+data; (40H) A; A 12H; A= A+data+CY; (41H) AA =34HA= 1BH; C=1H(40H) = 1BHA = 12HA= 22H(41H) =22H功能:1234H与0FE7H两个16位数相加,结果为221BH。第一步先对低8位相加,结果存入40H单元;第二步再对高8位相加,结果存入41H单元,其中第二步为带进位相加。 注意:对于用十六进制数表示的数字或地址,若其最高位是AF,则需在最高位前加零(与“标号” 或“标示符”区分)。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例6:试解读如下程序并说明其功

29、能:试解读如下程序并说明其功能 CLRCMOV A,#34HSUBB A,#0E7HMOV 40H,AMOV A,#12HSUBB A,#0FHMOV 41H,A; CY位清零位清零; A 34H; AA -0E7H-CY; (40H) A; A 12H; AA -0FH-CY; (41H) AC=0A=34HA=4D;C=1; (40H) =4D; A =12H; A= 02H; (41H) = 02H功能:1234H与0FE7H两个16位数相减,结果为24DH。第一步先对低8位相减,结果存入40H单元;第二步再对高8位相减,结果存入41H单元,两步减法都是带借位相减。 注意:运算时需要首先

30、清理注意:运算时需要首先清理CY位。位。 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例7:试解读如下程序并说明其功能:试解读如下程序并说明其功能MOVA,#17HMOVB,#68HMULABMOV30H,AMOV31H,B; A17H; B68H; ABBA; (30H) A; (31H) B; A=17H; B=68H; B= 9;A=58H; (30H) 58H; (31H) 09H功能:计算17H68H的程序,其中乘积低8位送A,高8位送B。结果为958H,高8位送入31H单元,低8位送入30H单元。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计算术运算

31、指令快捷记忆法算术运算指令快捷记忆法 规律:除形成闭环连线的运算外(只有1个操作数),其余运算都要以A为目的操作数。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述 3.2指令系统简介 1.数据传送与交换类指令 2.算术运算类指令 3.逻辑运算及移位类指令逻辑运算及移位类指令 4.控制转移类指令 5 .伪指令3.3汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计逻辑运算及移位类指令逻辑运算及移位类指令共有共有34条,可以实现二进制数的与、条,可以实现二进制数的与、或、异或、求反、置或、异或、求反、置1、清零、移位等逻辑操作。、清零、移位等

32、逻辑操作。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例8:试解读如下程序并说明其功能:试解读如下程序并说明其功能编制程序,将编制程序,将M1单元中数字单元中数字09的的ASCII码变为相应数码变为相应数字的字的BCD码。码。 解解:由于:由于09的的ASCII码为码为30H39H,故只要将,故只要将09数数字字ASCII码的高码的高4位变为位变为0,低,低4位不变就是其位不变就是其BCD码。码。逻辑与的特性逻辑与的特性:x 0 = 0(清零);(清零);x 1 = x(屏蔽)(屏蔽) ANL M1,#0000 11

33、11B;(M1)(M1)0FH第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例9:试解读如下程序并说明其功能:试解读如下程序并说明其功能。 ANLA,#0FHANLP1,#0F0HORLP1,A功能:把累加器A中低4位送入P1口低4位,P1口的高4位不变(实现了一次数据组合); AA0FH; P1P1F0H; P1P1A逻辑或的特性逻辑或的特性:x 0 = x(屏蔽);(屏蔽);x 1 = 1(置位)(置位); A = 0000 xxxxB; P1= XXXX0000B; P1= XXXXxxxxB第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例10:试解读

34、如下程序并说明其功能:试解读如下程序并说明其功能。MOV A,40HCPL AINCAMOV 40H,A功能:对功能:对40H单元中的数求补,运算后结果仍送回单元中的数求补,运算后结果仍送回40H单元单元 。; A(40H); A/A; A A+1;(40H) A 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计功能:将A.5与80H位相与的结果,通过P1.4输出。 举例举例11:已知:已知A.5=1,位地址,位地址(80H)=0。试解读如。试解读如下程序并说明其功能下程序并说明其功能。MOV C,A.5ANLC,80HMOV P1.4,C; C A.5; C C 80H; P1.4

35、 C; C 1; C 10=0; P1.4 0第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计逻辑运算指令快捷记忆法逻辑运算指令快捷记忆法 规律:除#data与direct外,几乎所有运算都是以A为目的操作数。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述 3.2指令系统简介 1.数据传送与交换类指令 2.算术运算类指令 3.逻辑运算及移位类指令 4.控制转移类指令控制转移类指令 5 .伪指令3.3汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计控制转移类指令控制转移类指令共有共有22条,条,主要功能是通过改变主要功能是通过改

36、变程序计数器程序计数器PC的内容,进而改变程序流向。的内容,进而改变程序流向。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计功能:可根据功能:可根据A中的数实现分支程序的跳转。中的数实现分支程序的跳转。 举例举例12:设:设A中为整数中为整数0n,B中为整数中为整数3。试解读如下程。试解读如下程序并说明其功能(提示,序并说明其功能(提示,LJMP为为3字节指令)字节指令)。; ABBA; DPTR BLOCK; PCA+DPTR; PCLOOP0; PCLOOP1; PCLOOP2 ;0号分支入口号分支入口 ;1号分支入口号

37、分支入口 MUL AB MOV DPTR, #BLOCKJMP A+DPTR BLOCK: LJMP LOOP0 LJMP LOOP1 LJMP LOOP2 LOOP0: ;0号分支入口号分支入口LOOP1: ;1号分支入口号分支入口; A = 0, 3, 6, 9.,3n; DPTR =BLOCK; PC3n + BLOCK; PCLOOP0; PCLOOP1; PCLOOP2;0号分支入口号分支入口;1号分支入口号分支入口第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计功能:比较功能:比较30H和和40H中两个无符号数的大小,将大数存中两个无符号数的大小,将大数存入入50H,小数

38、存入,小数存入51H,若两数相等则使,若两数相等则使7FH位置位置1。 MOV A,30H CJNE A,40H,NOEQU SETB 7FH SJMP FINISHNOEQU: JC SMALL MOV 50H,A MOV 51H,40H SJMP FINISHSMALL: MOV 50H,40H MOV 51H,AFINISH: SJMP $; A (30H); 若若A(40H)转转NOEQU; (7FH) 1; PCPCFINISH; 若若CY=1,则,则PCPCSMALL; (50H) A; (51H) (40H); PCPCFINISH; (50H) (40H); (51H) A;

39、PC=PC当前当前举例举例13:试解读如下程序并说明其功能:试解读如下程序并说明其功能。做法:先判断比较双方是否相等,随后再利用C判断不相等时的关系。第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计总延时量:总延时量:(2125+1+2)200+1 = 50.601ms举例举例14:试分析如下延时子程序可实现的延时量:试分析如下延时子程序可实现的延时量。DEL50: MOV R7,#200DEL1: MOV R6,#125DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET;循环循环125次次;循环循环200次次RnRn-1若Rn0,则 PCPC+rel否则顺序进行

40、 ACALL DEL50 ;调用延时子程序使用:(设指令(设指令DJNZ耗时为耗时为2s, 指令指令MOV为为1 s)第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计控制转移类指令快捷记忆法控制转移类指令快捷记忆法 规律:所有条件转移都只能是在rel的范围内进行,即-128127。 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述 3.2指令系统简介 1.数据传送与交换类指令 2.算术运算类指令 3.逻辑运算及移位类指令 4.控制转移类指令 5 .伪指令伪指令3.3汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计汇编语言指令的两

41、类指令汇编语言指令的两类指令:硬指令硬指令(指令性语句)(指令性语句)汇编后可以产生机器汇编后可以产生机器 码的指令,如前介绍的码的指令,如前介绍的111条指令;条指令;伪指令伪指令(指示性语句)(指示性语句)用于对汇编过程提供必用于对汇编过程提供必 要信息的指令,汇编后不会产生机器码要信息的指令,汇编后不会产生机器码常用的伪指令:常用的伪指令: ORG、END、EQU、DB、DW、DS、BIT第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计 MCS-51常用伪指令常用伪指令 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计举例举例15:采用伪指令的做法重新编写平方值查表程

42、序。采用伪指令的做法重新编写平方值查表程序。 解解:为方便比较,下图列出了汇编后的机器代码及存放地址:为方便比较,下图列出了汇编后的机器代码及存放地址 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计3.1汇编语言概述 3.2指令系统简介 3.3汇编语言的编程方法第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计汇编语言程序的开发过程汇编语言程序的开发过程 确定编程思路确定编程思路画程序流程图画程序流程图编写汇编程序编写汇编程序程序编译调试程序编译调试用汇编语言进行程序设计的过程和用高级语言进行程序设计的过程类似,一般需要经过以下几个步骤:第3章单片机的汇编语言与程序设计单片

43、机的汇编语言与程序设计流程图(程序框图)流程图(程序框图) 表示出程序的执行过程或解题步骤和方法表示出程序的执行过程或解题步骤和方法 给出程序的结构,体现整体与部分之间的关系给出程序的结构,体现整体与部分之间的关系 便于阅读、理解程序,查找错误便于阅读、理解程序,查找错误举例举例16:在单片机在单片机P1口外接口外接8个发光二极管(低电平驱动)。个发光二极管(低电平驱动)。试编写一汇编程序,实现试编写一汇编程序,实现LED循环点亮功能:循环点亮功能:第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P

44、0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C11nFX1CRYSTALC21nFC322uFR

45、esistorResistorR11kD1LED-REDResistorResistorR2220D2LED-REDD3LED-REDD4LED-REDResistorResistorR4220ResistorResistorR5220ResistorResistorR6220D5LED-REDD6LED-REDD7LED-REDResistorResistorR3220ResistorResistorR7220ResistorResistorR8220ResistorResistorR9220D9LED-REDP1.0P1.1P1.2 P1.7P1.6 P1.0的顺序,无限循环。的顺序,无限

46、循环。采用软件延时方法控制闪烁时间间隔采用软件延时方法控制闪烁时间间隔(约(约50ms)。)。解:解:仿真开发过程如下仿真开发过程如下 第3章单片机的汇编语言与程序设计单片机的汇编语言与程序设计电路原理图设计:电路原理图设计:利用利用Proteus软件的软件的ISIS模块绘制原理模块绘制原理图。考虑到图。考虑到LED低低电平驱动要求,硬电平驱动要求,硬件电路设计时需使件电路设计时需使LED的阴极应接的阴极应接P1口,阳极通过限流口,阳极通过限流电阻与电阻与+5V电源相电源相接。接。 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.

47、2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51C11nFX1CRYSTALC21nFC322uFResistorResistorR11kD1LED-REDResistorResistorR2220D2LED-REDD3LE

温馨提示

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

最新文档

评论

0/150

提交评论