汇编中给ss赋值后,sp和ip为什么会变?

skyflyingsnow 2015-12-08 10:12:21
在王爽的汇编语言中有一段代码为:
assume cs:code,ds:data,ss:stack
data segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends
stack segment
dw 0,0,0,0,0,0,0,0 ;分配了一段栈
stack ends
code segment
start: mov ax,stack
mov ss,ax ;执行了这一条语句之后,在debug中观察,为什么IP和SP都变了?如下图
mov sp,16

mov ax,data
mov ds,ax

push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]

mov ax,4c00h
int 21h
code ends
end start

还有全部运行完之后,发现CS=1CA7h, SS=1CA6h, DS = 1CA5h,这些内存段地址是计算机任意分配的吗?
如果说内存地址是 段地址*10h + 偏移地址
那么偏移地址可以是0000h~ffffh,那么CS=1CA7h, SS=1CA6h, DS = 1CA5h偏移地址值设得大一点,不会和另一个段干涉吗?
1CA50h+0010h = 1CA60h 不是和1CA6段干涉了吗?谢谢!
...全文
176 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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