单片微机原理系统设计与应用:第3章 MCS-51指令系统_第1页
单片微机原理系统设计与应用:第3章 MCS-51指令系统_第2页
单片微机原理系统设计与应用:第3章 MCS-51指令系统_第3页
单片微机原理系统设计与应用:第3章 MCS-51指令系统_第4页
单片微机原理系统设计与应用:第3章 MCS-51指令系统_第5页
已阅读5页,还剩136页未读 继续免费阅读

下载本文档

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

文档简介

§3.1指令系统概述§3.2MCS-51指令的寻址方式§3.3MCS-51指令系统介绍下页●

一台计算机所能执行的全部的指令集合§3.1指令系统概述指令是计算机中具有特定功能的操作命令●程序与程序设计按预定要求编排的指令序列称为程序。编排的过程称为程序设计●指令系统设计一种CPU,一般从设计指令系统开始因而,一种机器的指令系统是机器本身固有的决定了机器的性能用户无法改变,必须继承、学习、掌握、应用上页下页回目录机器语言:二进制代码,是机器唯一能直接识别、执行的语言。汇编语言:为了记忆和阅读方便,制造商对指令系统每一条指令,都给出了指令助记符。用助记符,操作数,标号编写的程序称为汇编语言源程序。一、汇编语言汇编语言必须翻译成机器语言才能被机器执行●程序设计语言汇编语言:高级语言:符号语言:上页下页回目录如P55,图3-1所示。全是机器码完成由汇编语言到机器代码的过程叫汇编汇编的方法有两种:自动汇编、手工汇编由机器代码到汇编语言的过程叫反汇编汇编语言源程序机器语言

汇编

反汇编上页下页回目录交叉汇编二、汇编语言的格式[

标号:]

操作码[操作数]

[;注释]其中除操作码部分是必须的,括号内的区段是任选项。1、标号标号是该指令的符号地址,可根据需要设定必须以字母开始,以“

:”结束,长度不超过8个字符系统中的保留字符不能作标号,如:SFR名、ADD等标号可被其他语句的操作数直接引用源程序中,一个标号只能定义一个语句,不能相重名字保持一义性上页下页回目录一个汇编语句分为四个区段操作码操作码操作码2、操作码由指令系统的助记符、伪指令助记符组成。操作码是每一句汇编语言所必须的操作码和操作数之间用空格分开3、操作数可为二进制数(B),十进制数(D),十六进制数(H)数字大于9,则数字应以“0”开头可以是操作数地址、立即数、标号、表达式如M+3目的操作数和源操作数之间用“,”分开可以是寄存器名如A、B、R、DPTRM标号被定义过的上页下页回目录BinaryDecimalHexadecimal指出该语句的操作性质4、注释以“;”开头,是程序员对指令操作的解释,以帮助阅读、理解程序的意义可有可无汇编时对这部分不予处理,不译成任何机器代码可用英语或某种简洁的方式解释指令,或打印程序清单上页下页回目录三、伪指令伪指令仅在汇编过程中起控制作用不产生可执行目标代码,又称为软指令1、起点指令ORG格式:ORG××××H功能:给程序起始地址或数据块的起始地址赋值例:用法:一般出现在每段源程序或数据块的开始一个源程序可多次出现ORG指令ORG

8000HSTART:MOVA,#74H

┇;源程序的起始地址为8000H上页下页回目录首地址首地址2、结束命令END格式:END功能:汇编程序结束标志附在一个源程序的结尾一个源程序只能出现一次END指令3、定义字节命令DB格式:功能:标号:DB

字节常数或字符串(8位)定义字节的内容,汇编程序把DB定义的字节依次存入标号开始的存储单元用法:有定义的内存单元地址项或项表上页下页回目录例:ORG8000HTAB:

DB45H,73,‘5’,‘A’TAB1:DB101B伪指令ORG定义了TAB的起始地址为8000H,伪指令DB定义了8000H~8003单元的内容依次为:(8000H)=45H(8001H)=49H(8002H)=35H(8003H)=41H(8004H)=05HTABTAB1(1)由ORG定义(2)跟在其他源程序之后上页下页回目录4、定义字命令DW格式:功能:标号:DW字或字表定义若干个字(双字节)例:ORG8000HTAB:DW

7234H,8AH,10(8000H)=72H(8001H)=34H(8002H)=00H(8003H)=8AH(8005H)=0AH汇编后:(8004H)=00H上页下页回目录5、定义空间命令DS格式:功能:标号:DS

数据或字符及表达式例:(8008H)=30H(8009H)=8AH从指定单元地址开始,由数据或字符及表达式的值来定义应保留的单元数,备用ORG8000HDS08HDB30H,8AH即:8000H~8007H单元保留备用定义空间上页下页回目录6、等值命令EQU格式:字符名称EQU数据或汇编符号功能:将一个数据或汇编符号赋予标号段规定的字符名称例:ORG8000HAA

EQUR6MOV

A,AA;AA与R6等值;A

(R6)上页下页回目录例:A10EQU10DELYEQU07EBHMOVA,A10LCALLDELY;A10=10;DELY=07EBH;转向入口地址

