新手求教:关于DS、CS和程序起始地址的问题?
问题来源:王爽老师《汇编语言》7.3部分有几句话理解不透彻程序:
sassume: cs:code,ds:data
data segment
db 'unIX'
db 'foRK'
data ends
code segment
start: mov al,'a'
mov bl,'b'
mov ax,4c00h
int 21h
code ends
end start
书上原文说“用R命令分析一下data段的地址,因‘ds=0B2D’,所以程序从0B3DH段开始(此时CS=0B3EH),data段又是程序中的第一个段,它就在程序的起始处,所以它的段地址为0B3DH。”
我的疑问:
1.按书上的逻辑,为什么DS=0B2D,就知道程序从0B3DH开始呢?按我的理解,应该CS=0B3E才指向程序起始处啊!我在之前试验过,DS与程序的起始地址没有关系,只要有start标记;
2.若就认为在定义数据之后,紧接着是指令。那我只定义了8个字节的数据,即由DS=0B2D可推算出程序应该从0B2E开始啊,怎么会是0B3D开始呢?
初学,请前辈解答,谢谢!