在王爽的汇编语言中有一段代码为:
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段干涉了吗?谢谢!