- Assembly code
assume 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有关。