07EBH使用EQU指令,须先赋值后使用,不能反之上页下页回目录7、数据地址赋值等值命令DATA格式:字符名称DATA数据或表达式功能:此命令把数据/代码地址赋予标号段所规定的字符名称。定义的字符名称可先使用后定义INDEXJDATA8389HORG8000HINDEXJDATA8096HLJMPINDEXJENDORG8000HLJMP8096HEND;INDEXJ这个字符名称的地址为8389H例:上页下页回目录等价于EQU与DATA的区别(1)DATA与EQU相似,但DATA定义的字符名称,

可先使用后定义,EQU则不能(2)EQU指令可把汇编符号赋给字符名称,

DATA则不能

(3)DATA可把表达式的值赋给字符名称,

EQU则不能

DATA常在程序中定义数据地址EQU常在程序中定义字符数据

上页下页回目录8、位地址符号命令BIT格式:字符名称BIT位地址功能:把位地址赋予标号段的字符名称A1

BIT

P1.0A2BIT

P2.0例:;P1.0,P2.0赋予位地址字符名称

A1、A2,在编程时可以直接把

A1、A2当成位地址使用上页下页回目录汇编程序的操作分两次扫描(汇编)第一次扫描(汇编)检查语法结构,对源程序中的符号、表达式、标号进行定义,处理伪指令,建立符号表上页下页回目录显示ERROR,并提示行号显示ERROR,并提示行号修改!修改!第二次扫描(汇编)汇编成目标代码和汇编程序清单可执行的代码(机器码)三、MCS-51指令系统的特点1、执行速度快,存储效率高MCS-51指令系统共有111条指令按字节分单字节指令49条双字节指令45条三字节指令17条按周期分单周期指令64条双周期指令45条四周期指令2条设时钟频率为12MHz,则指令执行的时间分别为:1

s58

2

s40

4

s2

占居空间占居时间时空上页下页回目录2、指令易掌握,功能强具有丰富的位操作指令、查表指令、散转指令乘除指令等。构成了完整的指令系统3、适合于控制、智能仪表布尔处理机布尔运算器ALU布尔累加器CY(PSW.7)布尔RAM区共128位布尔I/O口P0~P3口每位都可做布尔I/O口

布尔指令子集17条布尔指令共221位上页下页回目录四、寻址方式(7种)⑴立即寻址⑵直接寻址⑶寄存器寻址⑷寄存器间接寻址⑸基址寄存器加变址寄存器间接寻址⑹相对寻址⑺位寻址上页下页回目录五、MCS-51指令分类(5类)⑴数据传送(29条)⑵算术运算(24条)⑶逻辑运算(24条)⑷控制转移(17条)⑸布尔处理(17条)共111条指令上页下页回目录介绍描述指令符号的意义—当前选中寄存器区的8个工作寄存器(R0~R7)RnRidirect-——8位内部RAM单元地址00H~7FH——专用特殊功能寄存器SFR的地址80H~FFH——立即数(8位)#data#data16——立即数(16位)—当前选中寄存器区中可做间址寄存器的2个工作寄存器(R0、R1)n=0~7i=0、1上页下页回目录addr16—16位目的地址,用于LCALL、LJMP指令

地址范围64KBROM空间addr11—11位目的地址,用于ACALL、AJMP指令

地址范围2KBROM空间relDPTR—数据地址指针,可做16位间址寄存器bit—内RAM或SFR中的直接位寻址—8位带符号的偏移量,

用于SJMP和所有的条件转移指令中范围-128~127上页下页回目录A—累加器B—专用寄存器,用于MUL和DIV指令C—位累加器(PSW.7),进位/借位标志@—间址或基址寄存器前缀如@Ri,@A+DPTR/—位操作的前缀,表示对该位操作数取反(X)—X中的内容((X))—由X寻址的单元中的内容箭头左边的内容被箭头右边的内容所代替@DPTR,@A+PC上页下页回目录§3.2MCS-51指令的寻址方式用何种方式寻找指令的操作数或指令的执行地址1、立即寻址寻址空间:指令形式:操作码立即数程序存储器指令的操作数存放在程序存储器中操作数紧跟操作码后面立即寻址:在哪里?用何种方式寻找OP#dataImmediateAddressing上页下页回目录指令的寻址方式:指令的寻址方式:MOVA,#30H;A#30H例1:操作码立即数PCPCPC74H30HROM××A30HMOVDPTR,#8000H;DPTR#8000H例2:操作码PCPCPC立即数的高8位立即数的低8位DPHDPLPC80H00H90H80HROM00H

上页下页回目录2、直接寻址寻址空间:指令的三种形式:操作码操作数地址在指令中直接给出操作数的真实地址操作码后面紧跟一个实际操作数地址操作码操作数地址立即数操作码源操作数地址目的操作数地址内RAM的低128字节特殊功能寄存器SFR区直接寻址直接寻址是访问SFR的唯一方法DirectAddressing上页下页回目录00H~7FH80H~FFHCPU内部直接间接“与”上页下页回目录MOVA,30H;A(30H)例1:操作码操作数地址PCPCPC74H30HROM××A内RAM××30H××ANL30H,#30H;30H(30H)∧#30H

例2:操作码PCPCPC直接地址立即数PC53H30HROM

30H××内RAM××30H

××ALU“结果”3、寄存器寻址寻址空间:指令的三种形式:操作码当前选定的寄存器内容就是实际操作数操作码立即数操作码直接地址R0~R7,由RS0、RS1确定寄存器区/4A、B、CY(位),DPTR、ABMOVA,R3;A(R3)

