沸腾的馒头 发表于 2014-3-24 01:51:05

第三章节问题

课本60页。初始状态栈是空的,执行push ax指令,其中ss:sp是10010H,ax是2266H,那么字节数据22H应该放在10010H中,66H应该放在1000FH中,为什么课本说22H放在1000F中,66H放在1000E中?将数据压栈难道不是压入到ss:sp所指向的位置吗,这里为什么要往上移动一个字节的数据区?

bjfuzqy 发表于 2014-3-24 02:04:40

数据进栈,分两步。sp=sp-2 ,然后写入数据。所以1000E才是第一个字的起始地址

unicn 发表于 2014-3-24 02:05:43

这位同学,我学的比你多,我来帮你解答下这个问题。入栈的操作是,先 sp=sp-2 然后再在此时sp指向的内存地址入栈,原来 sp 为 0010,-2后为 000e ,那么要入栈的两个内存单元地址不就是 000e、000f么,根据高字节高位,低字节地位的原则,那么就是 22 在 000f 了,66 在 000e了。
不知道你理解了没有,共勉。
页: [1]
查看完整版本: 第三章节问题