咨询MSX BASIC中通过USR函数调用的机器语言子程序寄存器保存规则
MSX BASIC USR函数调用机器语言子程序的寄存器规则
需要保留原值的寄存器
调用USR后,机器语言子程序必须保留以下寄存器的原值,返回BASIC时要恢复:
- 备用寄存器组:
AF'、BC'、DE'、HL' - 变址寄存器:
IX、IY - 中断相关寄存器:
I(中断向量寄存器)、R(内存刷新寄存器)
无需保存原值的寄存器
以下寄存器可以在子程序中自由修改,无需恢复原值:
- 主寄存器组:
AF、BC、DE、HL
补充说明:
- 栈指针
SP需保持调用时的状态(除非子程序自行管理临时栈空间,调用结束前必须恢复)。 - MSX BASIC调用USR时会将函数参数传入
HL寄存器;子程序返回时,若返回数值型结果需存入HL,若返回字符型结果存入A寄存器。
内容的提问来源于stack exchange,提问作者MikeCAT
相关产品推荐
相关产品推荐

