关于SIC/XE中JLT *-19等指令含义及实践环境的技术问询
关于SIC/XE宏程序中跳转指令及练习工具的解答
1. JEQ *-3 和 JLT *-19 的指令含义
在SIC/XE汇编语言中:
JEQ是相等条件跳转指令:当累加器A中的值为0时触发跳转;JLT是小于条件跳转指令:当累加器A中的值小于0时触发跳转。*代表当前汇编地址计数器的当前值(即这条跳转指令本身的起始地址)。*-3表示当前指令地址减去3字节,*-19表示当前指令地址减去19字节。- 由于SIC/XE的
J系列跳转指令本身占3字节,JEQ *-3实际是跳转到这条指令的前一个指令位置(多用于循环回退或条件重检);JLT *-19则是向后跳19字节的位置,用于分支回退到更早的代码段。
- 由于SIC/XE的
2. 确定JLT *-19的跳转目标位置
要找到跳转后的具体位置,需结合汇编代码的地址和各指令/数据的字节长度计算:
- 首先明确当前
JLT *-19指令的汇编地址(假设为ADDR),目标地址即为ADDR - 19。 - 然后将宏展开后的完整代码逐行标注地址:
- SIC/XE不同格式的指令字节长度不同:RR型指令占1字节,RX/RS/SS型占4字节,SI型占2字节;数据段的
BYTE按定义字符数占字节(如BYTE C'ABC'占3字节),WORD固定占3字节。 - 从起始地址开始累加每一行的字节数,找到
ADDR - 19对应的代码行,就是跳转后的具体位置。
- SIC/XE不同格式的指令字节长度不同:RR型指令占1字节,RX/RS/SS型占4字节,SI型占2字节;数据段的
- 举例:若
JLT *-19在地址0x120,目标地址为0x120 - 0x13 = 0x10D,对照地址表即可找到对应代码块。
3. 练习SIC/XE程序的虚拟机/工具推荐
- SIC/XE教学模拟器:多数高校计算机系开发的开源工具,支持汇编代码编写、宏展开查看、单步执行、寄存器/内存实时监控,适合入门练习指令执行和宏的工作流程。
- SIC/XE汇编器:可将手写的SIC/XE汇编代码转换为目标代码,搭配模拟器运行,部分工具还会显示宏展开的中间代码,帮助理解宏的替换逻辑。
- Python实现的SIC/XE工具:有开源Python脚本实现了SIC/XE的汇编和模拟功能,可直接运行或修改,适合深入理解底层执行逻辑。
内容的提问来源于stack exchange,提问作者Midhun Raj
相关产品推荐
相关产品推荐

