|
主题 : : 检测点6.1的一个问题( mov cs:[bx],ax 被masm处理成mov [bx],ax [待解决] |
回复[ 7次 ]
点击[ 537次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-12-20 15:45 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36 |
在做检测点6.1时,空行中填入mov cs:[bx],ax 但生成exe文件后,用debug u查看。
mov cs:[bx],ax 被显示为mov [bx],ax。
编译器:masm5
有没有同学遇到这种情况?
请问为什么有这种情况?怎么处理? | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-20 15:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36 |
补充一下:上面那个问题是做检测点6.1的1出现的情况。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-20 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36 |
刚才看漏了点东西,用debug 6_1.exe (6_1.exe是生成的exe文件)
mov cs:[bx],ax 被改写为:
cs:
mov [bx],ax
这个检测点,直接用debug单步执行可以产生正确的结果。
但是如果直接执行6_1.exe后,查看结果不正确。
这个是怎么回事?
还有检测点6.1的2也是这种情况。
请指点一下,谢谢! | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-12-21 11:07 ]
[引用]
[回复]
[ top ] | |
荣誉值:7
信誉值:10
注册日期:2009-11-19 11:28 |
在做检测点6.1时,空行中填入mov cs:[bx],ax 但生成exe文件后,用debug u查看。
mov cs:[bx],ax 被显示为mov [bx],ax。
编译器:masm5
有没有同学遇到这种情况?
请问为什么有这种情况?怎么处理?
有这种情况,不用处理,这是编译器的规则。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-12-21 20:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-01-05 17:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
就跟debug把[idate]内数据解释为一个偏移地址, 而masm则把[idate]内解释为idate,一样 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-01-05 19:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13 |
我理解是直接执行后,程序返回了。你要再查看,得再进入debug,这个时候运行的程序已经不是前面的那个了 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-01-05 23:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
王爽老师的第二版《汇编语言》P110页,对debug和masm对指令的不同处理有简单介绍。 | | |