关于理解DS与CS段寄存器的有关问题
关于理解DS与CS段寄存器的问题Assembly codeassume cs:code,ds:datadata segmentdb unixdb foRKdata e
关于理解DS与CS段寄存器的问题
Assembly codeassume cs:code,ds:datadata segment db 'unix' db 'foRK'data endscode segmentstart: ........code endsend start
出自王爽的《汇编程序》7.1
程序ds=0b2d,cs=0b3d
程序开始处ds=0b3d,ds=0b3e
在程序段data中data只占用了8字节而根据段寄存器*16的规则,0b3d和0b3e相差的是16字节,这不是一个漏洞,或者是我理解错了?
[解决办法]段寄存器*16的规则,
ds,cs相差是16字节是必然的。
data只占用了8字节,中间8个字节空在那里就可以了。
你用debug中的d命令观察下。
[解决办法]真空区域怎么了?真空区域是必需的。段地址必须至少是16字节对齐,有木有!
[解决办法]mov sp,2
太小了。
改为:
mov sp,200
[解决办法]跟PSP有关。