汇编语言的数据先入栈再出栈之后会发生相应的变化

今天下午在使用dbox学习汇编语言的时候,惊奇地发现如果先对数据进行入栈操作然后再对数据进行出栈操作,原先栈地址位置的数据会发生随机的变化
运行实验5(2)中的程序,程序如下

assume cs:code,ds:data,ss:stack

data segment
	dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
data ends;076a:0000中存放这些数

stack segment
	dw 0,0,0,0,0,0,0,0
stack ends;076a:0010中存放这些数

code  segment

start: mov ax,stack
	   mov ss,ax;ss=076B
	   mov sp,16;sp=10h
	   
	   mov ax,data
	   mov ds,ax;ds=076A
	   
	   push ds:[0];将076A:0000中的数压入栈中
	   ;076A:000E中开始存放数据,即0123h
	   push ds:[2];将076A:0002中的数压入栈中
	   ;076A:000C中开始存放数据,即0456h
	   pop ds:[2];将栈中的数弹出076A:0002
	   ;即0123h放入076A:0002
	   pop ds:[0];将栈中的数弹出076A:0000
	   ;即0456h放入076A:0000
	   mov ax,4c00h
	   int 21h
code  ends

end start

在这里插入图片描述可以看出,原先栈中的数据为04 56,出栈之后相应位置的数据会发生变化

运行(3)中的数据
在这里插入图片描述
在这里插入图片描述汇编语言弹栈之后原先那个位置栈的数据可能发生改变,比如这个原先的56 04弹出栈之后相应的数据变为A3 01的数据,再弹一次栈之后
在这里插入图片描述
相应位置的数据又发生了相应的变化

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值