当前位置: 代码迷 >> 汇编语言 >> 关于理解DS与CS段寄存器的有关问题
  详细解决方案

关于理解DS与CS段寄存器的有关问题

热度:4922   发布时间:2013-02-26 00:00:00.0
关于理解DS与CS段寄存器的问题
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有关。
  相关解决方案