assembly 两遍汇编程序-创建对象程序

g2ieeal7  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(119)

我想知道每个文本记录中目标代码的长度是如何确定的。我知道长度是以十六进制字节表示的,但是,大小并不知道在任何地方指定。这是汇编程序任意选择的吗?
这里有一个我从书中得到的目标程序的例子

“系统软件-系统编程介绍”,由利兰L.贝克

H副本001000 00107 A
T 0010001E141033 482039 001036 281030 301015 482061 3C1003 00102A 0C1039 00102D
T 00101E150C1036 482061 081044 4C0000 454F46 000003 000000
T 0020391E041030 001030 E0205D 30203F D8205D 281030 302057 549039 2C205E 38203F
T 0020571C101036 4C0000 F1 001000 041030 E02079 302064 509039 DC2079 2C1036
T 00207307382064 4C0000 05
E 001000
我的疑问在于这些长度-1 E,15,1 E,1C和07 -是如何选择的,而不是如何计算的。谢谢!

j13ufse2

j13ufse21#

首先,请注意“没有对应于地址1033-2038的目标代码。此存储空间仅由加载程序保留,以供程序在执行期间使用。”
接下来,请注意输出缓冲区最大为1 E字节。
因此,第一行为1 E,因为使用了整个输出缓冲器。
但是下一行只有15,因为保留的内存不生成操作码,所以缓冲区不会一直被填满。
下一行是操作码的完整1 E缓冲区,但请注意,它的起始地址与前一个代码不连续,而是从保留内存之后开始。
下一行有一个内联单字节(F1),因此在1 E大小的缓冲区中没有空间容纳最后一个完整的操作码,因此该行在1C处被剪切。(因为1 E-1C=2,而下一个操作码需要3个字节)
最后一行只有程序的最后7个字节。

相关问题