例1:ADDA,R3;A(A)+(R3)例2:寄存器寻址:RegisterAddressing操作数隐含操作数显然隐含寻址上页下页回目录4、寄存器间接寻址寻址空间:指令的三种形式:操作码操作码立即数操作码直接地址内部RAM(@R0,@R1,SP)外部RAM(@R0,@R1,@DPTR)寄存器间接寻址:指令选定的寄存器内容就是实际的操作数地址RegisterIndirectAddressing上页下页回目录MOV@R0,A例1:操作码PCPCF6HROMR030H;累加器传送指令内RAM××30HA××××MOVXA,@DPTR例2:操作码PCPCE0HROMDPTR2000H外RAM××2000HA×××ד读”RD“读”上页下页回目录5、基址寄存器加变址寄存器间接寻址基址寄存器加变址寄存器间接寻址:

以DPTR或PC作基址寄存器,A作变址寄存器两者相加形成操作数地址。寻址空间:程序存储器(@A+DPTR、@A+PC)指令形式:操作码上页下页回目录MOVCA,@A+DPTR例:操作码PCPCDPTR2400HA

0FH93HROM……××240FH设(A)=0FH(DPTR)=2400H××ALU“读”PSEN“读”MOVCA,@A+DPTR上页下页回目录6、相对寻址程序存储器寻址空间:指令的三种形式:操作码rel操作码

直接地址rel操作码

立即数rel相对寻址以当前PC值为基准地址,加上指令的偏移量“rel”,结果为目标地址。rel为有符号补码数,范围:-128~+127一般为双字节或三字节指令RelativeAddressing上页下页回目录寻址指令执行地址目标地址JNZrel例:;累加器A不等零则转移设:rel=23H2025H2002H2001H2000HROM70H23H下一条指令.......操作码PCPCPC(PC)=2002Hrel=23H修正后转移目标地址D(PC)=2025HPCALU偏移量上页下页回目录(PC)=2002HRel=23H)005202HD=2025H2112H2111H2110HROMDFHF2H下一条指令.......操作码PCPCPC(PC)=2112Hrel=F2H修正后转移目标地址D(PC)=2104HALU偏移量上页下页回目录例:DJNZR7,rel

;(R7)–1不为“0”则转PC2104H指令(PC)=2112HRel=F2H)FF4012HD=7、位寻址寻址空间:片内RAM的20H~2FH字节地址位地址:00H~7FH

共128位SFR中12个能被8整除的字节地址位地址请参看P43

表2-16共93位BitAddressing

以访问触发器的方式,对内部RAM、SFR的位地址空间进行访问,称为位寻址。位地址用于布尔指令。共221位上页下页回目录寻址方式与相应的寻址空间小结:寄存器R0~R7,A,BCY,DPTR片内内RAM的低128字节特殊功能寄存器SFR直接寻址direct寄存器间址@R0,@R1,SP

@R0,@R1,@DPTR片内RAM、片外RAM与I/O口立即数#data

程序存储器程序存储器基址加变址@A+DPTR,@A+PC程序存储器相对寻址PC+rel位寻址片内RAM20H~2FH部分SFRbit利用的变量

使用的空间方式上页下页回目录§3.3MCS-51指令系统介绍MCS-51系统指令系统共111条,按操作功能分类:⑴数据传送类⑵算术运算类⑶逻辑运算类⑷控制转移类⑸布尔处理类上页下页回目录一、数据传送类(29条)用到的指令助记符有5种:片内传送MOV片外传送MOVX查表传送MOVC累加器交换XCH、XCHD、SWAP堆栈操作PUSH、POP上页下页回目录1、MOV类传送指令格式:MOV〈目的字节〉,〈源字节〉功能:把源字节内容送目的字节,源字节内容不变以累加器A为目的字节的传送:⑴立即数送累加器MOVA,#data74H立即数

机器码;立即数#data送累加器A

双字节指令,机器码的第一字节为74H,第二字节为立即数上页下页回目录⑵寄存器内容送累加器MOVA,Rn(n=0~7)单字节指令,机器码相应为E8H、E9H、…、EFH工作寄存器组的选择由状态字中的RS0、RS1确定⑶内RAM或SFR内容送累加器E8H~EFH机器码MOVA,direct双字节指令,机器码的第一字节为E5H,第二字节为直接寻址字节的直接地址E5H直接地址机器码;Rn的内容送累加器A;以direct为地址的单元的内容送累加器A上页下页回目录⑷内RAM内容送累加器MOVA,@Ri(i=0、1)单字节指令,机器码相应为E6H、E7H;以Ri内容为地址单元中的数送累加器AE6H~E7H机器码以Rn为目的字节的传送:⑸立即数送寄存器MOV

Rn,#data(n=0~7)78H~7FH

立即数

机器码;立即数#data送累加器Rn双字节指令,机器码的第一字节为78H~7FH,第二字节为立即数上页下页回目录⑹累加器内容送寄存器RnMOVRn

,A(n=0~7);累加器A的内容送Rn单字节指令,机器码相应为F8H~FFHF8H~FFH机器码⑺内RAM或SFR内容送寄存器RnMOVRn

