单片机汇编语言指令大全文档,单片机汇编语言指令解析
来源:整理 编辑:黑码技术 2024-05-01 03:25:48
本文目录一览
1,单片机汇编语言指令解析
这是目的地址传送指令,就是把#data16装进数据指针DPTR中,高位字节存放在DPH,低字节存放在DPL中,意义可能就是此操作不影响标志位吧!
2,51汇编指令
MCS-51指令系统共有111条指令,按功能分:1、数据传送类28条2、算术操作类24条3、逻辑运算类25条4、控制转移类17条5、位操作;类17条
3,汇编语言指令
“MOV A,direct (direct指8位片内数据存储单元的地址)”这条指令的功能就是把RAM中的相应的地址中的数据送到累加器A中。对应“MOV A,40H”就是将单片机内的RAM地址40H单元的内容传送到累加器A中。如果想把ROM中的40H(0040H)中的内容送到A中,51单片机中是要用查表指令“MOVC A,@A+DPTR”来实现的。想要把ROM中40H(0040H)中的内容送到A中,可以用下面几句指令来实现:“MOV DPTR,#0040HCLR AMOVC A,@A+DPTR”指令不同,功能不同,是规定下来的。他是根据 mov指令吧mov可以分为: mov ,movx ,movc请问你用的是什么牌子的单片机呀,牌子不同可能指令及语法都不一样
4,求89S52单片机汇编指令表
51单片机汇编指令表 8051 INSTRUCTION SET1.Arithmetic operations:指令用法 字节数 机器周期数ADD A,@Ri 1 1ADD A,Rn 1 1ADD A,direct 2 1ADD A,#data 2 1ADDC A,@Ri 1 1ADDC A,Rn 1 1ADDC A,direct 2 1ADDC A,#data 2 1SUBB A,@Ri 1 1SUBB A,Rn 1 1SUBB A,direct 2 1SUBB A,#data 2 1INC A 1 1INC @Ri 1 1INC Rn 1 1INC DPTR 1 1INC direct 2 1INC direct 2 1DEC A 1 1DEC @Ri 1 1DEC Rn 1 1DEC direct 2 1MUL AB 1 4DIV AB 1 4DA A 1 12.Logical opreations:ANL A,@Ri 1 1XRL A,@Ri 1 1ANL A,Rn 1 1XRL A,Rn 1 1ANL A,direct 2 1XRL A,direct 2 1ANL A,#data 2 1XRL A,#data 2 1ANL direct,A 2 1XRL direct,A 2 1ANL direct,#data 3 2XRL direct,#data 3 2ORL A,@Ri 1 1CLR A 1 1ORL A,Rn 1 1CPL A 1 1ORL A,direct 2 1RL A 1 1ORL A,#data 2 1RLC A 1 1ORL direct,A 2 1RR A 1 1ORL direct,#data 3 2RRC A 1 1SWAP A 1 13.Data transfer:Mnemonic Byte CycMOV A,@Ri 1 1MOV DPTR,#data16 3 2MOV A,Rn 1 1MOVC A,@A+DPTR 1 2MOV A,direct 2 1MOVC A,@A+PC 1 2MOV A,#data 2 1MOVX A,@Ri 1 2MOV @Ri,A 1 1MOVX A,@DPTR 1 2MOV @Ri,direct 2 2MOVX @Ri,A 1 2MOV @Ri,#data 2 1MOVX @DPTR,A 1 2MOV Rn,A 1 1PUSH direct 2 2MOV Rn,direct 2 2POP direct 2 2MOV Rn,#data 2 1XCH A,@Ri 1 1MOV direct,A 2 1XCH A,Rn 1 1MOV direct,@Ri 2 2XCH A,direct 2 1MOV direct,Rn 2 2XCHD A,@Ri 1 1MOV direct,direct 3 2MOV direct,#data 3 24.Boolean variable manipulation:Mnemonic Byte CycCLR C 1 1 ANL C,bit 2 2SETB C 1 1ANL C,/bit 2 2CPL C 1 1ORL C,bit 2 2CLR bit 2 1ORL C,/bit 2 2SETB bit 2 1MOV C,bit 2 1CPL bit 2 1MOV bit,C 2 25.Program and machine control:Mnemonic Byte CycNOP 1 1JZ rel 2 2RET 1 2JNZ rel 2 2RETI 1 2JC rel 2 2ACALL addr11 2 2JNC rel 2 2AJMP addr11 2 2JB bit,rel 3 2LCALL addr16 3 2JNB bit,rel 3 2LJMP addr16 3 2JBC bit,rel 3 2SJMP rel 2 2CJNE A,direct,rel 3 2JMP @A+DPTR 1 2CJNE A,#data,rel 3 2DJNZ Rn,rel 2 2CJNE @Ri,#data,rel 3 2DJNZ direct,rel 3 2CJNE Rn,#data,rel3 2
5,单片机汇编语言中比较指令
刚好也有这么个困惑,已经解决了,拿出来分享下比较转移指令CJNZCJNEA,#data,relCJNEA,direct,relCJNERn,#data,relCJNE@Ri,#data,rel第一条指令的功能是将A中的值和立即数data比较,如果两者相等,就次序执行(执行本指令的下一条指令),如果不相等,就转移,同样地,我们能将rel理解成标号,即:CJNEA,#data,标号。这样利用这条指令,我们就能判断两数是否相等,这在很多场合是非常有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的。如果前面的数(A中的)大,则CY=0,不然CY=1,因此在程序转移后再次利用CY就可判断出A中的数比data大还是小了。例:MOVA,R0CJNEA,#10H,L1MOVR1,#0FFHAJMPL3L1:JCL2MOVR1,#0AAHAJMPL3L2:MOVR1,#0FFHL3:SJMPL3JC是判CY是0,还是1进行转移,如果CY=1,则转移到JC后面的标号处执行,如果CY=0则次序执行(执行它的下面一条指令)。分析一下上面的程序,如果(A)=10H,则次序执行,即R1=0。如果(A)不等于10H,则转到L1处继续执行,在L1处,再次进行判断,如果(A)>10H,则CY=1,将次序执行,即执行MOVR1,#0AAH指令,而如果(A)<10H,则将转移到L2处指行,即执行MOVR1,#0FFH指令。因此最终结果是:本程序执行前,如果(R0)=10H,则(R1)=00H,如果(R0)>10H,则(R1)=0AAH,如果(R0)<10H,则(R1)=0FFH。弄懂了这条指令,其它的几条就类似了,第二条是把A当中的值和直接地址中的值比较,第三条则是将直接地址中的值和立即数比较,第四条是将间址寻址得到的数和立即数比较,这里就不详谈了,下面给出几个对应的例程。CJNEA,10H;把A中的值和10H中的值比较(注意和上题的区别)CJNE10H,#35H;把10H中的值和35H中的值比较CJNE@R0,#35H;把R0中的值作为地址,从此地址中取数并和35H比较刚好也有这么个困惑,已经解决了,拿出来分享下比较转移指令 CJNZCJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel 第一条指令的功能是将A中的值和立即数data比较,如果两者相等,就次序执行(执行本 指令的下一条指令),如果不相等,就转移,同样地,我们能将rel理解成标号,即:CJNEA, #data,标号。这样利用这条指令,我们就能判断两数是否相等,这在很多场合是非常有用的。 但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的。如果前面的 数(A中的)大,则CY=0,不然CY=1,因此在程序转移后再次利用CY就可判断出A中的数 比data大还是小了。 例: MOV A,R0 CJNE A,#10H,L1 MOV R1,#0FFH AJMP L3 L1: JC L2 MOV R1,#0AAH AJMP L3 L2: MOV R1,#0FFH L3: SJMP L3 JC是判CY是0,还是1进行转移,如果CY=1,则转移到JC后面的标号处 执行,如果CY=0则次序执行(执行它的下面一条指令)。 分析一下上面的程序,如果(A)=10H,则次序执行,即R1=0。如果(A)不等于10H,则转 到L1处继续执行,在L1处,再次进行判断,如果(A)>10H,则CY=1,将次序执行,即执 行MOV R1,#0AAH指令,而如果(A)<10H,则将转移到L2处指行,即执行MOV R1,#0FFH 指令。因此最终结果是:本程序执行前,如果(R0)=10H,则(R1)=00H,如果(R0)>10H, 则(R1)=0AAH,如果(R0)<10H,则(R1)=0FFH。 弄懂了这条指令,其它的几条就类似了,第二条是把A当中的值和直接地址中的值比较,第 三条则是将直接地址中的值和立即数比较,第四条是将间址寻址得到的数和立即数比较,这 里就不详谈了,下面给出几个对应的例程。 CJNE A,10H ;把A中的值和10H中的值比较(注意和上题的区别) CJNE 10H,#35H ;把10H中的值和35H中的值比较 CJNE @R0,#35H ;把R0中的值作为地址,从此地址中取数并和35H比较
文章TAG:
单片机 汇编 汇编语言 语言 单片机汇编语言指令大全文档