|
主题 : : 问题3.12求解决 [已解决] |
回复[ 11次 ]
点击[ 439次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-11-22 17:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
mov ax,1000
mov ss, ax
mov sp, 0020
mov ax, cs
mov ds, ax
mov ax, [0]
mov ax, [2]
mov bx, [4]
add bx, [6]
push ax
push bx
pop ax
pop bx
这段代码正常不能执行完,执行不到mov bx, [4] | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-11-22 19:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
你写到debug下了还是源程序中?是不是代码段数据段和栈段都是同一个段? | | |
|
|
|
|
[第2楼]
[ 回复时间:2011-11-23 11:52 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第3楼]
[ 回复时间:2011-11-24 09:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
|
|
|
|
|
[第4楼]
[ 回复时间:2011-11-24 14:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
debug下调试,不行,摆上我的全部流程
debug
-r cs 1000 -r ip 0000
-a 1000:0
mov ax, 1000
mov ss, ax
mov sp, 0020
mov ax, cs
mov ds, ax
mov ax, [0]
add ax, [2]
mov bx, [4]
add bx, [6]
push ax
push bx
pop ax
pop bx | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-11-24 20:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
因为栈段数据段代码段都是一个,在debug中要发生单步中断,会用到栈,这样就可能把代码段覆盖掉了,就无法执行了。楼主可以试着将栈段改为另一段内存空间,和代码段分开,看看是否能够执行完。 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-11-25 09:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
|
|
|
|
|
[第7楼]
[ 回复时间:2011-11-25 10:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
根据你的改了一下,确实可行,不过跟作者的主题就不一样了,她是要代码段,栈段,数据段都在同一段内存里面 | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-11-25 10:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
|
|
|
|
|
[第9楼]
[ 回复时间:2011-11-25 19:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
理论上是没有问题的,只是实验起来会受到具体环境的影响。知道是什么意思就可以了。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2011-11-26 16:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
|
|
|
|
|
[第11楼]
[ 回复时间:2012-01-07 09:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:13
注册日期:2011-10-31 15:52 |
此贴由 贴主 于 [ 2012-01-07 09:56 ] 结贴。 结贴原因:问题已解决 | | |