打印

一道A51汇编题求助高手。

[复制链接]
楼主: wxj1952
手机看帖
扫描二维码
随时随地手机跟帖
61
wxj1952|  楼主 | 2008-8-18 21:29 | 只看该作者 回帖奖励 |倒序浏览

LZ题目的本意没有贬低谁的意思。

LZ的本意就是看看:别人做的很基础的东西,我们能不能想到。当然我这样的菜鸟,是看了答案才悟出点道理。,所以我想看看比我高超的诸位老师是怎么考虑这类问题的。没谁有贬义,谁那么想,恐怕是过于敏感多心了。

     我赞同一个网友的帖子:
    “就写程序而言,和老外的高手比,国人的差别是数量级上的差别.”

记得当时反映最强烈的,就是农民讲习所。“LS的话说得不恰当,......”
意思容易理解,LS这么说,把我往哪放?
那么我现在提到一个实际的题目,“见证高手”,也有人过度敏感了吧。“LZ这么说,是对我的贬义。”自己把自己划入世界高手行列?

上面网友的帖子有没有贬义?比我有过之无不及。我认为没有贬义,他说的是事实。只有承认差距,才是正常的心理状态。而不是极力去挑剔别人的“严重语病”来表明自己和世界高手相比,没有差距。


至今为止,题目提示了N天,还没有答案。(亏我前几天没直接写答案。)高手这几天只忙着打嘴仗。忙着找尊严。
  建议,心态平静点儿,想不出来就承认差距,看看和别人的差距到底在哪。有人根本就不希望有什么最终结果,“否则把我往哪放?”他也从来没有思考过LZ的题目。   这样人的目的是什么?只有他自己知道。只能理解为把自己放的位置不正。

使用特权

评论回复
62
myfaith| | 2008-8-18 21:30 | 只看该作者

57楼---“您该不会认为自己比keil的软件专家还高明?”

程序匠八“新职业是如何诞生的”帖里的那几句话可真贴切,对于那个荣誉称号,我推荐此人,不知大家有没有不同意见?

使用特权

评论回复
63
wxj1952|  楼主 | 2008-8-18 23:06 | 只看该作者

照顾年长者的情绪,我把标题改了。

改为“求助高手”。让老先生等觉得舒服一点。结果还不是一样?只能见证/领教一下挑剔题目“逻辑混乱,严重语病。”的本事。



使用特权

评论回复
64
wlq_9| | 2008-8-18 23:29 | 只看该作者

原来的题目

让人一看就容易反感,事实上做不做的出来这题和高不高手毫无关系.相信很多人看完这题以后,一笑而过.
而且除非你是完美主义者,不然把精力花费在几条混编语句上,不值,有舍本逐末的味道.

使用特权

评论回复
65
aihe| | 2008-8-19 00:02 | 只看该作者

呵呵,看来楼主是慕容世家的弟子

楼主的借力反击的功夫更深厚
奉劝各位网友,不要随便扔砖头,要不然会弹出来砸到自己的
就算砸不到自己,也有可能砸到别人,砸到小朋友,砸到花花草草也不好嘛。。。

使用特权

评论回复
66
icmap| | 2008-8-19 00:40 | 只看该作者

谁说Keil不用JZ?胡说!

谁说Keil不用JZ?胡说!
这是用 Keil C 编译后得到的,没有用任何优化。

使用特权

评论回复
67
icmap| | 2008-8-19 00:52 | 只看该作者

也可以适用于超出256字节的地址

CLR C
    SUBB A,R7
    JZ  F3
    JC  F2
F1:

F3:

F2:

也可以适用于超出256字节的地址,可以添加 ljmp 或 lcall 指令,例如:

CLR C
    SUBB A,R7
    JZ  F3
    JC  F2
F1:
LCALL G1
.
.
F3:
LCALL G3
.
.
F2:
LCALL G2
.
.

使用特权

评论回复
68
xstuweiwei| | 2008-8-19 18:45 | 只看该作者

CJNE A,07H,F2///R7??

难道R7的地址一定是07H内存单元吗?
注意题目的陷阱。

使用特权

评论回复
69
NE5532| | 2008-8-19 20:26 | 只看该作者

晕,LS要这样找“陷阱”的话,程序不知道要拖长

另外谁规定编译器就是神了?看看PICC,有时候真想自残。

使用特权

评论回复
70
xwj| | 2008-8-19 20:58 | 只看该作者

唉,又争起来了?

严格点的话,应该写成
CJNE    A,AR7,F2

编译器会自动根据当前寄存器组把AR7转成R7的正确地址

使用特权

评论回复
71
jerkoh| | 2008-8-19 21:06 | 只看该作者

re

LS的
请问下什么编译器可以AR7认的啊?keil吗?
比较感兴趣

使用特权

评论回复
72
5880527| | 2008-8-19 21:08 | 只看该作者

占据那么好的位子早知道就整点广告了

其实大多数人用汇编时都不会用到后面几组寄存器的,不信去翻翻自己的程序。第一页讨论过这个了,这个问题以前也讨论过

使用特权

评论回复
73
lyjian| | 2008-8-20 09:29 | 只看该作者

编译器不会自动根据当前寄存器组把AR7转成R7的正确地址

严格点的话,应该写成
CJNE    A,AR7,F2

