
一、顺序寻址方式
由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令;接着从存储器取出第2条指令,再执行第二条指令;接着再取出第3条指令。
这种程序顺序执行的过程,称为指令的顺序寻址方式。为此,必须使用程序计数器(又称指令指针寄存器)PC来计数指令的顺序号,该顺序号就是指令在内存中的地址。
二、跳跃寻址方式
当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。
电能。 有持续电流的条件:必须有电源和电
这个当然是能使用LJMP指令重主程序跳转到子程序,或从子程序跳回主程序,但一般是不允许这样使用LJMP指令的,很容易造成程序运行混乱。因为调用子程序保护现场要将当前的地址压入堆栈,子程序返回时,会d出该地址赋值给PC指针。如果使用,必须满足以下条件:1、跳出跳入成对出现,也就是说,从主程序用LJMP跳转到子程序,那么在子程序中的RET前,必须是用LJMP指令跳回。
2、不成对出现,但是如果子程序是LJMP跳转来的控制,那么在RET前,需要压入返回位置的地址。比如:
主程序:
.....
LJMPSUB01
........
CON:返回地址
......
SUB:子程序
....
SUB01:跳转到的地址
....
MOV DPTR,#CON返回前处理。
PUSH DPH
PUSH DPL
RET
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)