. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点6.1的一个问题( mov cs:[bx],ax 被masm处理成mov [bx],ax  [待解决] 回复[ 7次 ]   点击[ 537次 ]  
iammingbo
[帖 主]   [ 发表时间: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
有没有同学遇到这种情况?
请问为什么有这种情况?怎么处理?
iammingbo
[第1楼]   [ 回复时间:2009-12-20 15:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36
补充一下:上面那个问题是做检测点6.1的1出现的情况。
iammingbo
[第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也是这种情况。
请指点一下,谢谢!
suixin
[第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 
有没有同学遇到这种情况? 
请问为什么有这种情况?怎么处理?

有这种情况,不用处理,这是编译器的规则。
iammingbo
[第4楼]   [ 回复时间:2009-12-21 20:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36
多谢suixin
regex
[第5楼]   [ 回复时间:2010-01-05 17:25 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
就跟debug把[idate]内数据解释为一个偏移地址, 而masm则把[idate]内解释为idate,一样
ldllihuanfa
[第6楼]   [ 回复时间:2010-01-05 19:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:1
注册日期:2009-12-24 11:13
我理解是直接执行后,程序返回了。你要再查看,得再进入debug,这个时候运行的程序已经不是前面的那个了
regex
[第7楼]   [ 回复时间:2010-01-05 23:14 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
王爽老师的第二版《汇编语言》P110页,对debug和masm对指令的不同处理有简单介绍。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved