|
主题 : : 问题3.8 [待解决] |
回复[ 8次 ]
点击[ 389次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-06-01 11:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04 |
指定好SS和SP了 为什么不能PUSH AX进栈??
运行完 mov ss,ax mov sp,0010后 push ax这段指令就变没了
到底怎么回事啊 哪个帮帮我 谢谢 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-06-01 11:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23 |
不可能啊,push ax可定能运行到的。
这是我T跟踪的,没问题的。
AX=1000 BX=0000 CX=0015 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=142B ES=142B SS=143B CS=143B IP=0003 NV UP EI PL NZ NA PO NC
143B:0003 8ED0 MOV SS,AX
-t
AX=1000 BX=0000 CX=0015 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=142B ES=142B SS=1000 CS=143B IP=0008 NV UP EI PL NZ NA PO NC
143B:0008 B81A00 MOV AX,001A
-t
AX=001A BX=0000 CX=0015 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=142B ES=142B SS=1000 CS=143B IP=000B NV UP EI PL NZ NA PO NC
143B:000B BB1B00 MOV BX,001B
-t
AX=001A BX=001B CX=0015 DX=0000 SP=0010 BP=0000 SI=0000 DI=0000
DS=142B ES=142B SS=1000 CS=143B IP=000E NV UP EI PL NZ NA PO NC
143B:000E 50 PUSH AX
-t
AX=001A BX=001B CX=0015 DX=0000 SP=000E BP=0000 SI=0000 DI=0000
DS=142B ES=142B SS=1000 CS=143B IP=000F NV UP EI PL NZ NA PO NC
143B:000F 53 PUSH BX | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-06-01 11:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04 |
那就怪了 为什么我的一到PUSH AX 就变其他的指令了..... | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-06-01 11:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04 |
我快晕了 为什么有时候行 有时候又不行
而且有时候 用T执行mov sp 0010的时候却不显示指令出来
但却能执行 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-06-01 11:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:32
信誉值:0
注册日期:2008-01-15 12:22 |
我快晕了 为什么有时候行 有时候又不行
而且有时候 用T执行mov sp 0010的时候却不显示指令出来
但却能执行
------------------
回复:把你的跟踪也像一楼那样子发上来,这样说说也看不明白。
可以使用dos窗口的编辑功能,把dos窗口中的内容复制出来。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-06-01 12:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05 |
仔细看书
mov ss,ax 只要是改变栈段地址的指令 后面一条指令 会 直接执行
如果 mov ss,ax mov sp,10H
mov sp ,10这条指令不会显示 他会紧跟着 mov ss,ax后直接执行
因为一般 改变栈段的话,也会改变栈指针sp 所以这个是贴心的设计
如果你 push ax是紧跟着改变栈段指令的话 他是不会显示 他会被直接执行
这是8086 被设计成这样的 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-06-02 10:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-05-27 12:04 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-06-17 21:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:31
信誉值:3
注册日期:2009-06-15 19:20 |
|
|
|
|
|
[第8楼]
[ 回复时间:2009-06-29 21:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:6
信誉值:5
注册日期:2009-05-25 11:39 |
仔细看书
mov ss,ax 只要是改变栈段地址的指令 后面一条指令 会 直接执行
如果 mov ss,ax mov sp,10H
mov sp ,10这条指令不会显示 他会紧跟着 mov ss,ax后直接执行
因为一般 改变栈段的话,也会改变栈指针sp 所以这个是贴心的设计
如果你 push ax是紧跟着改变栈段指令的话 他是不会显示 他会被直接执行
这是8086 被设计成这样的
--------------------------------------
明白了@谢谢 | | |