,direct(n=0~7)双字节指令A8H~AFH直接地址

机器码;以direct为地址的单元的内容送寄存器Rn上页下页回目录⑻立即数送内RAM或SFRMOVdirect,#data;立即数#data送以direct为地址的单元三字节指令直接地址立即数75H机器码⑼累加器内容送内RAM或SFRMOVdirect,A;累加器送以direct为地址的单元F5H直接地址机器码二字节指令直接地址为目的字节的传送:上页下页回目录⑽寄存器内容送内RAM或SFRMOVdirect,Rn(n=0~7);寄存器Rn内容送以direct为地址的单元二字节指令88H~8FH直接地址机器码⑾内RAM或SFR之间直接传送MOVdirect1,direct2

源地址目的地址85H机器码;内RAM或SFR任意两个单元之间传送数据三字节指令上页下页回目录⑿内RAM数据送内RAM或SFRMOV

direct,@Ri(i=0、1)二字节指令86H~87H直接地址机器码;以Ri内容为地址单元中的数送内RAM或SFR⒀立即数送内RAMMOV@Ri,#data(i=0、1);立即数#data送以Ri内容为地址的单元76H~77H

立即数机器码二字节指令上页下页回目录⒁累加器内容送内RAMMOV@Ri,A(i=0、1);累加器内容送以Ri内容为地址的单元单字节指令F6H~F7H机器码⒂内RAM或SFR数据送内RAMMOV@Ri,direct(i=0、1)二字节指令A6H~A7H直接地址

机器码;以direct为地址的单元内容送Ri内容为地址的单元上页下页回目录⒃16位立即数传送指令MOVDPTR,#data16;16位立即数送DPTR中,设置地址指针。三字节指令

立即数高8位

立即数低8位90H

机器码上页下页回目录MOV类传送指令小结MOVA,#data立即数送累加器MOVA,Rn寄存器内容送累加器MOVA,direct直接地址内容送累加器MOVA,@Ri内RAM内容送累加器MOVRn,#data立即数送寄存器MOVRn

,A累加器内容送寄存器RnMOVRn

,direct直接地址内容送寄存器Rn指令助记符说明字节2121212上页下页回目录MOV片内传送指令

MOV类传送指令小结MOVdirect1,direct2内RAM或SFR之间直接传送MOVdirect,@Ri内RAM数据送内RAM或SFRMOVdirect,#data立即数送内RAM或SFRMOVdirect,A累加器内容送内RAM或SFRMOVdirect,Rn寄存器内容送内RAM或SFR指令助记符说明字节32232MOV@Ri,#data立即数送内RAMMOV@Ri,A累加器内容送内RAMMOV@Ri,direct内RAM数据送内RAM或SFRMOVDPTR,#data1616位立即数传送指令2123上页下页回目录MOV片内传送指令2、MOVX类传送指令累加器A与外部RAM传送数据用MOVX⑴外部RAM送累加器AMOVXA,@Ri(i=0、1)单字节指令,机器码相应为E2H、E3H;以Ri内容为外部RAM地址的单元中的数送AE2H~E3H机器码⑵累加器内容送外RAMMOVX@Ri,A(i=0、1);累加器内容送以Ri内容为地址的外部RAM单元单字节指令F2H~F3H机器码上页下页回目录RDWR⑶外部RAM送累加器AMOVXA,@DPTR单字节指令,机器码相应为E0H;以DPTR内容为地址的外部RAM单元中的数送AE0H机器码⑷累加器内容送外RAMMOVX@DPTR,A;累加器内容送以DPTR内容为地址的外部RAM单元单字节指令,机器码相应为F0HF0H机器码上页下页回目录RDWRMOVX类传送指令小结

指令助记符说明字节1111MOVXA,@Ri外部RAM送累加器AMOVX@Ri,A累加器内容送外RAMMOVXA,@DPTR外部RAM送累加器AMOVX@DPTR,A累加器内容送外RAM上页下页回目录MOVX

片外传送指令例:将片外RAM120H单元的内容传送到片外RAM

地址为78H的单元。MOVDPTR,#0120HMOVXA,@DPTRMOVR0,#78HMOVX@R0,A例:将片内RAM12H单元的内容传送到片内RAM

地址为78H的单元。MOV78H,12H;外部RAM送累加器A;累加器内容送外RAM上页下页回目录3、MOVC类传送指令MOVC类传送指令,均为基址加变址寄存器寻址:MOVCA,@A+DPTR

;以DPTR作基址寄存器,A作变址寄存器,两者;相加形成16位ROM地址,将该单元内容读入A单字节指令,机器码相应为93H93H机器码⑴以DPTR作基址加变址寻址上页下页回目录长查表指令16位PSENMOVCA,@A+PC单字节指令,机器码相应为83H83H机器码⑵以PC作基址加变址寻址

;取指后PC增“1”,以当前PC作基址,A作变址,两者;相加形成16位ROM地址,将该单元内容读入A上页下页回目录短查表指令PSENMOVC类传送指令小结指令助记符说明字节11MOVCA,@A+DPTRMOVCA,@A+PC以DPTR作基址加变址寻址以PC作基址加变址寻址上页下页回目录MOV

DPTR,#2000HMOVCA,@A+DPTR2004H2003H2002H2001H2000H2008H2009H2005H2006H2007H存储器00H01H04H09H10H19H24H31H40H51H例:在外部ROM中存放0~9的平方值。根据累加器

