
PD17704 , 17705 , 17707 , 17708 , 17709
3.4操作地址栈
3.4.1子程序调用指令( “CALL地址” , “ CALL @AR ” )和返回指令( “RET” , “ RETSK ” )
当执行子程序调用指令时,堆栈指针的值减一,并
返回地址被存储到由堆栈指针指定的地址的堆栈寄存器。
当执行返回指令时,地址的堆栈寄存器的内容(返回地址)指定
由堆栈指针都恢复到程序计数器,堆栈指针的值递增
1 。
3.4.2表参照指令( “ MOVT DBF , @AR ” )
当执行表参照指令时,堆栈指针的值加1,并
返回地址被存储到由堆栈指针指定的地址的堆栈寄存器。
接着,由地址寄存器指定的程序存储器中的内容被读出到数据缓冲器,所述
通过堆栈指针所指定的地址寄存器堆栈(返回值)的内容都恢复到程序
计数器,堆栈指针的值加一。
3.4.3当中断被接受和执行返回指令( “ RETI” )的
当中断被接受,堆栈指针的值减一,并返回地址
被存储到由堆栈指针指定的地址的堆栈寄存器。
当执行返回指令,一个地址堆栈寄存器(返回值)的内容指定
由堆栈指针都恢复到程序计数器,堆栈指针的值递增
1 。
3.4.4地址堆栈操作指令( “ PUSH AR ” , “ POP AR” )
当执行“PUSH”指令时,堆栈指针的值减一,并在
地址寄存器的内容被传送到由堆栈指针指定的地址的堆栈寄存器。
当执行“POP”指令,地址堆栈的内容由堆栈寄存器指定
指针被转移到地址寄存器,堆栈指针的值加一。
3.4.5系统调用指令( “ SYSCAL条目” )和返回指令( “RET” , “ RETSK ” )
当执行“ SYSCAL条目”指令时,堆栈指针的值减一,并
返回地址和段寄存器的值被存储到由指定的地址堆栈寄存器
堆栈指针。
当执行返回指令,一个地址堆栈寄存器(返回值)的内容指定
通过堆栈指针恢复到程序计数器和段寄存器,栈指针的值
递增一。
33