编译器会自动根据当前寄存器组把AR7转成R7的正确地址
*******************************************************
如果光是这样写的话是会报错的(Keil的A51和MetaLink的ASM51都会报错),编译器不会自动根据当前寄存器组把AR7转成R7的正确地址,编译器根本就不知道当前的寄存器组是哪个(目前的编译器还没做到这么的智能,能跟踪RS0/RS1的变化)。当前使用哪个的寄存器组还是要编程者给出来才行。
要改成这样才行:
    USING   X       ;X为当前使用的寄存器组。
    CJNE    A,AR7,F2
    ...

使用特权

评论回复
74
xwj| | 2008-8-20 09:37 | 只看该作者

呵呵,LS很细致,正解也.

发出去就发觉应该是“当前设定的寄存器组”
漏字了,但有懒得改了...


这么快就被细心的LS发现了:-)

使用特权

评论回复
75
sufeng983| | 2008-8-20 10:07 | 只看该作者

。。。。。。。

    “wxj1952之所以得不到人的尊重......”哈哈,年轻人本来就是反叛的,我就是要和你不一样!他们要谁的尊重?如果有人尊重我,我会很难受耶。---有人尊重你,你会很难受,兵器谱第一---剑

以前看贴很少回帖,这个让我想起了倚天剑。
LZ做人确实非常嚣张。

使用特权

评论回复
76
将军令| | 2008-8-20 13:21 | 只看该作者

能解几个题的未必是高手!

使用特权

评论回复
77
wxj1952|  楼主 | 2008-8-20 14:46 | 只看该作者

回66楼icmap.

“谁说Keil不用JZ?胡说!”
***********************************************************
真对不起。
看来我的帖子是经常有些“严重语病”.总有人可以挑出问题。没关系,我可以无数次解释并修正,来弥补我“语意不清,逻辑混乱”的毛病。

我说的“KEIL就不用JZ指令.”是说Keil在“使用 SUBB 指令来完成 比较2个数小于/大于/等于时,从不像你那样使用JZ 语句。”
如果你能找出一个例子,此贴你是优胜者,光说空话无用,诺言是我公司会给你奖励。
目前主要是版主不同意这种方式,其实我相信各位都支持我把奖金先放在21IC那,请21IC做中间人,“有偿求助”不好吗?免得那么多人污染论坛风气。总挑出题人的错。把奖金拿走是真本事。
    
    提醒66楼看一下你贴的JZ语句前2条是什么:
    MOV R7,A   
    MOV A,R7   ;无效指令?
    JZ  02A6

   这跟SUBB没关系,不在本题的讨论范围之内。
   不过还是敬佩你的认真,至少去做了。感谢。

    这大概已经成为规则了:SUBB之后连续的JC rel、JZ rel测试会产生你我都看到并承认的F1/F2/F3代码长度因指令使用方式不当而人为受限问题。因为跳转范围rel 只限于一页。
   
   67楼把这个问题改进了。非常感谢。他认为这是一个需要解决/也有办法解决的问题。
    29 楼也说过,这个问题编译器会报警,问题是:报警之后怎么处理?假设现在F1+F2,或者F2+F3或者F1+F3的代码长度都大于250字节。

    如果到此为止,除了67楼的方法就没别的了。我们也只好承认“就写程序而言,......是数量级的差别”这种差距,没什么好骂的了。

     

使用特权

评论回复
78
wxj1952|  楼主 | 2008-8-20 15:05 | 只看该作者

算了,别做了。

提示:
        CLR     C
        SUBB    A,R7
        JC      rel
是书上教我们的。
****************************************
  JNC rel   ;行不行?
  SETB  C   ;行不行?

CLR C/SETB C 和 JC/JNC 组合可以有4种不同的使用方法,书上不过只说了一种方法。

SUBB:  (A)<——(A)-(C)-(direct)


  没事,菜鸟自娱其乐而已。
 整天愁眉苦脸的年长者有时间何不寻点开心的事做?自己也张扬、狂一把,保证没人指责你嚣张。

使用特权

评论回复
79
wxj1952|  楼主 | 2008-8-20 15:20 | 只看该作者

马上看出谁是中年人。他们有被尊重的“心理需要”

134楼的帖子最终满足了各位中年高手的“心理需要”,多位前辈终于心里感到释然。

使用特权

评论回复
80
wxj1952|  楼主 | 2008-8-20 16:01 | 只看该作者

此前不好说的一件事。

我是做业务的,可别老跟我谈深奥的 JZ 问题。
不过我做业务的经历中,时常能看到一些自称高手的明白人现场露怯,窘迫的样子很好笑。
比如前几日那场通信项目招标会,你家高手被人拒之门外的事:
提醒一下老总说的话:“CAN?要是CAN能行我还用找他?”

你家主子说别人HDLC太古老,装明白人推荐别人用CAN。结果不懂装懂沦为笑谈。

CAN总线为什么不行?高手大概又一个没想到。

标书 以375Kbps 在RS-485上跑HDLC帧 理论上传输距离800米(自己证明) 。

请问:同样环境条件下,CAN总线2端节点最远传输距离多少米?(自己证明过吗?)

所以,人应该有自知之明,自己没做过的技术,就拿来装相。“我新技术,你们老家伙都不懂。”结果好像显得比通信技术研究所一帮专业的技术人才还高明。露怯了自己还不知道,被人开了还莫名其妙。“为什么不能用?为什么不用!”

能不能用自己回去证明一下。(看看别人为什么开你。)可别光知道一个 JZ 就以为“见证高手”了。

当然,高手又要开始表演了,他们不说“不懂”,他们说“不屑”。
这种高手,是不是有点Q。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则