A中的数(0~9),查找对应的平方值。用DPTR作基址寄存器指向表格的首地址用A作变址寄存器实际上A中的值是表格中的第几项上页下页回目录表格首址操作码PCPCDPTR2000HA

03H

09HMOVCA,@A+DPTR93HROM……00H2000H01H04H09H2001H2002H2003H…;设(A)=03H,查“3”的平方ALU上页下页回目录用PC作基址寄存器,它并不指向表格首址;是PC当前值与所查表格首址之间的距离;即(PC)+#data

TABBEL表格首址设(A)=03H,是表格中的第3项;单字节指令,设指令在ROM中的地址为1FF0HADDA,#dataMOVCA,@A+PC2000H1FF1H-000FH上页下页回目录;#data是变址调整值#dataPC当前值表格首址TABBEL:DB00HDB01HDB04H…DB09H2000H12HA…

PCPC2003HTABBELPCPC操作码MOVCA,@A+PC93HROM……00H2000H01H04H09H2001H2002H2003H…1FF0H1FF1H(PC)=1FF1HA12H09H;查“3”的平方上页下页回目录ALUTABBEL4、XCH、XCHD、SWAP类传送指令⑴寄存器内容与累加器内容交换XCHA,Rn(n=0~7)C8H~CFH机器码;(A)(Rn)单字节指令⑵内RAM或SFR内容与累加器内容交换XCHA,direct(n=0~7);(A)(direct)双字节指令C5H直接地址机器码上页下页回目录⑶内RAM内容与累加器内容交换XCHA,@Ri(i=0,1);(A)((Ri))单字节指令C6H~C7H机器码⑷内RAM内容低4位与累加器低4位内容交换XCHDA,@Ri(i=0,1);(A3~0)

((Ri)3~0)单字节指令D6H~D7H机器码上页下页回目录A(Ri)⑸累加器A高4位与低4位交换SWAPA;(A3~0)

(A7~4)单字节指令C4H机器码上页下页回目录A

交换类传送指令小结指令助记符说明字节12111XCHA,RnXCHA,direct寄存器内容与累加器内容交换直接地址内容与累加器内容交换XCHA,@RiXCHDA,@Ri内RAM内容与累加器内容交换内RAM内容低4位与累加器低4位交换SWAP

A累加器A高4位与低4位交换上页下页回目录5、堆栈操作指令⑴进栈指令PUSHdirectC0H直接地址机器码;SP自动增“1”,(SP)(SP)

+1;direct地址单元的内容压入SP指向的单元双字节指令⑵出栈指令POPdirectD0H直接地址机器码;SP自动减“1”,(SP)(SP)

-1;SP指向的单元内容弹出到以direct为地址的单元双字节指令上页下页回目录SPSP例:堆栈操作设(A)=55H,(B)=3FH’建立堆栈’压入操作’弹出操作

60H61H62H63H64H55H3FHSPMOVSP,#60HPUSHAPUSHBPOPPSWSP

结果:PSW的内容3FH,SP的内容为61H上页下页回目录PSW3FH二、算术运算类(24条)用到的指令助记符有8种:加法指令

ADD、ADDC、INC、DA减法指令SUBB,DEC乘除指令MUL,DIV算术运算类指令执行结果影响标志位:CY、AC、OV上页下页回目录见P76表3–3见P359附表Ⅰ1、不带进位加ADD⑴累加器内容加立即数ADDA,#data;A

(A)+#data双字节指令24H立即数机器码⑵累加器内容加寄存器内容ADDA,Rn(n=0~7);A

(A)+(Rn)单字节指令28H~2FH机器码上页下页回目录⑶累加器内容加内RAM内容ADDA,@Ri(i=0,1);A

(A)+((Ri))单字节指令26H~27H机器码⑷累加器内容加内RAM内容或SFRADDA,direct;A

(A)+(direct)双字节指令25H直接地址机器码上页下页回目录ADD类指令小结指令助记符说明字节2112ADDA,#dataADDA,Rn立即数加到累加器寄存器内容加到累加器ADDA,@RiADDA,direct内RAM内容加到累加器直接地址内容加到累加器上页下页回目录2、带进位加ADDC⑴累加器内容加立即数加进位位ADDCA,#data;A

(A)+#data+CY双字节指令34H立即数机器码⑵累加器内容加寄存器内容加进位位ADDCA,Rn(n=0~7);A

(A)+(Rn)+CY单字节指令38H~3FH机器码上页下页回目录⑶累加器内容加内RAM内容加进位位ADDC

A,@Ri(i=0,1);A

(A)+((Ri))+CY单字节指令36H~37H机器码⑷累加器内容加内RAM内容或SFR加进位位ADDC

A,direct;A

(A)+(direct)+CY双字节指令35H直接地址机器码上页下页回目录指令符助记说明字节2112ADDCA,#dataADDCA,Rn立即数和进位加到累加器寄存器内容和进位加到累加器ADDCA,@RiADDCA,direct内RAM内容和进位加到累加器直接地址内容和进位加到累加器ADDC类指令小结上页下页回目录无符号数相加:若和数大于255,则CY=1,否则CY=0上页下页回目录用于多字节无符号数相加

