. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  醒目!醒目!醒目!第13章汇编测试题目 (3)  靠!靠!靠! 这是什么怪题目啊!  [待解决] 回复[ 10次 ]   点击[ 1131次 ]  
zhenglxd
[帖 主]   [ 发表时间:2009-06-08 11:46 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
用7ch中断例程模拟loop指令的功能,指令序列如下:
                     lp: push bp
                      mov bp,sp
                      dec cx
                      jcxz lpret
                      add [bp+2],bx
                     lpret: pop bp
                      iret
                     关于7ch中断下列说法正确的是
        1、          此中断的最大转移位移为128
        2、          此中断的最大转移位移为1K
        3、          此中断根据bx中的偏移量实现跳转
        4、          此中断不能设定跳转的次数

我已经知道正确答案是 3. 但是我就选4

我认为 4是对的

我的理由是 cx决定了 跳转的次数 而cx 并不是放在中断例程中的
我的理由2 中断例程模拟 loop指令 他提供的功能也仅仅是跳转而已,或者条件转移

很多人觉得4是错误的 因为 4 的选项是 是此中断不能设定跳转的次数,实际上你可以通过修改栈内的数据达到设定跳转次数的目的。

但是如果 通过修改原始例程,或者仅仅从这个程序可以引申出的或者包含其内的角度来看 只有是代码 都有无限可能那么 1~4 全是对的 要么就是全是错误的!

我也可以同样在逻辑上 作出 3这个标准答案是错误的 推理

3.的答案是 此中断根据bx中的偏移量实现跳转
我觉得错误的原因是 实现跳转 偏移量起到的作用仅仅是 指示跳转地址的作用
但是 实现跳转不是仅给 偏移量就可以实现了 没有 中断例程的其他部分 请问他怎么实现跳转
这不是我 断章取义和咬文嚼字 实际上 单单从上面的中断例程
客观理解 bx的作用 就是 指明 跳转地址的偏移量
但是你因为他的作用是指明 跳转地址的偏移量 就能给出 此中断根据bx中的偏移量实现跳转
这样的结论荒谬不? 如果 是 执行跳转 或者 进行跳转 那么都说的过去
但是实现跳转,我就觉得错误! 不错我咬文嚼字了! 凡是 做检测题像我一样做到13章的 都知道检测题 最变态的就是咬文嚼字的题了
但本题 题目自己出问题了!从逻辑上 你们能推翻我 吗?
换个 比喻 一个句子 我靠筷子吃饭 ,和 有筷子就有饭吃 请问是一个意思吗

在说下4  此中断不能设定跳转的次数,请问,不修改 源代码不用代码直接改机器码前提下 怎么实现设定跳转的次数
如果不能,那么 4 就正确 我想即使王爽 老师来了 他也做不到吧!

本来一道题目我不需要发那么大的牢骚,但是说实话 越往后学人越少相应的管理越松散,我希望论坛检测题不要再出现这类模棱两可的题目了
凡是基于理论的题目,不要考概念,不然就变成应试教育了!
blackberry
[第1楼]   [ 回复时间:2009-06-09 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:16
信誉值:0
注册日期:2008-10-12 13:46
我不这样认为。
首先,每张的题目都和书中的内容密切相关的,我觉得题目没说“按照**章**节**程序实现的过程,某中断代码如下”类似指明前提的话才造成了楼主如此的理解吧。而且,确实,如果咬文嚼字的话,这还有什么意思。按照你说的那样“实现跳转”不对,而“执行跳转”就可以,那我同样可以说不可以,因为只根据bx的值无法跳转,还要进行add操作计算出跳转的位置呢,所以,我认为“实现”更好,还能体现出有其他的操作呢。还有就是,我们知道cx是中断例程留出来的接口,因为我们模拟的是loop,当然得用cx作为传入参数了。一个子程序的入口当然需要其他程序进行传入才能生效,所以,cx必然是需要在子程序外部进行更改的,而cx的更改就是控制循环跳转的次数。

所以,我认为你说的这些确实不错,但是,关键出在,题目没有明确的说出这个题目是在书上的某个讲解点前提下的一段程序,如果孤立的看段代码,显然根本无法满足题设。所以,以孤立的角度再去分析和评判,也没什么意义了吧。另外,我个人觉得,汇编网的检测题更多的是在体现实践,而且这个题目也没有什么理论元素啊。

我认为这个题目如果说有含糊的地方,应该是没有充足的题干前提,而不是楼主说的那些。
mywiil
[第2楼]   [ 回复时间:2009-06-09 11:10 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
哪有楼主说的那么乱乎。
我只对选项4做个评价,首先,这个中断是模拟loop指令之一点很明确了吧?loop是靠cx来设定循环跳转次数吧?如果该中断例程不能够修改cx值来控制循环跳转的次数,那么我们模拟的还是loop指令么?我么模拟loop怎么着也得让这个接口最大程度的跟要模拟的指令类似吧。

1楼的说的也有不合适的地方,什么叫“cx的更改就是控制循环跳转的次数”,因该是“cx就是控制循环跳转的次数的入口参数寄存器”更明确一点。不过,如果没有看书的前提,孤立看这段程序,确实很容易出现楼主的想法,不过,这里的检测题难道不是学一章做做一章的么?其实楼主已经很明确题目的意思了,却咬文嚼字,难道这不是应试教育了?呵呵

“越往后学人越少相应的管理越松散”,前半句没意见,因为很多人确实不能坚持学下去,可是后面的话貌似太武断了。其实,我们可以感觉出,当我们向后学习的时候,我们已经慢慢掌握了自我学习和解决问题的能力了,所以,才会越来越少人来提问,这个看论坛中每章的讨论区的帖子数就能看到了。

又说多了。呵呵。
ilove
[第3楼]   [ 回复时间:2009-06-09 15:24 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2008-10-19 21:37
“越往后学人越少相应的管理越松散”-楼主的这句话,我觉得楼上说的很好,如果我们学过了第十章,还有很多问题,那就要问自己了,是不是真正把前面的知识掌握好了,是不是严格按照前言说的“两个必须”来学习的。

至于楼主上面说的这个题目,网站公布现在这个检测题已经很长时间了吧,应该很多人都做过这道题,而楼主的问题我是第一个看到。我觉得当别人都没有问题,而自己遇到的时候要先考虑自己的做题思路、想象出题者考察的知识。
yuanliangding
[第4楼]   [ 回复时间:2010-02-06 20:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2010-01-30 14:38
我支持楼主,
首先1 2肯定 是错的,
3写在“偏移量”我觉得不妥,要是写在跳转位移值,我就会选这个了。
4,在全程中虽然是dec了,但是,CX决定了跳转资料。这里的cX只决定要不要跳转,而没有决定跳转多少次。
===============
这个全程的用法应该是这样的,
把要循环的次数写到CX,
把要循环的起始位置与调用该例程处位移量(不是偏移量)写到bx中,
就可以完成预想的过程。
-----------------------
  这个例程还有一个不好的地方:
  就是在循环体中,要使用CX,BX,要特别小心
-----------------------
yuanliangding
[第5楼]   [ 回复时间:2010-02-06 20:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2010-01-30 14:38
学习要有怀疑的精神,
怀疑并不都是怀疑自己,
有的时候也要怀疑怀疑书,是不是言语用得不准备。
zihaolee
[第6楼]   [ 回复时间:2010-05-02 14:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-04 10:05
讲得好  踏踏实实做下来就会发现 学到后面的章节提问题就会少了
jiangnii
[第7楼]   [ 回复时间:2010-05-30 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-14 14:06
我同意楼主的一些说法,这道题的描述相当的不准确,没有一个答案我认为是绝对正确的,不敢随便答就先跑这里来看帖子了
sleepinglion
[第8楼]   [ 回复时间:2010-08-07 18:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-13 23:22
jcxz是干嘛用的?如果cx=0就跳转。显然可以设置跳转次数了。所以4错误
liuquanhao7232
[第9楼]   [ 回复时间:2010-08-13 09:46 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47
lp: push bp 
                      mov bp,sp 
                      dec cx 
                      jcxz lpret 
                      add [bp+2],bx 
                     lpret: pop bp 
                      iret 
                     关于7ch中断下列说法正确的是 
        1、          此中断的最大转移位移为128 
        2、          此中断的最大转移位移为1K 
        3、          此中断根据bx中的偏移量实现跳转 
        4、          此中断不能设定跳转的次数 

1,2明显错误。。此时把这个7ch中断例程作为一个整体,即就是“int 7ch”。他的最大转移位移显然不是这两个。
3 设定bx的大小,可以实现跳转,当bx为0,则不能跳转,当bx不为0时,则可以跳转。
4 这个中断当然可以设定跳转的次数,dec就是设定的次数,这里我们只关心次数,同样我们可以写成sub cx,2
   或add cx,4(当然,这个的前提是CX为负数,而且是4的倍数,不然永远不能结束)。
当cx等于8时,用dec则可以循环8次,用sub cx,2时则可以循环4次。所以这个中断可以设定跳转次数。
guangzhou
[第10楼]   [ 回复时间:2010-09-23 22:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-09-23 22:17
既然是模拟LOOP指令的功能,那程序中肯定有设定CX,这是配对使用的,不然DEC用来干什么?那怎么能说这个例程不能设定跳转次数呢
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved