读书人

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

发布时间: 2012-04-02 19:58:59 作者: rapoo

关于理解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有关。

读书人网 >汇编语言

热点推荐