+ -
当前位置:首页 → 问答吧 → 定义了一个64KB段为什么链接出错?

定义了一个64KB段为什么链接出错?

时间:2010-11-16

来源:互联网

Assembly code

a segment 
_go:
db 65537 dup(0ffh)
a ends
end _go


编译通过。
连接时错误:
a.obj(a.asm) : fatal error L1101: invalid object module
Object file offset: 35 Record type: 8a


如果定义65535则编译连接通过,定义65537就报出期望的错误:
a.asm(6) : error A2103: segment exceeds 64K limit : a


使用32位段时也无法定义65536字节FF.

Assembly code
.386
a segment
_go:
db 65536 dup(0ffh)
a ends
end _go

编译通过。
链接错误:
a.obj(a.asm) : fatal error L1101: invalid object module
Object file offset: 39 Record type: 8b


32位段定义超过65537时通过。

作者: chuleedaemon   发布时间: 2010-11-16

实模式下的段最大就是64k.这里的伪指令386只是什么可以使用386的指令以及386下的寄存器,比如:
mov eax,12345678h等,只有保护模式下才可以超过64k

作者: leetow2003   发布时间: 2010-11-16

你好像没有仔细看帖

作者: chuleedaemon   发布时间: 2010-11-16