You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SIC汇编目标代码T部分文本长度计算存疑,求正确方法

SIC汇编目标代码T记录长度计算方法解析

输入的SIC源程序

COPY START 3000
** LDA THREE
** STA ALPHA
** LDCH CHARC
** STCH C1
** LDCH CHARZ
** STCH C3
ALPHA RESW 3
THREE WORD 3
CHARC BYTE C'FO'
C1 RESB 3
CHARZ BYTE C'EOF'
C3 RESB 3
** END **

对应的中间文件与目标代码

中间文件

COPY    START   3000
3000    **  LDA THREE
3003    **  STA ALPHA
3006    **  LDCH    CHARC
3009    **  STCH    C1
3012    **  LDCH    CHARZ
3015    **  STCH    C3
3018    ALPHA   RESW    3
3027    THREE   WORD    3
3030    CHARC   BYTE    C'FO'
3031    C1  RESB    3
3034    CHARZ   BYTE    C'EOF'
3035    C3  RESB    3
3038    **  END **

目标代码

H^COPY^003000^003038
T^003000^37^333027^443018^533030^573031^533034^573035^000003^464f^454f46
E^003000

T记录长度的准确计算方法

SIC目标代码中T记录的长度字段是2位十六进制数,代表该记录覆盖的连续存储块总字节数,计算步骤如下:

  1. 确定T记录的起始地址(本例为003000)
  2. 找到该记录覆盖的最后一个有实际内容(指令或数据)的存储地址:
    从中间文件可知,CHARZ BYTE C'EOF'起始于3034,占3字节,因此最后一个有内容的地址是3036
  3. 总字节数 = 最后一个有内容的地址 - 起始地址 + 1
    代入数值计算:3036H - 3000H + 1 = 37H(十进制为55),这就是T记录中37的由来

计算结果偏差的原因

你得出的35是错误地仅统计了实际有指令/数据的字节数,或是误判了最后一个有内容的地址。T记录的长度按连续存储块的整体范围计算,而非仅实际有内容的字节数——即使中间存在RESW/RESB预留的空字节,只要在起始地址到最后一个有内容地址的范围内,都要计入总长度。

内容的提问来源于stack exchange,提问作者Dalim Oh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:45:29