关于汇编语言的入栈问题

Small-K 2020-04-12 11:16:33
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入栈,但它前面的数据全部前移了


...全文
213 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Small-K 2020-04-12
  • 打赏
  • 举报
回复
非常感谢,我明白了!
zara 2020-04-12
  • 打赏
  • 举报
回复
这是哪个傻货设计的题目哦。堆栈,你在 t命令进行单步时,也是会被用到的,所以空间要足够,指针外的内容一般没意义。

21,497

社区成员

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

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