试分析执行下面的指令后,程序状态字PSW中

CY,AC,OV的内容是什么?MOVA,#53HADDA,R0MOVR0,#76HD7D6D5D4D3D2D1D0

01010011(53H)

01110110(76H)10010011(C9H)CY=0AC=0OV=C6’C7’=1

+此时C6’=1、

C7’=0则+上页下页回目录3、增量INC⑴累加器内容加“1”INC

A;A

(A)+1单字节指令⑵寄存器内容加“1”INCRn;A

(Rn)+1单字节指令08H~0FH机器码04H机器码上页下页回目录⑶内RAM或SFR内容加“1”INCdirect;(Ri)

((Ri))+1单字节指令06H~07H机器码⑷内RAM内容加“1”INC@Ri;direct(direct)+1双字节指令05H直接地址机器码上页下页回目录⑸数据指针DPTR内容加“1”INCDPTR;DPTR(DPTR)+1单字节指令A3H机器码INC指令中除INCA

指令影响P标志位,其余指令不影响任何标志位上页下页回目录INC类指令小结指令助记符说明字节1121INCAINCRn累加器内容加“1”寄存器内容加“1INC

direct内RAM或SFR内容加“1INC@Ri内RAM内容加“1INCDPTR数据指针DPTR内容加“11上页下页回目录4、十进制调整指令DAA;对累加器A,作BCD码加法后进行“过9补6”调整若[(A3~0)>9]∨[AC=1]

则(A3~0)

(A3~0)+06H若[(A7~4)>9]∨[CY=1]则(A7~4)

(A7~4)+60H注意:DA

指令不能对BCD码减法的结果进行调整D4H机器码单字节指令上页下页回目录BCDHBCDLAABCDEF0123456789BCD合法√√√非法!!!1010101111001101111011110000000101000010001110000101100101110110二进制数00000001100001000111上页下页回目录合法√√√例设(A)=37H;(R3)=36H,执行下面的程序:

00110111(37H)

00110110(36H)(6DH)

01101101过“9”

00000110

01110011补“6”(73H);(A)=6DH;(A)=73H

01110011(73H)

10011001(99H)

1

00001100(0CH)

CY

01100110

01110010(72H);(A)=0CHCY=1;(A)=72H过“9”补“6”110111100上页下页回目录ADDA,R3DA

AADDA,#99HDAA“+99”就等于减“-1”互补DAA

只能跟在加法指令之后5、减法指令SUBB⑴累加器减立即数和借位标志SUBBA,#data双字节指令94H立即数机器码⑵累加器减寄存器内容和借位标志SUBB

A,Rn(n=0~7)单字节指令98H~9FH机器码;A

(A)-#data-CY;A

(A)-(Rn)-CY上页下页回目录⑶累加器减RAM内容和借位标志SUBBA,@Ri(i=0,1)单字节指令96H~97H机器码⑷累加器内容减内RAM内容或SFR和借位标志SUBBA,direct双字节指令95H直接地址机器码;A

(A)-((Ri))-CY;A(A)-(direct)-CY上页下页回目录SUBB类指令小结指令助记符说明字节2112SUBBA,#dataSUBBA,RnSUBB

A,@RiSUBBA,direct累加器减立即数和借位累加器减寄存器内容和借位累加器减RAM内容和借位累加器减直接地址内容和借位上页下页回目录6、减量DEC⑴累加器内容减“1”DECA;A

(A)-1单字节指令⑵寄存器内容减“1DECRn;Rn(Rn)-1单字节指令18H~1FH机器码14H机器码上页下页回目录⑶内RAM或SFR内容减“1DECdirect;(Ri)

((Ri))-1单字节指令16H~17H机器码⑷内RAM内容减“1DEC@Ri;direct(direct)-1双字节指令15H直接地址机器码上页下页回目录DEC类指令小结指令助记符说明字节1121DECADEC

Rn累加器内容减“1”寄存器内容减“1”DEC

direct内RAM或SFR内容减“1”DEC

@Ri内RAM内容减“1”上页下页回目录7、MULMUL

ABDIVABA4H机器码单字节指令;执行(A)×(B)(BA)的操作CY=08、DIV单字节指令84H机器码;执行(A)/(B)后,商A余BCY=0上页下页回目录三、逻辑运算类(24条)用到的指令助记符有9种:包括与、或、异或、清除、求反、移位等操作ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC上页下页回目录1、逻辑与ANL(6条)⑴累加器内容逻辑与立即数ANL

A,#data;A(A)∧#data双字节指令54H立即数机器码⑵累加器内容逻辑与寄存器内容ANL

A,Rn(n=0~7);A

(A)∧(Rn)单字节指令58H~5FH机器码上页下页回目录⑶累加器内容逻辑与内RAM内容ANLA,@Ri(i=0,1);A

(A)∧((Ri))单字节指令56H~57H机器码⑷累加器内容逻辑与内RAM内容或SFRANLA,direct;A(A)∧(direct)双字节指令55H直接地址机器码上页下页回目录⑸累加器内容逻辑与内RAM或SFRANL

direct,A52H直接地址机器码二字节指令;direct(direct)∧A⑹立即数逻辑与RAM或SFRANLdirect,#data三字节指令直接地址立即数53H

