其实书上写的很清楚,你认真看会找到答案的,在第28页.
内容如下:
RTNW
指令格式 RTNW H,L
指令描述 从子程序中返回上一层程序,H参数赋值给TBR,L参数赋值给累加器A,同时将堆栈的内容弹栈
表达式 PC ST,TBR H,A L
指令编码 11010 000h hhh LLLL
影响的标志位 无
RTNW指令用于从子程序中返回上一层程序,执行此条指令时,CPU首先进行现场恢复,将保存在堆栈中最顶层的PC+1值弹出,同时将该指令的操作数H赋值给TBR寄存器,将参数L赋值给累加器A。
这一指令的主要作用有两点,一点可以实现固定数据表中数据的读取,第二点是可以实现程序的散转。
注意:执行此条指令时,弹栈的只是PC值,不包括CY。
例2-4-41:读取位于$302 处的数据表中的数据
TBR EQU OEH
TEMP EQU 20H
:
:
001A LDI TBR,00H ;put index value (high nibble) 0 into TBR.
001B LDI TEMP,02 ;put index value (low nibble) 2 into AC
001C CALL 300H ;call subprogram.
001D :
:
:
ORG 300H
0300 TJMP ; get destination address $0302H according to (PC11~PC8),TBR,AC
0301 RTNW 00H,01H
0302 RTNW 00H,02H ;return to main program, HTBR,LAC
0303 RTNW 04H,05H
0304 RTNW 09H,08H
0305 :
|