版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习单片机小小帮助第一页,共九十页,编辑于2023年,星期五指令和助记符
指令本身是一组二进制数代码,为了便于记忆,将这些代码用具有一定含义的指令助记符来表示,助记符一般采用英文单词的缩写。例:
指令代码助记符功能
740AMOVA,#0AH将十六进制数0AH放入累加器A中第二页,共九十页,编辑于2023年,星期五指令的字节数一条指令由操作码和操作数组成。操作码指明执行什么操作,例如数的传送、加法、减法等。操作数则表示这条指令所完成的操作对象,即是对谁进行操作。操作数可以是一个数,或者是一个数所在的内存地址。指令由指令字节组成,不同的指令,指令的字节数不相同。有单字节指令、双字节指令和三字节指令。第三页,共九十页,编辑于2023年,星期五寻址方式
1寄存器寻址 2直接寻址3立即寻址4寄存器间接寻址5变址寻址 6相对寻址 7位寻址第四页,共九十页,编辑于2023年,星期五寄存器寻址以通用寄存器的内容为操作数的寻址方式。通用寄存器为A、B、DPTR以及R0~R7
。
例:
CLR A;A←0INC DPTR ;DPTR←DPTR+1ADD R5,#20H ;R5←#20H+R5第五页,共九十页,编辑于2023年,星期五直接寻址指令中直接给出操作数地址的寻址方式,能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。
例:
MOV PSW,#20H;PSW←#20HMOV A,30H ;A←(30H)第六页,共九十页,编辑于2023年,星期五立即寻址
指令中直接给出操作数的寻址方式。立即操作数用前面加有#号的8位或16位数来表示。
例:
MOV A,#60H ;A←#60HMOV DPTR,#3400H ;DPTR←#3400HMOV 30H,#40H ;30H单元←#40H
第七页,共九十页,编辑于2023年,星期五寄存器间接寻址以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1和DPTR。在寄存器名称前面加一个符号@来表示寄存器间接寻址。例:
MOVA,@R0;A←((R0))MOVX@DPTR,A;外部RAM(DPTR)←A第八页,共九十页,编辑于2023年,星期五片内RAM30HR034HA30H34H
MOVA,@R0操作示意图第九页,共九十页,编辑于2023年,星期五片外RAM2000HDPTR30HA2000H30HMOVX@DPTR,A操作示意图第十页,共九十页,编辑于2023年,星期五5变址寻址变址寻址是以某个寄存器的内容为基本地址,然后在这个基址上加以地址的偏移量,才是真正的操作数地址。
例:
MOVCA,@A+DPTR;A←(A+DPTR)
MOVCA,@A+PC;A←(A+PC)
第十一页,共九十页,编辑于2023年,星期五MOVCA,@A+DPTR
操作示意图程序存储器02F1HDPTRA0302H1EH11HA执行前1EHA执行后+第十二页,共九十页,编辑于2023年,星期五相对寻址 以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移。例:
SJMP08H;PC←PC+2+08H
第十三页,共九十页,编辑于2023年,星期五SJMP08H
操作示意图程序存储器SJMP200AH08H2000H+208H执行前PC2000H执行后PC第十四页,共九十页,编辑于2023年,星期五7位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。例:
SETB10H;将10H位置1MOV32H,C;32H←进位位CCLRPSW.4;将RS1位清0第十五页,共九十页,编辑于2023年,星期五指令分类说明 1数据传送类指令2算术运算类指令3逻辑运算与循环类指令4程序转移类指令5子程序调用及返回指令6位操作指令第十六页,共九十页,编辑于2023年,星期五数据传送类指令助记符说明
MOV、MOVX、MOVC传送操作
XCH、XCHD、SWAP交换操作
PUSH、POP堆栈操作源操作数寻址方式:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址。目的操作数寻址方式:直接寻址、寄存器寻址、寄存器间接寻址除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。第十七页,共九十页,编辑于2023年,星期五直接地址direct累加器A直接地址direct间接地址@Ri寄存器Rn立即数#data寄存器DPTR8051单片机片内数据传送图第十八页,共九十页,编辑于2023年,星期五
1以累加器为目的操作数的指令(4条)
MOVA,Rn
MOVA,direct
MOVA,@Ri
MOVA,#data
这组指令功能将源操作数指定内容送到A中。
2以寄存器Rn为目的操作数的指令
(3条)
MOVRn,A
MOVRn,direct
MOVRn,#data
这组指令功能是把源操作数指定的内容送入当前工作寄存器,源操作数不变。第十九页,共九十页,编辑于2023年,星期五
3以直接地址为目的操作数的指令(5条)
MOVdirect,A MOVdirect,Rn MOVdirect1,direct2 MOVdirect,@Ri MOVdirect,#data
这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。例:
MOV20H,A MOV20H,R1 MOV20H,30H MOV20H,@R1 MOV0A0H,#34H MOVP2,#34H第二十页,共九十页,编辑于2023年,星期五4以间接地址为目的操作数的指令(3条)
MOV@Ri,A
MOV@Ri,direct
MOV@Ri,#data
功能:把源操作数指定的内容送入以R0或R1中内容为地址的片内存储单元。例:
MOV@R0,A MOV@R1,20H MOV@R0,#34H第二十一页,共九十页,编辑于2023年,星期五5十六位数的传递指令(1条)
MOVDPTR,#data168051是8位机,这是唯一的一条16位立即数传递指令。功能:将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL。例:MOVDPTR,#1234H执行完了之后DPH中的值为12H,DPL中的值为34H。如果我们分别向DPH,DPL送数,则结果也一样。如下面两条指令:MOVDPH,#35H
MOVDPL,#12H。相当于执行了MOVDPTR,#3512H。第二十二页,共九十页,编辑于2023年,星期五6累加器A与片外RAM之间的数据传递类指令(4条)
MOVXA,@Ri MOVX@Ri,A MOVXA,@DPTR MOVX@DPTR,A说明:
1.在8051中,与外部RAM存储器打交道的只可以是累加器A。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。第二十三页,共九十页,编辑于2023年,星期五
2.要读或写外部RAM,必须要知道RAM的地址,采用DPTR时,地址被直接放在DPTR中的。采用Ri(R0或R1)时,由于Ri只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。
3.使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。
MOVDPTR,#0100H MOVXA,@DPTR MOVDPTR,#0200H MOVX@DPTR,A第二十四页,共九十页,编辑于2023年,星期五7读程序存储器指令(2条)
MOVCA,@A+DPTRMOVCA,@A+PC
本组指令是将ROM中的数送入A中。本组指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格说明:查找到的结果被放在A中,因此,本条指令执行前后,A
中的值不一定相同。例:有一个数在R0中,要求用查表的方法确定它的平方值(此数的取值范围是0-5)
MOVDPTR,#100H MOVA,R0 MOVCA,@A+DPTR
…… ORG0100H DB0,1,4,9,16,25第二十五页,共九十页,编辑于2023年,星期五
8堆栈操作(2条)
PUSHdirect
POPdirect
第一条为压入指令,将direct中的内容送入堆栈中,第二条为弹出指令,将堆栈中的内容送回到direct中。例:
MOVSP,#10H MOV40H,#50H PUSH40H POP30H
执行第一条PUSH40H指令是这样的:将SP中的值加1,变为11H,然后将40H中的值送到11H单元中,因此执行完本条指令后,内存11H单元的值是50H,同样,执行POP30H时,是将11H中的值送入到30H单元中,即执行完本条指令后,30H单元中的值变为50H。第二十六页,共九十页,编辑于2023年,星期五
9交换指令(5条)
XCHA,Rn XCHA,direct XCHA,@Ri XCHDA,@Ri SWAPA
例:已知A中的内容为34H MOVR6,#29H XCHA,R6 SWAPA XCHA,R6XCHDA,@R0第二十七页,共九十页,编辑于2023年,星期五算术运算类指令主要用于8位无符号数运算;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令,指令操作将影响PSW中有关状态位。第二十八页,共九十页,编辑于2023年,星期五
1
加法指令
ADDA,#data ADDA,direct ADDA,Rn ADDA,@Ri
用途:将A中的值与源操作数所指内容相加,最终结果存在A中。(1)不带进位位的加法指令(4条)第二十九页,共九十页,编辑于2023年,星期五例1:ADDA,#47H ADDA,34H ADDA,R7 ADDA,@R0例2:MOVA,#0AEH;-82 ADDA,#81H;-127则执行完本条指令后,A中的值为2FHPSW中状态位C=1,AC=0,OV=1,P=1对无符号数:结果为12FH;对带符号数:OV=1,有错。第三十页,共九十页,编辑于2023年,星期五(2)带进位位的加法指令(4条)
ADDCA,Rn
;A+Rn+CY→A
ADDCA,direct
;A+(direct)+CY→A
ADDCA,@Ri
;A+(Ri)+CY→A
ADDCA,#data
;A+data+CY→A用途:将A中的值和其后面的值以及进位位C中的值相加,最终结果存在A,常用于多字节数运算中。第三十一页,共九十页,编辑于2023年,星期五例:先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。然后再做10H+30H+CY,结果是41H,所以最终的结果是4107H。1067H+30A0H0001000001100111001100001010000001000001000001111067H30A0H4107H第三十二页,共九十页,编辑于2023年,星期五又例:先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。然后再做10H+30H+CY,结果是40H,所以最终的结果是4087H。1067H+3020H0001000001100111001100000010000001000000100001111067H3020H4087H第三十三页,共九十页,编辑于2023年,星期五(3)加1指令(5条)INCA
;A+1→A,影响P标志INCRn
;Rn+1→RnINCdirect
;(direct)+1→(direct)INC@Ri
;(Rn)+1→(Rn)INCDPTR
;DPTR+1→DPTR功能很简单,就是将后面目标中的值加1。例:A=12H,R0=33H,(21H)=32H,
(34H)=22H,DPTR=1234H。连续执行下面的指令:
INCAINCR0INC21HINC@R0INCDPTR;A=13H;R0=34H;(21H)=33H;(34H)=23H;DPTR=1235H第三十四页,共九十页,编辑于2023年,星期五DAA在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。例:A=00010101(代表十进制数15)
ADDA,#8(4)十进制调整指令(1条);A=1DH,按二进制规律加;A=23H,按十进制规律加DAA第三十五页,共九十页,编辑于2023年,星期五2减法指令(8条)SUBBA,Rn
;A-Rn-CY→ASUBBA,direct;A-(direct)-CY→ASUBBA,@Ri
;A-(Ri)-CY→ASUBBA,#data ;A-data-CY→A将A中的值减去源操作数所指内容以及进位位C中的值,最终结果存在A中。说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。(1)带借位的减法指令(4条)第三十六页,共九十页,编辑于2023年,星期五(2)减1指令(4条)DECA
;A-1→A,DECRn
;Rn-1→RnDECdirect
;(direct)-1→(direct)DEC@Ri
;(Rn)-1→(Rn)
与加1指令类似。第三十七页,共九十页,编辑于2023年,星期五
3乘法指令(1条)MULAB
;A×B→BA此指令的功能是将A和B中的两个8位无符号数相乘,结果将为16无符号数。其中高8位放在B中,低8位放在A中。在乘积大于FFH时,0V置1,否则OV为0;而CY总是0。例:A=4EH,B=5DH,执行MULAB指令后,乘积是1C56H,所以在B中放的是1CH,而A中放的则是56H。第三十八页,共九十页,编辑于2023年,星期五
4除法指令(1条)DIVAB
;A÷B的商→A,余数→B此指令的功能是将A中的8位无符号数除B中的8位无符号数,商放在A中,余数放在B中。如果在做除法前B中的值是00H,也就是除数为0,那么0V=1。例:A=11H,B=04H,执行DIVAB指令后,结果为:A=04H,B=1。第三十九页,共九十页,编辑于2023年,星期五逻辑运算与循环类指令主要用于对2个操作数按位进行逻辑操作,结果送到A或直接寻址单元。
主要操作与、或、异或、移位、取反、清零等。
对标志位的影响除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。第四十页,共九十页,编辑于2023年,星期五1逻辑或指令(6条)ORLA,Rn
;A∨Rn→AORLA,direct ;A∨(direct)→AORLA,@Ri
;A∨(Ri)→AORLA,#data;A∨data→AORLdirect,A
;(direct)∨A→(direct)ORLdirect,#data
;(direct)∨data→(direct)影响P标志例:71H和56H相或:
01110001(71H) ∨)01010110(56H)
01110111即77H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。第四十一页,共九十页,编辑于2023年,星期五2逻辑与指令(6条)ANLA,Rn
;A∧Rn→AANLA,direct
;A∧(direct)→AANLA,@Ri
;A∧(Ri)→AANLA,#data
;A∧data→AANLdirect,A
;(direct)∧A→(direct)ANLdirect,#data
;(direct)∧data→(direct)影响P标志例:71H和56H相与:
01110001(71H) ∧)01010110(56H)01010000即50H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。第四十二页,共九十页,编辑于2023年,星期五例:71H和56H相异或:
01110001(71H) ⊕)01010110(56H)
3逻辑异或指令(6条)XRLA,Rn
;A⊕Rn→AXRLA,direct
;A⊕(direct)→AXRLA,@Ri
;A⊕(Ri)→AXRLA,#data
;A⊕data→AXRLdirect,A
;(direct)⊕A→(direct)XRLdirect,#data
;(direct)⊕data→(direct)影响P标志00100111即27H后两条指令,若直接地址为I/O端口,则为“读-改写”操作。第四十三页,共九十页,编辑于2023年,星期五
4取反与清0指令(2条)取反:CPLA;/A→A例:若A=5CH,执行CPLA
结果:A=A3H清0:CLRA
;0→A第四十四页,共九十页,编辑于2023年,星期五5循环移位指令(4条)RLA
RRARLCARRCAA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后两条指令,影响P和CY标志。第四十五页,共九十页,编辑于2023年,星期五例:若A=5CH,CY=1,执行RLCA后,对RLC、RRC指令,在CY=0时
RLC相当于乘以2 RRC相当于除以2结果:A=B9H,CY=0,P=1010111001101110010第四十六页,共九十页,编辑于2023年,星期五综合举例:ANLA,#0FH ;屏蔽A的高4位SWAPAANLP1,#0FH ;清P1口高4位ORLP1,A;P1口高4位输出A的低4位;把累加器A中的低4位状态,通过P1口的高4位输出,P1口的低4位状态不变。第四十七页,共九十页,编辑于2023年,星期五程序转移类指令此类指令一般不影响PSW。包括以下类型:无条件转移和条件转移相对转移和绝对转移长转移和短转移调用与返回指令第四十八页,共九十页,编辑于2023年,星期五
无条件转移类指令(4条)短转移类指令:AJMPaddr11
长转移类指令:LJMPaddr16
相对转移指令:SJMPrel
间接转移指令:JMP@A+DPTR(1)上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。那么他们的区别何在呢?第四十九页,共九十页,编辑于2023年,星期五跳转的范围不同。短转移类指令:AJMPaddr11
长转移类指令:LJMPaddr16
相对转移指令:SJMPrel转移范围:2KB64KB-128~+127指令构成不同。
AJMP、LJMP后跟的是绝对地址,而SJMP后跟的是相对地址。
指令长度不同原则上,所有用SJMP或AJMP的地方都可以用
LJMP来替代。第五十页,共九十页,编辑于2023年,星期五散转指令:JMP@A+DPTR这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。转移地址由A+DPTR形成,并直接送入PC。指令对A、DPTR和标志位均无影响。本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。(2)第四条指令与前三条指令相比有所不同第五十一页,共九十页,编辑于2023年,星期五
条件转移指令(8条)条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。一、判A内容是否为0转移指令(2条)
JZrel
;如果A=0,则转移,否则顺序执行。
JNZrel
;如果A≠0,就转移。转移到相对于当前PC值的8位移量的地址去。即:新的PC值=当前PC+偏移量rel在编写汇编语言源程序时,可以直接写成:
JZ标号 ;即转移到标号处。第五十二页,共九十页,编辑于2023年,星期五二、比较不等转移指令(4条)CJNEA,#data,relCJNEA,direct,relCJNERn,#data,relCJNE@Ri,#data,rel此类指令的功能是将两个操作数比较,如果两者相等,就顺序执行,如果不相等,就转移。同样地,使用时,可以将rel理解成标号,即:
CJNEA,#data,标号
CJNEA,direct,标号
CJNERn,#data,标号
CJNE@Ri,#data,标号第五十三页,共九十页,编辑于2023年,星期五利用这些指令,可以判断两数是否相等。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能:如果两数不相等,则CPU还会用CY(进位位)来反映哪个数大,哪个数小。如果前面的数大,则CY=0,否则CY=1。因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小了。第五十四页,共九十页,编辑于2023年,星期五三、减1不为0转移指令(2条)DJNZRn,relDJNZdirect,relDJNZ指令的执行过程是这样的:它将第一个参数中的值减1,然后看这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移到第二个参数所指定的地方去。例:
LOOP:DJNZ10H,LOOP
第五十五页,共九十页,编辑于2023年,星期五例:
MOV23H,#0AHCLRALOOP:ADDA,23HDJNZ23H,LOOPSJMP$上述程序段的执行过程是:将23H单元中的数连续相加,存至A中,每加一次,23H单元中的数值减1,直至减到0,共加(23H)次。第五十六页,共九十页,编辑于2023年,星期五
子程序调用与返回指令一、调用指令(2条)
LCALLaddr16
;长调用指令(3字节)
ACALLaddr11
;短调用指令(2字节)上面两条指令都是在主程序中调用子程序,两者的区别:对短调用指令,被调用子程序入口地址必须与调用指令下一条指令的第一字节在相同的2KB存储区之内。使用时可以用标号表示子程序首地址第五十七页,共九十页,编辑于2023年,星期五二、返回指令
(2条)子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。RET
;子程序返回指令RETI
;中断子程序返回指令两者不能互换使用。第五十八页,共九十页,编辑于2023年,星期五空操作指令(1条)
NOP空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。第五十九页,共九十页,编辑于2023年,星期五位操作指令8051单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等。在8051中,有一部份RAM和一部份SFR是具有位寻址功能的。位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位00~7FH);可以位寻址的特殊功能寄存器。第六十页,共九十页,编辑于2023年,星期五以PSW中位4(RS1)为例。直接(位)地址方式:如D4H;点操作符号方式:如PSW.4,D0H.4;位名称方式:如RS1;用户定义名方式:如用伪指令bit SUB.REGbitRS1定义后,可用SUB.REG代替RS1。位地址表达方式第六十一页,共九十页,编辑于2023年,星期五
位传送指令(2条)
MOVC,bit ;bit→CMOVbit,C
;C→bit这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。例:MOVC,P1.0 ;将P1.0的状态送给C。
MOVP1.0,C;将C中的状态送到P1.0
;引脚上去。第六十二页,共九十页,编辑于2023年,星期五位清0和置位(4条)
位清0指令
CLRC
;使CY=0CLRbit
;使指令的位地址等于0。
例:CLRP1.0;即使P1.0变为0
位置1指令
SETBC
;使CY=1SETBbit
;使指定的位地址等于1。
例:SETBP1.0;使P.0变为1第六十三页,共九十页,编辑于2023年,星期五位逻辑运算指令
(6条)
位与指令ANLC,bit
;Cy与指定位的值相与,结果送CyANLC,/bit
;先将指定的位地址中的值取出后取反,再和Cy相与,结果送回Cy。但注意:指定的位地址中的值本身并不发生变化。例:ANLC,/P1.0第六十四页,共九十页,编辑于2023年,星期五位取反指令CPLC
;使Cy值取反。CPLbit
;使指定的位的值取反。例:CPLP1.0位或指令
ORLC,bitORLC,/bit第六十五页,共九十页,编辑于2023年,星期五位条件转移指令(5条)
判Cy转移指令
JCrel JNCrel
第一条指令的功能是如果Cy=1就转移,否则就顺序执行。第二条指令则和第一条指令相反,即如果Cy=0就转移,否则就顺序执行。第六十六页,共九十页,编辑于2023年,星期五判位变量转移指令
JBbit,relJNBbit,relJBCbit,rel第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。第六十七页,共九十页,编辑于2023年,星期五
汇编语言程序设计第六十八页,共九十页,编辑于2023年,星期五汇编语言格式与伪指令汇编语言源程序由以下两种指令构成汇编语句(指令语句)伪指令(指示性语句)汇编语句的格式:
标号:
操作码
操作数 ;注释3.
伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。
第六十九页,共九十页,编辑于2023年,星期五常用的伪指令
ORG定位目的程序的起始地址。格式: ORG表达式表达式必须为16位地址值。如:ORG0000H
END汇编语言程序结束伪指令。一定放在程序末尾!第七十页,共九十页,编辑于2023年,星期五常用的伪指令
EQU赋值伪指令。
格式:字符名称EQU数值或汇编符号
例: AA EQU 30H K1 EQU 40H MOVA,AA ;(30H)→A MOVA,K1 ;(40H)→A第七十一页,共九十页,编辑于2023年,星期五常用的伪指令DB
从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。 格式:DB
字节常数或ASCII字符例: ORG 1000H DB 34H,0DEH,’A’,’B’ DB 0AH,0BH,20第七十二页,共九十页,编辑于2023年,星期五常用的伪指令DW
从指定单元开始定义(存储)若干个字的数据或ASCII码字符。格式:DW 字常数或ASCII字符
例: ORG2000H DW 1234H,’B’ DW 0AH,20第七十三页,共九十页,编辑于2023年,星期五常用的伪指令
BIT
位地址符号指令。把位地址赋于规定的字符名称。 格式:字符名称 BIT 位地址例: ABC BIT P1.1 QQ BIT P3.2第七十四页,共九十页,编辑于2023年,星期五汇编语言程序设计应用在进行应用汇编程序设计时,首先要确定算法,算法的优劣很大程度上决定了程序的效率,另外还要尽可能画出程序框图,以便于分析程序流程。第七十五页,共九十页,编辑于2023年,星期五定点数运算子程序定点数:小数点固定的数。可以把小数点固定在数值的最高位之前,对于有符号的数,小数点应在符号位与最高数值位之间,即:
符号位·数值部分也可以把小数点固定在最低数值位后面,即:
符号位数值部分·第七十六页,共九十页,编辑于2023年,星期五定点数表示方式(1)原码表示法
符号位为0表示正数,符号位为1表示负数如:二进制数00110100表示十进制数+52二进制数10110100表示十进制数-52(2)补码表示法正数的补码表示与原码相同,即最高位为0,其余位为数值位。负数用补码表示时,最高位为1,数值位要按位取反后再在最低位加1,才是该负数的数值。
例如:十进制数+51的二进制补码为00110011十进制数-51的二进制补码为11001101
第七十七页,共九十页,编辑于2023年,星期五例:双字节数取补子程序。
将(R4R5)中的双字节数取补,结果送R4R5。
CMPT:MOVA,R5 CPLA ADDA,#1 MOVR5,A MOVA,R4 CPLA ADDCA,#0 MOVR4,A RET第七十八页,共九十页,编辑于2023年,星期五例:双字节原码数左移一位子程序。
将(R2R3)左移一位,结果送R2R3,不改变符号位,不考虑溢出。
DRL1: MOVA,R3 CLRC RLCA MOVR3,A MOVA,R2 RLCA MOVACC.7,C;恢复符号位
MOVR2,A RET第七十九页,共九十页,编辑于2023年,星期五例:双字节原码右移一位子程序。
将(R2R3)右移一位,结果送R2R3,不改变符号位。
DRR1: MOVA,R2 MOVC,ACC.7;保护符号位
CLRACC.7;移入0 RRCA MOVR2,A MOVA,R3 RRCA MOVR3,A RET第八十页,共九十页,编辑于2023年,星期五例:双字节补码右移一位子程序。将(R2R3)右移一位,结果送R2R3,不改变符号位。
CRR1: MOVA,R2 MOVC,ACC.7;保护符号位
RRCA;移入符号位
MOVR2,A MOVA,R3 RRCA MOVR3,A RET第八十一页,共九十页,编辑于2023年,星期五例:双字节无符号数加法子程序。
将(R2R3)和(R6R7)两个无符号数相加,结果送R4R5。
NADD:MOVA,R3 ADDA,R7 MOVR5,AMOVA,R2ADDCA,R6MOVR4,ARET第八十二页,共九十页,编辑于2023年,星期五例:双字节无符号数减法子程序。
将(R2R3)和(R6R7)两个双字节数相减,结果送R4R5。
NSUB1: MOVA,R3 CLRC SUBBA,R7 MOVR5,A MOVA,R2 SUBBA,R6 MOVR4,A RET第八十三页,共九十页,编辑于2023年,星期五例:双字节原码加减运算子程序。
(R2R3)和(R6R7)为两个原码表示的数,最高位为符号位,求(R2R3)±(R6R7)结果送R4R5。程序中DADD为原码加法子程序入口,DSUB为原码减法子程序入口。出口时CY=1发生溢出,CY=0为正常。
DSUB: MOVA,R6;减法入口
CPLACC.7;取反符号位
MOVR6,ADADD: MOVA,R2;加法入口
MOVC,ACC.7 MOVF0,C;保存被加数符号位
XRLA,R6 MOVC,ACC.7;C=1,异号,C=0,同号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省信阳市罗山县2024-2025学年高一上学期期中考试历史试题(含答案)
- 甘肃省庆阳市华池县第一中学2024-2025学年高二上学期期中考试语文试题(含答案)
- 2024-2025学年浙江省金砖联盟高一(上)期中考试物理试卷(含答案)
- 安保人员短期聘用协议
- 房产开发贷款协议案例
- 2024年海南省公务员考试《行测》真题及答案解析
- 普通员工劳动合同范本
- 仿写(闯关训练)(解析版)-2025年部编版中考语文一轮复习
- 写字楼租约格式
- 重庆市2017年中考物理试题B卷(含答案)
- 近朱者赤近墨者黑-停止散发负能量主题班会上课讲义
- 新人教版小学三年级下册科学第三单元第1课《土壤里有什么》教案教学设计
- 《经济学基础》试题库(附答案)
- 小学数学北师大五年级上册数学好玩 图形中的规律-
- 《富饶的西沙群岛》说课稿(优秀3篇)
- 大象版一年级科学上册全册教案
- 五年级上册英语课件-Unit4 What can you do Part C |人教(PEP) (共16张PPT)
- 最新病历书写规范课件
- 教案评分标准
- 中药饮片处方点评表
- 一年级上册语文全册课件
评论
0/150
提交评论