机器码;direct(direct)∧#data上页下页回目录ANL类传送指令小结ANLA,#data立即数逻辑与累加器ANLA,Rn寄存器内容逻辑与累加器ANLA,direct直接地址内容逻辑与累加器ANLA,@Ri内RAM内容逻辑与累加器指令助记符说明字节2121ANLdirect,AANLdirect,#data累加器逻辑与内RAM或SFR立即数逻辑与RAM或SFR23上页下页回目录读–修改–写2、逻辑或ORL(6条)⑴累加器内容逻辑或立即数ORLA,#data;A(A)∨#data双字节指令44H立即数机器码⑵累加器内容逻辑或寄存器内容ORLA,Rn(n=0~7);A

(A)∨(Rn)单字节指令48H~4FH机器码上页下页回目录⑶累加器内容逻辑或内RAM内容ORL

A,@Ri(i=0,1);A

(A)∨((Ri))单字节指令46H~47H机器码⑷累加器内容逻辑或内RAM内容或SFRORLA,direct;A

(A)∨(direct)双字节指令45H直接地址机器码上页下页回目录⑸累加器内容逻辑或内RAM或SFRORLdirect,A42H直接地址机器码二字节指令;direct(direct)∨(A)⑹立即数逻辑或RAM或SFRORLdirect,#data三字节指令直接地址立即数43H

机器码;direct(direct)∨#data上页下页回目录ORL类传送指令小结ORL

A,#data立即数逻辑或累加器ORLA,Rn寄存器内容逻辑或累加器ORLA,direct直接地址内容逻辑或累加器ORLA,@Ri内RAM内容逻辑或累加器指令符号说明字节2121ORL

direct,AORLdirect,#data累加器逻辑或内RAM或SFR立即数逻辑或RAM或SFR23上页下页回目录读–修改–写3、逻辑异或XRL(6条)⑴累加器内容逻辑异或立即数XRLA,#data双字节指令64H立即数机器码⑵累加器内容逻辑异或寄存器内容XRL

A,Rn(n=0~7)单字节指令68H~6FH机器码;A

(A)#data○+;A(A)(Rn)○+上页下页回目录⑶累加器内容逻辑异或内RAM内容XRLA,@Ri(i=0,1)单字节指令66H~67H机器码⑷累加器内容逻辑异或内RAM内容或SFRXRLA,direct双字节指令65H直接地址机器码;A(A)

((Ri))○+;A

(A)

(direct)○+上页下页回目录⑸累加器内容逻辑异或内RAM或SFRXRL

direct,A62H直接地址机器码二字节指令⑹立即数逻辑异或RAM或SFRXRLdirect,#data三字节指令直接地址立即数63H

机器码;direct(direct)(A)

○+;direct(direct)#data○+上页下页回目录XRL类传送指令小结XRLA,#data立即数逻辑异或累加器XRLA,Rn寄存器内容逻辑异或累加器XRL

A,direct直接地址内容逻辑异或累加器XRL

A,@Ri内RAM内容逻辑异或累加器指令助记符说明字节2121XRLdirect,AXRLdirect,#data累加器逻辑异或内RAM或SFR立即数逻辑异或RAM或SFR23上页下页回目录读–修改–写例:根据累加器中4~0的状态修改P1端口位4~0的状态ANLA,#00011111BANLP1,#11100000BORLP1,A;A屏蔽前3位,保留后5位;A的后5位是“1”,使P1口相应位置“1”,P1前3位不变;P1屏蔽后5位,保留前3位上页下页回目录仅修改了P1

口的后5位“读”—“修改”—“写”4累加器清除与求反指令(2条)⑴累加器A清零CLR

A单字节指令;A

00HE4H机器码⑵累加器A按位取反CPLAF4H机器码;A(A)单字节指令上页下页回目录例:给出下面程序分析执行结果CLR

ACPLA;(A)=00H;(A)=FFH上页下页回目录4移位指令(4条)⑴累加器内容循环左移一位RLAA7A0单字节指令23H机器码⑵累加器内容连同进位标志循环左移一位A7A0单字节指令RLCA33H机器码CY上页下页回目录⑶累加器内容循环右移一位RRAA7A0单字节指令03H机器码⑷累加器内容连同进位标志循环右移一位A7A0单字节指令RRCA13H机器码CY上页下页回目录

移位指令小结指令助记符说明字节1111RL

ARLC

ARRARRC

A累加器循环左移累加器连同进位循环左移累加器循环右移累加器连同进位循环右移11CLR

ACPLA累加器A清零累加器A按位取反

累加器清除与求反指令小结上页下页回目录例:设(A)=5AH、CY=1RLARLCARR

ARRC

A;(A)=B4H;(A)=2DH;(A)=B5H;(A)=ADH0101101001011010010110101CY010110101CY010100上页下页回目录四、控制转移指令(17条)控制转移指令共有17条:无条件转移指令条件转移指令子程序的调用返回等上页下页回目录1、无条件转移指令⑴长转移LJMP

addr16;PC

addr16addr15~802H

机器码addr7~0三字节指令⑵绝对转移AJMPaddr11;PC10~0

A10~0

AJMP将程序存储器分为32个区,由PC15~11决定,每个区2KB,分8页,由A10A9A8决定。双字节指令A10A9A800001A7

~A0机器码;PC

(PC)+2上页下页回目录转移范围2KB转移范围64KB上页下页回目录A7

