zer0 发表于 2013-5-4 13:21:51

王爽书的汇编语言里的一个简单问题

本帖最后由 s0512 于 2013-5-26 13:54 编辑

assume 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这段是代码

为什么段地址要从0B3DH开始 而不从0B2DH开始呢?
求解!

NGtailang 发表于 2013-5-4 13:21:52

0B3DH-0B2DH=10H,刚好16位,留给栈用

1971827035 发表于 2013-5-4 16:10:04

0B3DH-0B2DH=10H,这段内存用来存放数据,程序段前缀等的一些信息。另外也是因为cs,ds在内存中的存储是16位,也就是10h

zer0 发表于 2013-5-4 16:44:20

本帖最后由 comethat 于 2013-5-4 16:53 编辑

1971827035 发表于 2013-5-4 16:10 static/image/common/back.gif
0B3DH-0B2DH=10H,这段内存用来存放数据,程序段前缀等的一些信息。另外也是因为cs,ds在内存中的存储是16位 ...
那假如前面多定义一个ss:stack或者把ds:data 改成ds:datasg
结果还是10H吗

dAb 发表于 2013-5-4 19:45:06

真是难得给力的帖子啊。

风筝1025 发表于 2013-5-4 21:28:10

我只是路过打酱油的。

S_J_ 发表于 2013-5-5 00:34:34

comethat 发表于 2013-5-4 16:44 static/image/common/back.gif
那假如前面多定义一个ss:stack或者把ds:data 改成ds:datasg
结果还是10H吗

其实你可以自己试试看,按照你的想法改一下看看结果是什么。再比较之前的,你会有所收获的,

vitamin 发表于 2013-5-5 11:31:43

传说好像是放psp了吧

☆小韦QQ 发表于 2013-5-5 12:19:31

因为DOS有一个PPS区,占用256个字节。不知道跟这个有关系吗?

love101518 发表于 2013-5-5 17:18:53

这个书上有说明的

Jiuaim 发表于 2013-5-7 18:43:50

{:1_1:}学习了。

小靚同学Leon 发表于 2013-5-8 00:33:48

留有256个字节用来进行编译预处理的,0B2d-0b3d地址相差256个字节,因为还要加上偏移地址啊,即0b2d0-0b3d0刚好256字节。
页: [1]
查看完整版本: 王爽书的汇编语言里的一个简单问题