求解一道题
初始条件cs=2300H DS=2400HPUSH CS
POP DS
CS=?DS=? 1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数.
----
2. PUSH的操作过程是: (SP)<--(SP)-2,((SP))<--OPRD 即先修改堆栈指针SP(压入 时为自动减2),然后,将指定的操作数送入新的栈顶位置.
此处的((SP))<--OPRD,也可以理解为:
[(SS)*16+(SP)]<--OPRD 或 <--OPRD
3. 示例: PUSH DX
PUSH BP
PUSH CS
PUSH DATA1
PUSH ALFA
注意: 每进行一次压入操作,都压入一个字(16位).
4. PUSH和POP指令对状态标志位没有影响。
5. 什么是堆栈
堆栈被定义为一种先进后出的数据结构,即最后进栈的元素将被最先弹出来.这 很像许多人进入一条窄得只能容纳一个人通过的小道,如果要从这条道往回退出 来的话,那么最先退出来的人是最后一个进入小道的人.
CS和DS的值不变.
我也是刚学,不知道说的对不对.如果不对,不要骂我.请教我.O(∩_∩)O谢谢
学习! liuyy886 发表于 2013-5-2 11:18 static/image/common/back.gif
1. OPRD为16位(字)操作数,可以是寄存器或存储器操作数.
----
2. PUSH的操作过程是: (SP)
额 、。。。答案不对,答案是DS变为2400H,我感觉是如果不变的话应该
POPcs,
这里没有push ds
而pop ds了
那么 pop 出来的是栈顶的数据即把cs赋值成ds 本帖最后由 liuyy886 于 2013-5-2 20:56 编辑
『冰河洗劍』 发表于 2013-5-2 17:20 http://bbs.fishc.com/static/image/common/back.gif
额 、。。。答案不对,答案是DS变为2400H,我感觉是如果不变的话应该
POPcs,
这里没有push ds
真是被感动的痛哭流涕……高手,O(∩_∩)O谢谢,指导:handshake
是我忽略了.
PUSH CS
POP DS
cs=ds=2300h
页:
[1]