~A0A10A9A8

00001PC15~PC11PC10PC9PC8PC7

~

PC0…...在2区形成11位目标地址.........AJMP0区1区31区0000H07FFH0800H0FFFH1000H17FFHF800HFFFFH...1000H17FFH保持高5位地址以确定某区00010例如AJMPadd11

在2区的执行过程2区2KB范围内页内地址页地址操作码00001⑶短转移SJMPrel

;PC(PC)+rel

指令中的rel是8位带符号补码,范围-128~+127。可由汇编自动计算并填入指令代码,也可手工计算。

;PC

(PC)+2

10000000

rel机器码双字节指令计算式:rel=目标地址-(PC+2)例:分析指令SJMP$符号“$”指本指令执行前的PC值,指令SJMP$执行后,程序仍然转移回此指令继续执行,计算机于是不断的执行这一指令,进入等待状态。上页下页回目录原地踏步rel=0FEH=(-2)补⑷间接长转移JMP@A+DPTR;PC(A)+(DPTR)73H机器码单字节指令上页下页回目录

无条件转移指令小结指令助记符说明字节3221长转移LJMP

addr16绝对转移AJMP

addr11短转移SJMP

rel间接长转移JMP

@A+DPTR上页下页回目录(散转指令)可以有n个目标地址则顺序执行2、条件转移指令⑴累加器为零则转移JZ

rel;若(A)=0,PC(PC)+2+rel

;若(A)≠0,则PC(PC)+260H

rel机器码双字节指令JNZrel;若(A)≠0,PC(PC)+2+rel

;若(A)=0,则PC(PC)+2双字节指令⑵累加器不为零则转移

70H

rel机器码上页下页回目录则转移则顺序执行则转移⑶累加器与立即数不等则转移CJNEA,#data,rel三字节指令;若(A)=#data,则PC(PC)+3,CY0;若(A)>#data,PC(PC)+3+rel,CY

0;若(A)<#data,PC(PC)+3+rel,CY1

#dataB4H机器码

rel⑷寄存器与立即数不等则转移CJNERn,#data,rel三字节指令;若(Rn)=#data,则PC(PC)+3,CY

0;若(Rn)>#data,PC(PC)+3+rel,

CY

0;若(Rn)<#data,PC(PC)+3+rel,CY1

#dataB8H~BFH

机器码

rel上页下页回目录顺序转移转移顺序⑹累加器与内RAM或SFR不等则转移CJNEA,direct,rel三字节指令;若(A)=(direct),则PC(PC)+3,CY0;若(A)>(direct),PC(PC)+3+rel,

CY0;若(A)<(direct),PC(PC)+3+rel,

CY1

#dataB5H机器码

rel⑸内RAM与立即数不等则转移CJNE@Ri,#data,rel三字节指令;若((Ri))=#data,则PC(PC)+3,CY

0;若((Ri))>#data,PC(PC)+3+rel,CY0;若((Ri))<#data,PC(PC)+3+rel,CY1

#dataB6H~B7H机器码

rel上页下页回目录顺序转移转移顺序⑺寄存器减“1”不等零则转移DJNZ

Rn,rel(n=0~7)

60H

rel

机器码双字节指令DJNZdirect,rel三字节指令⑻内RAM或SFR减“1”不为零则转移;若(Rn)≠0,PC(PC)+2+rel

;若(Rn)=0,

则PC(PC)+2;Rn(Rn)-1;若(direct)≠0,PC(PC)+2+rel

;若(direct)=0,则PC(PC)+2;direct(direct)-1directD5H

机器码

rel上页下页回目录顺序转移转移顺序上页下页回目录

条件转移类指令小结指令助记符说明字节223323JZrelJNZrelCJNEA,#data,relCJNERn,#data,relDJNZRn,relDJNZdirect,rel累加器A为零则转移累加器A不为零则转移累加器A与立即数不等则转移寄存器与立即数不等则转移寄存器减“1”不等零则转移内RAM或SFR减“1”不为零则转移CJNEA,direct,relCJNE@Ri,#data,rel间接RAM与立即数不等则转移累加器A与直接内RAM不等则转移333、子程序调用及返回指令⑴长调用LCALL

addr16;PC

addr16addr15~812H

机器码addr7~0三字节指令;PC(PC)+3;SP

(SP)+1,(SP)PC7~0;SP(SP)+1,(SP)PC15~8;在调用子程序之前,保护断点地址上页下页回目录⑵绝对调用ACALL

addr11双字节指令;PC(PC)+2;SP

(SP)+1,(SP)

PC7~0;SP(SP)+1,(SP)PC15~8;在调用子程序之前,保护断点地址A10A9A810001A7

~A0机器码;PC10~0

A10~0

上页下页回目录⑶子程序返回RET;PC15~8

((SP)),SP(SP)

-122H机器码单字节指令⑷中断返回RETI32H机器码单字节指令上页下页回目录;PC7~0((SP)),SP(SP)

-1;PC15~8

((SP)),SP(SP)

-1;PC7~0((SP)),SP(SP)

-1“0”

触发器优先级状态4、空操作NOP;PC(PC)+1单字节指令32H机器码上页下页回目录

子程序调用及返回指令小结指令助记符

温馨提示

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

评论

0/150

提交评论