版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1西北农林科技大学水利与建筑工程学院第4章
MCS-51指令系统2西北农林科技大学水利与建筑工程学院4.1概述指令:供用户使用的单片机软件资源指令系统:计算机能执行的指令集合,是由硬件厂商定义的单片机使用:机器语言汇编语言
C语言14.1概述4.1.1计算机语言(1)机器语言:是用二进制代码表示的,能被计算机直接识别和执行的一种机器指令的集合。优点:灵活、能被计算机直接执行、速度快等。
缺点:直观性差,很容易出错,通用性很差。(2)汇编语言:是一种用助记符表示的仍然面向机器的计算机语言,又将其称为符号语言。
优点:用符号代替了机器指令代码,简化了编程过程,而且助记符与指令代码一一对应,基本保留了机器语言的灵活性。占用的内存空间少,运行速度快。
14缺点:必须对编写的程序进行加工和翻译,才能变成能够被计算机识别和处理的二进制代码程序。仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性差。用汇编语言等非机器语言书写好的符号程序称汇编语言源程序。(3)高级语言:与自然语言相近并为计算机所接受和执行的计算机语言称为高级语言,它是面向用户的语言。优点:编程容易,不需要编程者对机器硬件有较好的了解。缺点:执行速度比机器语言和汇编语言慢。5西北农林科技大学水利与建筑工程学院指令基本格式
[标号:]操作码
[目的操作数][,源操作数][;注释]START:MOVA,#30H;将立即数30H传送至A中
MOVDPTR,#5678H;将立即数5678H传送至DPTR方括符[]表示可选项
标号:(1)1-8个字母/数字组成(以字母开头),不能用汇编语言中定义的符号,不能重复定义。(2)指令前的标号代表该指令的地址,是用符号表示的地址,用于一段功能程序的识别标记或控制转移地址。(3)标号必须用冒号“:”与;操作码分隔。6西北农林科技大学水利与建筑工程学院指令基本格式
[标号:]操作码
[目的操作数][,源操作数][;注释]START:MOVA,#30H;将立即数30H传送至A中
MOVDPTR,#5678H;将立即数5678H传送至DPTR方括符[]表示可选项
操作码:表示指令的操作功能。①操作码用助记符表示,它代表了指令的操作功能。②操作码是指令的必需部分,是指令的核心,不可缺少。7西北农林科技大学水利与建筑工程学院指令基本格式
[标号:]操作码
[目的操作数][,源操作数][;注释]START:MOVA,#30H;将立即数30H传送至A中
MOVDPTR,#5678H;将立即数5678H传送至DPTR方括符[]表示可选项
操作数:参加操作的数据或数据地址。①操作数可以是数据,也可以是数据的地址、数据地址的地址或操作数的其他信息。②操作数可分为目的操作数和源操作数。③操作数可用二进制数、十进制数或十六进制数表示。④操作数的个数可以是0~3个。⑤操作数与操作码之间用空格分隔,操作数与操作数之间用逗号“,”分隔。8西北农林科技大学水利与建筑工程学院注释:指令功能说明。①注释属于非必需项,是为便于阅读而对指令功能作的说明和注解。②注释必须以“;”开始。分界符:194.1.3操作数的类型MOVA,#30MOVB,AMOVR0,#40H1)立即数2)寄存器操作数3)存储器操作数(单元地址)MOVA,20H10西北农林科技大学水利与建筑工程学院4.1.4单片机指令格式
单片机指令长度:变长指令(长度是不定的)
一字节指令(49条)(1)操作码和操作数占一个单元,如:INCDPTR
指令码:10100011(2)指令的操作数在寄存器中,而寄存器编码只需3位2进制,故可挤在一个字节如:MOVA,Rn
指令码:11101rrr
(rrr通用寄存器二进制编码)11西北农林科技大学水利与建筑工程学院
二字节指令(45条)一个字节为操作码,一个字节为操作数,如MOV20H,R0
三字节指令(17条)操作码一个字节,操作数两个字节:MOV60H,#2FH
12西北农林科技大学水利与建筑工程学院※每条指令在执行时要花去一定的时间,以机器周期为单位。按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)※
按指令的功能分类,可分为5大类:数据传送类(29条);算术运算类(24条);逻辑运算及移位类(24);控制转移类(17条);位操作类(17条)13西北农林科技大学水利与建筑工程学院4.1.5常用伪指令单片机汇编语言程序设计中,除了使用指令系统规定的指令外,还要用到一些伪指令。伪指令又称指示性指令,具有和指令类似的形式,但汇编时伪指令并不产生可执行的目标代码,只是对汇编过程进行某种控制或提供某些汇编信息。也称汇编命令或汇编程序控制指令。下面对常用的伪指令作一简单介绍(P48)。1.汇编起始地址伪指令ORG格式:[标号:]ORG地址表达式
功能:规定程序块或数据块存放的起始位置 例如:ORG1000H;表示下面指令MOVA,#20H存放于1000H开始的单元。
MOVA,#20H114一个源程序中,可多次使用ORG指令以规定不同程序段的起始位置。地址应从小到大顺序排列,不允许重叠。例如:
ORG1000H LJMP MAIN
ORG 1200HMAIN: MOV A,30H
1152)END(ENDofassembly)汇编终止命令
功能:用于终止源程序的汇编工作。格式:
[标号:]END一个源程序只能有一个END命令。后面的不予执行。1163)DB(DefineByte)定义数据字节命令功能:用于从指定的地址单元开始,在程序存储器中定义字节数据。例4-1分别从ROM的1000H和1020H单元开始,按顺序存放0~9中每个整数的平方值和字符串“Anapple!”。C语句charsquare[]={0,1,4,9,16,25,36,49,64,81};charstring[]=“Anapple!”;117ORG0000HSTART: NOP ;空操作语句
ORG1000HDATA1: DB 0,1,4,9,16,25,36,49,64,81 ORG1020HDATA2: DB“Anapple!” END118单元地址ROM中的内容单元地址ROM中的内容0FFFH…101FH…1000H00H1020H41H(A)1001H01H1021H6EH(n)1002H04H1022H20H(空格)1003H09H1023H61H(a)1004H10H1024H70H(p)1005H19H1025H70H(p)1006H24H1026H6CH(l)1007H31H1027H65H(e)1008H40H1028H21H(!)1009H51H1029H…19西北农林科技大学水利与建筑工程学院4.定义字数据伪指令DW格式:[标号:]DW
字数据表 功能:与DB类似,但DW定义的数据项为字,包括两个字节,存放时高位在低单元,低位在高单元。 例如: ORG1000H DATA:DW324AH,3CH
;表示从1000H单元开始的地方存放数据32H,4AH,00H,3CH(3CH以字的形式表示为003CH)。单元地址ROM中的内容10FFH…1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H…ORG1100HDATA2:DW 3478H,10H,-1120
注意:
DB和DW定义的数表,数的个数不得超过80个。如果数据的数目较多时,可使用多个定义命令。在MCS-51程序设计应用中,常以DB定义数据,以DW定义地址。121(5)DS(DefineStorage)定义存储区命令功能:用于从指定地址开始,保留指定数目的字节单元为存储区,供程序运行使用。汇编时对这些单元不赋值。格式:[标号:]DS16位数表
例: ADDRTABL:DS20
例: ORG8100H DS 08H注意:对MSC-51单片机来说,DB、DW、DS命令只能对程序存储器使用,不能对数据存储器使用。122例如: X EQU20 Y EQU30 Z EQUX+Y AA EQUR1(6)EQU(Equate)赋值命令功能:用于给字符名称赋予一个特定值。赋值以后,其值在整个过程中有效。格式:
字符名称EQU赋值项“赋值项”:可以是常数、地址、标号或表达式。MOVA,#XMOVA,X123(7)DATA数据地址赋值命令格式:字符名称DATA项功能:与EQU基本类似,但有以下差别。*EQU定义的字符名称必须先定义后使用,而DATA定义的字符名可以先使用后定义。*用EQU可以把一个汇编符号赋给字符名称,如上例中的R1,而DATA只能把数据赋给字符名。AA EQUR1124(8).BIT位定义命令功能:用于给字符名称赋以位地址。格式:字符名称BIT位地址例如:
AAABIT40H BBBBIT 50H
其中“位地址”可以是绝对地址,也可以是符号地址。例如:MOVCy,AAA3.1.3寻址方式指令执行是对操作数而言,只有找到操作数才能处理,操作数在指令中可以是其本身,也可是其所在地址,故须确定如何找到操作数,这就是寻址。25西北农林科技大学水利与建筑工程学院我的信在他那!找信②①注:找信是寻找信的“地址”!26西北农林科技大学水利与建筑工程学院退货(买西装):到开元找王经理退货到开元找售后服务部门经理退货到卖衣服的店找售后服务经理办公室退货到买衣服的店找售后服务办公室联系经理退货找12315
找买衣服店长+(下属分管售后的人)
立即寻址直接寻址寄存器寻址寄存器间接寻址变址寻址相对寻址27西北农林科技大学水利与建筑工程学院1.寄存器寻址方式:操作数在寄存器时,指定寄存器名称用来得到操作数MOVA,Rn
寻址范围:
*通用寄存器,R0~R7(共32个但每次只能是8个。用PSW中的RS1、RS0控制)
*部分专用寄存器:A、B、DPTP28西北农林科技大学水利与建筑工程学院2.直接寻址(直接给出地址)
操作数以单元地址形式给出MOVA,3AH
寻址范围:只有8位,所以只限内部RAM。
(1)低128位单元。
(2)专用寄存器(单元地址、寄存器符号)
(3)位地址空间。
例:MOVA,3AH
29西北农林科技大学水利与建筑工程学院3.立即寻址(标志符号#)操作数在指令中直接给出。
MOVA,#dataMOVA,#3AH◎都为8位数,但有唯一的16位立即数。MOVDPTR,#data16◎为了与直接寻址区别,在立即数前需加“#”标志。30西北农林科技大学水利与建筑工程学院4.寄存器间接寻址
寄存器寻址方式,但寄存器中不是操作数,而是操作数的地址。为了区别寄存器寻址方式,在寄存器前要有@标志。
MOVA,@R0寻址范围:◎内部RAM低128位,且只能使用R0和R1寄存器。(@Ri.i=0、1)◎外部64K,只能使用DPTR寄存器(16位)。(@DPTR)◎外部RAM的低256单元,也可使用R0和R1寄存器以及DPTR寄存器(MOVX)。◎堆栈操作也视为此种寻址,SP为寄存器的间接寻址。31西北农林科技大学水利与建筑工程学院5.变址寻址
为了访问程序寄存器中的数据表格,以DPTR和PC为基址,以A为变址寄存器,以基址和变址的和为操作数地址达到访问的目的。
MOVCA,@A+DPTR寻址范围:·只针对程序寄存器进行寻址,寻址范围可达64K。·只有3条
MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR·都是1字节指令32西北农林科技大学水利与建筑工程学院7.相对寻址
为了解决程序转移而设置的。跳转指令地址+跳转指令字节数+rel=PC+relrel是带符号的8位补码数,寻址范围-128~+127。目的地址的计算方法:PC+rel转移指令字节数一般为2字节,也有3字节的。33西北农林科技大学水利与建筑工程学院6.位寻址
以数据位进行操作。
MOVC,3AH
寻址范围:*内部RAM的位寻址区。单元地址20H~2FH,共16个单元128位。两种表示方式:位地址,单元地址加位。*专用寄存器可寻址位,共11个寄存器83个位,表示方式:·直接位地址(PSW位5地址为0D5H)·位名称(F0)、·单元地址加位(0D0H.5)、·专用寄存器符号加位(PSW.5)34西北农林科技大学水利与建筑工程学院3.1.4寻址方式小结
1、变址寻址方式只适用于程序存储器。
2、内部数据存储器寻址方式较多。
3、外部数据存储器只能使用寄存器间接寻址方式。
MOVXA,@RiMOVXA,@DPTR 4、相对寻址只解决程序转移问题。
5、两个操作数,左边的为目的操作数,右边为源操作数。以上都对源操作数而言,但目的操作数也存在寻址问题。目的操作数只有:寄存器寻址、直接寻址、寄存器间接寻址和位寻址4种情况。35西北农林科技大学水利与建筑工程学院3.2指令分类 数据传送29条 算术运算24条 逻辑运算及移位类24条 控制转移17条 位操作17条36西北农林科技大学水利与建筑工程学院符号含义Rn表示当前选定寄存器组的工作寄存器R0~R7Ri表示作为间接寻址的地址指针R0~R1direct表示8位直接地址#data表示8位立即数,即00H~FFH#data16表示16位立即数,即0000H~FFFFHaddr16表示16位地址,用于64K范围内寻址addr11表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址rel带符号的8位偏移量(补码数)(-128~+127)DPTR数据指针bit内部RAM位寻址区的直接寻址位A累加器ACC直接寻址方式的累加器B寄存器BC进位标志位,布尔处理器的累加器或累加位@间接寻址前缀标志(X)X地址单元中的内容/对该位取反((X))将X地址单元中的内容作为地址,该地址单元中的内容←将←后面的内容传送到前面去37西北农林科技大学水利与建筑工程学院3.2.2数据传送指令数据传送不是搬家,是复制。 目的地址源地址数据
源操作数有:A、Rn、direct、间接寄存器、#data。 目的操作数:A、Rn、direct、间接寄存器。1.内部8位数据传送指令内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式:
MOV<目的操作数>,<源操作数>
38西北农林科技大学水利与建筑工程学院1)以累加器A为目的地址的传送指令(4条)注意:以上传送指令的结果影响程序状态字寄存器PSW的P标志。
助记符格式机器码相应操作指令说明机器周期MOVA,Rn11101rrrARnn=0~7rrr=000~1111MOVA,direct11100101directAdirect1MOVA,@Ri1110011iA(Ri)i=0,11MOVA,#data01110100#dataA#data139西北农林科技大学水利与建筑工程学院例3.1
已知相应单元的内容,请指出每条指令执行后相应单元内容的变化。①MOVA,#20H②MOVA,40H③MOVA,R0④MOVA,@R0解:①MOVA,#20H执行后A=20H②MOVA,40H执行后A=30H③MOVA,R0执行后A=50H④MOVA,@R0执行后A=10H40西北农林科技大学水利与建筑工程学院助记符格式机器码(B)相应操作指令说明机器周期MOVRn,A11111rrrRnAN=0~7rrr=000~1111MOVRn,direct10101rrrdirectRndirectN=0~7rrr=000~1112MOVRn,#data01111rrr#dataRn#dataN=0~7rrr=000~11112)以Rn为目的地址的传送指令(3条)注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。41西北农林科技大学水利与建筑工程学院3)以直接地址为目的地址的传送指令(5条)注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。助记符格式机器码(B)相应操作指令说明机器周期MOVdirect,A11111010directdirectA1MOVdirect,Rn10001rrrdirectdirectRnN=0~7rrr=000~1112MOVdirect2,direct110000101direct1direct2direct2direct12MOVdirect,@Ri1000011idirectdirect(Ri)i=0,12MOVdirect,#data01110101direct#datadirect#data242西北农林科技大学水利与建筑工程学院4)以寄存器间接地址为目的地址的传送指令(3条)注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。助记符格式机器码(B)相应操作指令说明机器周期MOV@Ri,A1111011i(Ri)Ai=0,11MOV@Ri,direct1110011idirect(Ri)(direct)2MOV@Ri,#data0111010i#data(Ri)#data143西北农林科技大学水利与建筑工程学院例3.2
已知相应单元的内容,请指出下列指令执行后各单元内容相应的变化。① MOVA,R6② MOVR7,70H③MOV70H,50H④MOV40H,@R0⑤MOV@R1,#88H解: ①MOVA,R6执行后A=30H ②MOVR7,70H执行后R7=40H③MOV70H,50H执行后(70H)=60H④MOV40H,@R0执行后(40H)=60H⑤MOV@R1,#88H执行后(66H)=88H44西北农林科技大学水利与建筑工程学院,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data源操作数和目的操作数不能同时为Rn45西北农林科技大学水利与建筑工程学院
2.16位数据传送指令(1条)注意:以上指令结果不影响程序状态字寄存器PSW标志。3.外部数据传送指令(4条)
助记符格式机器码(B)相应操作指令说明机器周期MOVDPTR,#data1610010000data15~8data7~0(DPTR)#data16把16位常数装入数据指针246西北农林科技大学水利与建筑工程学院
注意:(1)外部RAM只能通过累加器A进行数据传送。(2)累加器A与外部RAM之间传送数据时只能用间接寻址方式,间接寻址寄存器为DPTR,R0,R1。(3)以上传送指令结果通常影响程序状态字寄存器PSW的P标志。例3.3
把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。解:
MOVDPTR,#2040H MOVXA,@DPTR;先将2040H单元的内容传送到累加器A中
MOVDPTR,#2560H MOVX@DPTR,A;再将累加器A中的内容传送到2560H单元中47西北农林科技大学水利与建筑工程学院,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA48西北农林科技大学水利与建筑工程学院4.程序存储器数据传送指令(查表专用程序)(2条)
MOVC
注意:(1)用于内部、外部程序存储器。只能读、不能写。(2)以上指令结果影响程序状态字寄存器PSW的P标志。(3)一般用于查表操作。查表指令用于查找存放在程序存储器中的表格,范围为64k。
(4)一般用符号赋值给DPTR以表明数据表的起始地址。【P63,例题3-2】近程查表远程查表49西北农林科技大学水利与建筑工程学院例3.1用查表法把累加器中的十六进制转换为ASCII码,并送回累加器中。查表程序如下:
2000HBA:INCA 2001 MOVCA,@A+PC 2002 RET
2003 DB30H 2004 DB31H 2005 DB32H
…
… 2012 DB46H
如果以上,A中十六进制为00H,加1后为01H,取出MOVC指令后(PC)=2002H,RET一单元,则(A)+(PC)=2003H,将30H送入A中。50西北农林科技大学水利与建筑工程学院5.数据交换指令1)字节交换指令(3条)-Exchange
注意:以上指令结果影响程序状态字寄存器PSW的P标志。主要用于内部RAM和A之间。,AXCHdirectRn@RidirectARn@Ri51西北农林科技大学水利与建筑工程学院2)半字节交换指令(1条)
-exchangelow-orderdigital注意:上面指令结果影响程序状态字寄存器PSW的P标志。3)累加器A中高4位和低4位交换(1条)注意:上面指令结果不影响程序状态字寄存器PSW标志。
52西北农林科技大学水利与建筑工程学院例题:(R0)=35H,(35H)=0D7H,(A)=82H例3.4
设内部数据存储区2AH、2BH单元中连续存放有4个BCD码,试编写一程序把这4个BCD码倒序排序,即:
XCHA,R0XCHA,@R0XCHDA,@R0SWAPA(A)=35H,(R0)=82H(A)=0D7H,(R0)=35H,(35H)=82H(A)=87H,(R0)=35H,(35H)=0D2H(A)=28H53西北农林科技大学水利与建筑工程学院解:
MOVR0,#2AH ;将立即数2AH传送到寄存器R0中
MOVA,@R0 ;将2AH单元的内容传送到累加器A中
SWAPA ;将累加器A中的高4位与低4位交换
MOV@R0,A ;将累加器A的内容传送到2AH单元中
MOVR1,#2BH MOVA,@R1 ;将2BH单元的内容传送到累加器A中
SWAPA;将累加器A中的高4位与低4位交换
XCHA,@R0 ;将累加器A中的内容与2AH单元的内容交换
MOV@R1,A ;累加器A的内容传送到2BH单元54西北农林科技大学水利与建筑工程学院6.堆栈操作指令(2条)注意:(1)堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针;堆栈指针缺省为SP=07H。(2)堆栈遵循后进先出的原则安排数据。(3)堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令应写成:
PUSH/POPACC
或PUSH/POP0E0H(4)堆栈通常用于临时保护数据及子程序调用时保护现场/恢复现场。(5)以上指令结果不影响程序状态字寄存器PSW标志。(6)堆栈操作是通过堆栈指示器SP进行的读写操作,是以SP为间接寄存器的寻址方式。55西北农林科技大学水利与建筑工程学院例
设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。解:
MOVSP,#30H;设置堆栈指针,SP=30H,为栈底地址
PUSHACC;SP+1→SP,SP=31H,ACC→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHDPL;SP+1→SP,SP=33H,DPL→(SP)
…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H56西北农林科技大学水利与建筑工程学院与上面程序区别解:
MOVSP,#30H;设置堆栈指针,SP=30H,为栈底地址
PUSHDPL;SP+1→SP,SP=31H,DPL→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHACC;SP+1→SP,SP=33H,ACC→(SP)
…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H57西北农林科技大学水利与建筑工程学院3.2.3算术运算类指令算术运算都是针对8位无符号数的。1)加法指令(8条)-Add/Addwithcarry注意:(1)ADD与ADDC的区别为是否加进位位Cy。(2)指令执行结果均在累加器A中。(3)以上指令结果均影响程序状态字寄存器PSW的Cy、OV、AC和P标志。direct58西北农林科技大学水利与建筑工程学院例,将RAM中40H和41H单元分别存放的两个数相加,和存放在42H中。
MOV R0,#40H ;RO=40H MOV A,@R0 ;A=(40H) INC RO ;RO=41H ADD A,@RO ;(40H)+(41H) INC RO ;RO=42H MOV @RO,A ;(42H)←(40H)+(41H)准备被加数准备加数求和准备和空间59西北农林科技大学水利与建筑工程学院例3.3:被加数放在内部RAM:20H~22H单元(低位在前),加数放在内部RAM:2AH~2CH单元(低位在前),和存于:20H~22H单元。
MOVR0,#20H MOVR1,#2AH MOVR7,#03H CLRCLOOP:MOVA,@RO ADDCA,@R1 MOV@R0,A INCR0 INCR1 DJNZR7,LOOP CLRA ADDCA,#OOH;处理进位
MOV@RO,A 处理可能的进位60西北农林科技大学水利与建筑工程学院编写指令:完成9878H+8934H的运算。分析:32H、31H存9878H,34H、33H存8934H,和放入35H、36H,进位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HMOV 35H,AMOV A,34HADDC A,32HMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A61西北农林科技大学水利与建筑工程学院2)减法指令(4条)-subtractwithborrow注意:(1)减法指令中没有不带借位的减法指令,在需要无借位操作时,可先将Cy清0(CLRC)。(2)指令执行结果均在累加器A中。(3)减法指令结果影响程序状态字寄存器PSW的Cy、OV、AC和P标志。
62西北农林科技大学水利与建筑工程学院3)加1指令(5条)
注意:以上指令结果除了第一个外,其它不影响程序状态字寄存器PSW。即使在加1过程中低8位有进位,也是直接进上高8位而不置进位标志CY。例分别指出指令INCR0和INC@R0的执行结果。设R0=30H,(30H)=00H。解:INCR0 ;R0+1=30H+1=31H→R0,R0=31H
INC@R0 ;(R0)+1=(30H)+1→(R0),
(30H)=01H,R0中内容不变63西北农林科技大学水利与建筑工程学院4)减1指令(4条)-Decrement/Decrease
注意:以上指令结果除第一项外不影响程序状态字寄存器PSW。没有DPTR减1指令。例题:(A)=0FH;(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH DECA;(A)=0EH DECR7;(R7)=18H DEC30H;(30H)=0FFH DEC@R1;(40H)=0FEH64西北农林科技大学水利与建筑工程学院5)乘法指令(1条)-Mulitply
注意:乘法结果影响程序状态字寄存器PSW的OV(积超过0FFH,则置1,否则为0)和Cy(总是清0)以及P标志。例:(A)=50H,(B)=0A0H,MULAB,(A)=00H,(B)=32H,CY=0,OV=1例题:3-10两乘数放入40H、41H,乘积放入43H、42H中。
ORG1000HMOVR0,#40HMOVA,@R0INCR0MOVB,@R0MULABINCR0MOV@R0,AINCR0MOV@R0,BEND65西北农林科技大学水利与建筑工程学院6)除法指令(1条)-Divide/Division除法注意:(1)除法结果影响程序状态字寄存器PSW的OV(除数为0,则置1,否则为0)和Cy(总是清0)以及P标志。(2)当除数为0时结果不能确定。66西北农林科技大学水利与建筑工程学院例题:累加器A中数0FEH,转化为3位BCD码。百位-40H,十位-41H,个位-42H。ORG 2000HMOV A,#0FEHMOV B,#100DIV ABMOV 40H,AMOV A,BMOV B,#10DIV ABMOV 41H,AMOV 42H,BEND此程序广泛应用于十六进制对十进制转化中。67西北农林科技大学水利与建筑工程学院7)BCD码调整指令(1条)-decimalAdjustment
BCD(BinaryCodedDecimal)码用4位二进制码表示一位十进制数的编码方式。
BCD调整的三种情况:
·A中低4位大于9或辅助进位位AC=1,则进行低4位加6。AA+06H
·A中高4位大于9或CY=1,则进行高4位加6。AA+60H
·A中高4位=9,低4位大于9,则高低4位都加6。AA+66H
注意:(1)BCD码是用二进制形式表示十进制数,例如十进制数45,其BCD码形式为45H。BCD码只是一种表示形式,与其数值没有关系。(2)结果影响程序状态字寄存器PSW的Cy、OV、AC和P标志。68西北农林科技大学水利与建筑工程学院(3)DAA指令将A中的二进制码自动调整为BCD码。(4)DAA指令只能跟在ADD或ADDC加法指令后,不适用于减法。(5)该指令结果影响程序状态字寄存器PSW的Cy、OV、AC和P标志。例3.7说明下列指令的执行结果。解:MOVA,#05H ;05H→A ADDA,#08H ;05H+08H→A,A=0DH
DAA ;自动调整为BCD码,A=13H
69西北农林科技大学水利与建筑工程学院编写指令:完成9878+8934的运算。分析:32H、31H存9878,34H、33H存8934,和放入35H、36H,进位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HDA AMOV 35H,AMOV A,34HADDC A,32HDA AMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A70西北农林科技大学水利与建筑工程学院3.2.4逻辑运算及移位类指令(24条)1)逻辑与指令(6条)Andlogic
A*B,注意:(1)以上指令结果通常影响程序状态字寄存器PSW的P标志。(2)逻辑与指令通常用于将一个字节中的指定位清0,其它位不变。71西北农林科技大学水利与建筑工程学院例题:内部ROM的40H单元中有一压缩BCD码,编程将其变为非压缩BCD码。且高位42H,低位41H。ORG 2000HMOV 40H,#37HMOV A,40HANL A,#0FHMOV 41H,AMOV A,40HSWAP AANL A,#0FHMOV 42H,ANOPEND72西北农林科技大学水利与建筑工程学院2)逻辑或指令(6条)注意:(1)以上指令结果通常影响程序状态字寄存器PSW的P标志。(2)逻辑或指令通常用于将一个字节中的指定位置1,其余位不变。73西北农林科技大学水利与建筑工程学院3)逻辑异或指令(6条)注意:(1)以上指令结果通常影响程序状态字寄存器PSW的P标志。(2)“异或”原则是相同为0,不同为1。可对某些位取反(求反的与1异或,保留的与0相异或)。74西北农林科技大学水利与建筑工程学院例题:当需要只改变数据的某几位,而其他位不变时,不能使用直接传送方法,只能通过逻辑运算完成,如:将A的低4位传送到P1口,而P1口高4位保持不变。
MOVRO,A;先暂存A中数据以便恢复
ANLA,#0FH;屏蔽高4位(0000++++) ANLP1,#OFOH;屏蔽低4位(****0000) ORLP1,A;P1←(****++++) MOVA,RO4)累加器A清0和取反指令(2条)75西北农林科技大学水利与建筑工程学院5)循环移位指令(4条)注意:执行带进位的循环移位指令之前,必须给Cy置位或清0。
移位操作也可看作乘除运算。
76西北农林科技大学水利与建筑工程学院3.2.5控制转移类指令控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。1.无条件转移指令(4条)1)长转移指令
注意:(1)该指令结果不影响程序状态字寄存器PSW。(2)该指令可以转移到64K中程序存储器中的任意位置。77西北农林科技大学水利与建筑工程学院2)绝对转移指令(1条)注意:(1)该指令结果不影响程序状态字寄存器PSW。(2)该指令转移范围是2K字节。例3.9
指令KWR:AJMPKWR1的执行结果。解:设KWR标号地址=1030H,KWR1标号地址=1100H,该指令执行后PC首先加2变为1032H,然后由1032H的高5位(0001
000000110010)和1100H(00010001
00000000)的低11位拼装成新的PC值=00010001
00000000B,即程序从1100H开始执行。78西北农林科技大学水利与建筑工程学院3)短转移指令(1条)注意:(1)该指令结果不影响程序状态字寄存器PSW。(2)该指令的转移范围是以本指令的下一条指令为中心的
-128~+127字节以内。(3)在实际应用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用标号来代替的,不一定写出它们的具体地址。如何计算偏移量:向前:Rel=目的地址-(源地址+2)=地址差-2向后:Rel=FFH-(地址差)-2+1=FEH-地址差79西北农林科技大学水利与建筑工程学院4)变址寻址的无条件转移指令(1条)注意:(1)该指令结果不影响程序状态字寄存器PSW。(2)本指令不影响标志位,不改变@A及DPTR中的内容。常用于多分支程序结构中,可在程序运行过程中动态地决定程序分支走向。80西北农林科技大学水利与建筑工程学院2.条件转移指令(8条)1)累加器A判0指令(2条)注意:(1)以上指令结果不影响程序状态字寄存器PSW。(2)转移范围与指令SJMP相同。81西北农林科技大学水利与建筑工程学院2)比较转移指令(4条)注意:(1)以上指令结果影响程序状态字寄存器PSW的Cy标志。(2)转移范围与SJMP指令相同。82西北农林科技大学水利与建筑工程学院3)减1非零转移指令(2条)注意:(1)DJNZ指令通常用于循环程序中控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购销合同延长期限
- 汽车借款合同格式范文
- 冰柜冷库运输购销合同
- 写字楼物业管理服务合同案例
- 酒店泊车服务合同范本
- 酒店家具供应商协议范本
- 外籍教师聘请合同中英文
- 购车合同补充协议样本
- 维修施工分包协议范本
- 房产建设借款合同
- 中职旅游专业《中国旅游地理》说课稿
- 2024年山东能源集团限公司高校毕业生招聘450人高频考题难、易错点模拟试题(共500题)附带答案详解
- 2024年全国中学生地理知识竞赛试题及答案
- 2024年秋季人教版七年级上册生物全册教学课件(2024年秋季新版教材)
- 两弹一星精神(教学设计)-2023-2024学年小学科学课后服务科普课程
- 2023年下半年广西高中学业水平考试数学试卷真题(含答案详解)
- 2024-2030年农业种植行业市场发展分析及发展趋势与投资前景研究报告
- 8.1 法治国家 课件高中政治统编版必修三政治与法治
- 农小蜂-2024年中国花卉产业数据分析简报
- 2024年国家教育部留学服务中心非编招聘5人历年(高频重点复习提升训练)共500题附带答案详解
- 艺术品金融化与资产证券化
评论
0/150
提交评论