请问系统默认的堆栈段在哪里?

srxumin 2019-04-01 11:36:36
assume cs:code
code segment
start:
mov ax,100
push ax
pop ax

mov ah,4ch
int 21h
code ends
end start

我用debug查了一下,程序启动时,ds=075a,cs=076a,ss=0769
这里075A到076A之间应该是程序段前缀(PSP)区吧?ss又指向0769,难道系统默认在psp里面临时分配了32个字节给程序用吗?
...全文
342 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zara 2019-04-02
  • 打赏
  • 举报
回复
这个好像是 dosbox 的自我主张吧,xp/sp3 的dos 下就会是在 76A 的,这个是通常认为的样子,即将堆栈默认在了 psp 后的 64K 块的最后。dosbox 这样做,提前了 10h字节,对默认堆栈的小程序来说,一般也没什么关系;因为这样的程序往往内存用得都很宽松,不至于紧张这 10h 字节,否则早就该自己分配设置堆栈了。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