-
-
[求助]关于汇编执行mov sp,16后的栈空间问题
-
发表于: 2016-8-30 17:22 2370
-
如图产生如下2个问题:
Q1:图中第一部分显示在执行mov sp,10h之前,ss:sp指向的堆栈空间为0B3D:0,但是执行了这句之后查看栈的内存 如图中第二部分 按中断机制 先存标志到0B3D:000E(2个字节),然后CS入栈(0B3D:000C~0B3D;000D), 接着IP入栈(0B3D:000A~0B3D:000B),那么0B3D:0006这个内存单元里的3是什么,而且装进去的标志寄存器的值是549H,可是549H换成16位二进制是010101001001,和此时的寄存器不匹配啊,光是看CF显示的NC(即0),而二进制最低位是1,为什么?
Q2:对比图中的第2部分和第3部分,执行了一句Push,按平常的理解应该将0B3D:000E~0B3D:000F的内存改写成AX(即将原有的0549覆盖成0003),然而 图第3部分 显示竟然没覆盖 而是惊奇的是将原有的0B3D:0~0B3D:F这一段内存的数据分别放在相对于原地址-1的内存中 即“左移一个单元”然后在栈最底端加入了AX的值,这是栈么 怎么感觉像队列,萌新一脸懵逼,求解惑
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
谁下载
看原图
赞赏
雪币:
留言: