汇编栈段中数据问题
时间:2011-08-10
来源:互联网
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
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
将程序加载入内存后
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14BD ES=14BD SS=14CD CS=14CF IP=0000 NV UP EI PL NZ NA PO NC
14CF:0000 B8CE14 MOV AX,14CE
-d 14cd:0
14CD:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09
14CD:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
14CD:0020 B8 CE 14 8E D0 BC 10 00-B8 CD 14 8E D8 FF 36 00
14CD:0030 00 FF 36 02 00 8F 06 02-00 8F 06 00 00 B8 00 4C
14CD:0040 CD 21 2B C0 8B F8 0B FF-74 0C 8B DF D1 E3 03 1E
14CD:0050 9A 16 8B 07 EB 02 2B C0-89 46 F0 C4 5E F8 26 8B
14CD:0060 47 08 89 46 F4 80 3E 60-08 00 74 30 0B F6 74 2C
14CD:0070 0B FF 74 28 8B 1E D2 25-8A 01 38 00 76 0A B8 01
。。。
-t
AX=14CE BX=0000 CX=0042 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=14BD ES=14BD SS=14CE CS=14CF IP=0008 NV UP EI PL NZ NA PO NC
14CF:0008 B8CD14 MOV AX,14CD
-d ss:0
14CE:0000 00 00 00 00 00 00 CE 14-00 00 08 00 CF 14 86 0E ................
麻烦各位解释下为什么栈里面的数据会变化。这些数据是什么?有什么作用吗?
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
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
将程序加载入内存后
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=14BD ES=14BD SS=14CD CS=14CF IP=0000 NV UP EI PL NZ NA PO NC
14CF:0000 B8CE14 MOV AX,14CE
-d 14cd:0
14CD:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09
14CD:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00
14CD:0020 B8 CE 14 8E D0 BC 10 00-B8 CD 14 8E D8 FF 36 00
14CD:0030 00 FF 36 02 00 8F 06 02-00 8F 06 00 00 B8 00 4C
14CD:0040 CD 21 2B C0 8B F8 0B FF-74 0C 8B DF D1 E3 03 1E
14CD:0050 9A 16 8B 07 EB 02 2B C0-89 46 F0 C4 5E F8 26 8B
14CD:0060 47 08 89 46 F4 80 3E 60-08 00 74 30 0B F6 74 2C
14CD:0070 0B FF 74 28 8B 1E D2 25-8A 01 38 00 76 0A B8 01
。。。
-t
AX=14CE BX=0000 CX=0042 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=14BD ES=14BD SS=14CE CS=14CF IP=0008 NV UP EI PL NZ NA PO NC
14CF:0008 B8CD14 MOV AX,14CD
-d ss:0
14CE:0000 00 00 00 00 00 00 CE 14-00 00 08 00 CF 14 86 0E ................
麻烦各位解释下为什么栈里面的数据会变化。这些数据是什么?有什么作用吗?
作者: youwendong 发布时间: 2011-08-10
无效数据....当你压栈时会把这些数据抹去..
作者: xushipei2009 发布时间: 2011-08-11
这些数据哪来的啊
作者: youwendong 发布时间: 2011-08-11
t 命令的单步中断压栈的几个寄存器吧。你看下那几个数据,最后的 86 0e 应该是标记寄存器的内容;前面的 08 00 CF 14 就是 14CD:0008,这个是返回地址;再前面的应该是单步中断例程暂时借用的,随后就将堆栈指向到中断例程自己的空间了。
作者: zara 发布时间: 2011-08-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28