X8086
代码的目的:
在一个段内定义了4个字数据,并开辟了4个字空间作为栈空间
程序将读通过PUSH操作将这四个字数据逐个入栈
源代码:
```
assume cs:codeseg
codeseg segment
dw 0123h,0234h,0567h,0987h
dw 0,0,0,0
start:
mov ax, cs
mov ss, ax
mov sp, 16
mov bx, 0
mov cx, 4
lop:
push cs:[bx]
add bx, 2
loop lop
mov ax, 4c00h
int 21h
codeseg ends
end start
```
问题:内存数据会在两个时间点无端改变
## **1. mov ss, ax 后**
定义的最后一个数据0987h被替换成了076Ah
##
## **2.push操作之后,数据会前移覆盖**
可以看到,push操作,使得0123h入栈,但它前面的数据全部前移了