. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点9.1发现的两个问题,一起来讨论!!!  [已解决] 回复[ 3次 ]   点击[ 544次 ]  
lhjoanna
[帖 主]   [ 发表时间:2009-02-02 12:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-22 21:18
做完检测点9.1,结果倒是正确,可中间出现两个问题:
<1> 在(2)中第一个空填mov [bx],offset start,则编译时出现问题,修改为mov word ptr [bx],offset start则问题消失,看来是因为内存单元不知道字节数的问题,而书上题目前面已经是固定好的,只需要填后面的空,潜在的意思就是前面是正确的,我不知道为何,是大家都出现了这样的问题,还是只是我的编译器问题,还是后面的空另有答案?
<2> 在(3)中,问执行程序后cs=?,ip=?。按理说应该cs=0006,ip=00be。可实际上cs并没有变,只是ip变了。我在想是不是dword不支持段间转移,遂改为jmp far ptr es:[1000h],答案正确,cs=0006,ip=00be。可是书中并没有提到dword不支持段间转移,并且王老师给出的例子中用dword本就可以修改段地址啊。这是为何?
还请大家来讨论下!
mouse
[第1楼]   [ 回复时间:2009-02-02 12:31 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
1> 在(2)中第一个空填mov [bx],offset start,则编译时出现问题,修改为mov word ptr [bx],offset start则问题消失,看来...
-----------------
只要是把0赋值给[bx]就可以了。比如这个空填mov [bx],bx(这个空填什么不是最重要的,而是为什么要填这个),比如楼主的填法,就检测了一个知识点。


<2> 在(3)中,问执行程序后cs=?,ip=?。按理说应该cs=0006,ip=00be。可实际上cs并没有变,
------------
楼主是debug验证的吧,debug有的时候是不能显示正确结果的。
比如用a命令写入jmp dword ptr [1000],再用u命令查看,发现会变成jmp [1000]
lhjoanna
[第2楼]   [ 回复时间:2009-02-06 01:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-22 21:18
此贴由 贴主 于 [ 2009-02-06 01:11 ] 结贴。 结贴原因:问题已解决
lhjoanna
[第3楼]   [ 回复时间:2009-02-06 01:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-22 21:18
恩,谢谢提醒。我也一直想怎么老显示未解决,以为是管理员忙不过来吧。原来帖主就可以自己结。谢谢回复~~~
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved