SS、SP寄存器为0,使用PUSH指令会将数据存到哪里?

来源:百度知道 编辑:UC知道 时间:2024/07/01 05:03:34
如题,发现一个程序,把SS、SP清零之后任然能正常运行,反复使用push、pop、call
这是怎么回事呢?

由于在执行PUSH的时候是先把SP减2,然后入栈,所以清零后第一个PUSH的数据的地址是 0000:FFFE
只要看看这些指令的具体执行的过程就可以发现为什么将SS和SP清零之后仍能正常执行了
【不过你这样修改SS和SP是非常危险的,因为内存的低端有很多重要的数据,这些数据如果被栈覆盖掉的话,后果是很难预料的】

内存映射。