单片机原理与应用技术第2章单片机汇编语言编程技术.ppt

单片机原理与应用技术第2章单片机汇编语言编程技术.ppt

LOOP:?MOV A,50H ADD A,@R1 ;相加 MOV 50H,A ;存和的低字节 CLR A ADDC A,51H MOV 51H,A ;存和的高字节 INC R1 ;修改地址指针 DJNZ R0,LOOP ;未加完继续取数相加 SJMP $   3) 比较不相等转移指令   比较不相等转移指令有4条,格式和功能如下:   比较不相等转移指令的特征如下:   ① 每条指令都有3个操作数,各操作数均为无符号数。   ② 指令执行过程是:第一操作数与第二操作数进行比较,比较结果决定了程序下一步的走向。如果前两个操作数不相等,则转移执行由第3操作数表示的目标语句;如果相等,则按顺序执行紧随其后的下一条指令。   ③ 第一操作数与第二操作数比较后不送结果,它们各自的内容不变。   ④ 第3操作数是转移目标,转移范围在离源指令256 B以内,计算公式为: rel=PC目标地址-PC源地址-3   ⑤ 每条指令均为3字节指令,在程序ROM中存放时占3个存储单元。   ⑥ 每条指令执行后对进位标志产生影响。   如果第一操作数≥第二操作数,无借位,CY=0;   如果第一操作数<第二操作数,有借位,CY=1。   【例2-31】 人工汇编计算rel并填入机器码。   第1条指令是2字节指令,因此第2条指令存放的ROM单元地址是01 02。又CJNE是3字节指令,P0的字节地址为80H,rel=0120H-0102H-3=1DH,故机器码填入B5 80 1D。   【例2-32】 利用CJNE指令影响CY位用于判断两个无符号数的大小。大、小数分别存入GREAT和LESS单元。   4.调用指令   调用指令全称是子程序调用指令,分成无条件调用和返回指令两类。按照被调用子程序与调用指令之间的距离长短,无条件调用分成短调用和长调用两种。ACALL指令是短调用指令,该指令所调用的子程序入口地址在ACALL指令2 KB范围内,超出这个范围无法调用。LCALL指令是长调用指令,它可调用64 KB范围内程序ROM中任一个子程序,执行后不影响标志位。返回指令有两条,一条是RET,与ACALL或LCALL指令配合使用,子程序执行完毕,必须依靠RET返回主程序,继续执行调用指令的下一条指令。返回过程由RET指令实施,因此,RET返回指令的位置必然位于子程序的最后,即子程序的最后一条指令必定是RET。另一条返回指令是RETI,专用于执行中断服务程序后返回主程序,所以中断服务程序的最后一条指令必定是RETI。   1) 无条件调用指令   ● ACALL指令   格式:ACALL dest_lable ;短调子程序   功能:调用处断点被自动推入堆栈,PC+2→PC,addr11→ PC10~0,其中addr11是子程序入口地址的低11位a10~a0。本指令的机器码是a10a9a8 10001 a7~a0,确定方法与AJMP指令相同。本条指令使用时,格式中的addr11不出现在程序中,出现在助记符ACALL后面的是目标语句标号“dest_lable”,它是被调子程序第一条语句的标号或子程序名。本条指令是2字节指令,不影响PSW各位。   ●LCALL指令   格式:LCALL dest_lable ;长调子程序   功能:在64 KB程序ROM的全范围内调用子程序,addr16是子程序入口地址的a15~a0位,不出现在程序中,程序中出现在LCALL后面的目标语句标号“dest_lable”是子程序第一条语句的标号或子程序名。本指令是3字节指令,操作码为12 addr16。本条指令不影响PSW各位。   2) 返回指令   格式:RET ;从被调用子程序返回,机器码22H ?? RETI ;从中断服务程序返回,机器码32H 2.4 伪 指 令   为汇编程序提供汇编说明的指令叫做伪指令。伪指令无机器代码,不能被执行。一个完整的汇编程序仅有可执行指令是不完善的,必须要有伪指令才能使程序完整。汇编过程离不开伪指令提供的信息。汇编程序中用到的伪指令如表2-7所示。   【例2-17】 A=0F2H,R1=30H,(30H)=1AH。   执行ANL A,@R1后,A=12H;   执行ANL A,R1后,A=30H;   执行RL A后,A=E5H;   执行CPL A后,A=0DH。   【例2-18】 写出每条都能使A=00H的指令。    MOV A,#00H    ANL A,#00H    XRL A,A    CLR A   【例2-19】 指令SUBB A,A能否使累加器A为0?   答:不行,因为CY未知

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档