打印

大侠帮忙看一下这个程序为啥不能编译

[复制链接]
2052|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
中华神盾|  楼主 | 2007-2-21 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 ORG        0000H
           LJMP        MAIN
           ORG        O30H

   MAIN:   MOV        P0,#00H
           MOV        P1,#OOH
           MOV        P2,#OOH
           MOV        P3,#00H
           ACALL    DEL
           MOV          P0,#OFFH
           MOV          P1,#0FFH
           MOV        P2,#0FFH
           MOV        P3,#OFFH
           ACALL        DEL
           AJMP         MAIN
           ORG          0200H
   DEL:    MOV        R5,#O4H
   F3:     MOV          R6,#OFFH
   F2:     MOV        R7,#OFFH
   F1:     DJNZ        R7,F1
           DJNZ         R6,F2
           DJNZ         R5,F3
           RET
           END    

相关帖子

沙发
AA_55| | 2007-2-21 20:18 | 只看该作者

先把什么是编译,什么是汇编搞清楚再说


有把汇编语言源代码变成目标代码的过程叫做编译的吗?

这说明楼主根本不知道什么是编译,什么是汇编。这也说明楼主关于编程的基本知识很不扎实,先打好基础,多看看书本再说。

使用特权

评论回复
板凳
平常人| | 2007-2-21 22:40 | 只看该作者

2楼的不一定非要咬文嚼字,但更关键的是,楼主要多给一些

你怎么做的?你的编译(汇编)程序报的什么错?在哪里报错?

使用特权

评论回复
地板
AA_55| | 2007-2-21 22:56 | 只看该作者

这个不是咬文嚼字

一个专业人士,对概念的理解、掌握程度,说明他的专业水平和专业素养。衡量一个专业人员的专业水平,一个很重要的方面,就是考察他的专业领域内掌握的概念的数量和对这些概念的理解程度。

如果一个专业人员,对"编译"和"汇编"都分不清,他怎么能有效地使用编译器或者汇编器呢?没准都搞不清什么是编译器,什么是汇编器。我还真见过分不清编辑器和编译器的。因为他们脑子里面就没有建立正确的知识体系。这个基本知识都没有,能找到汇编错误原因么(这个例子明显就是汇编语言的源代码)?没准把汇编当成编译了,更没准拿编译器来编译汇编语言代码了。方向都错了,这不是缘木求鱼嘛。

使用特权

评论回复
5
hotpower| | 2007-2-22 01:01 | 只看该作者

F0/F1应该不能做标号吧~~~

使用特权

评论回复
6
maxking| | 2007-2-22 02:38 | 只看该作者

用WAVE编译通过!

楼主注意红色部分是立即数。我复制过来这些是不会变红的,删除重新输入才行,不然会出现错误提示。不知什么原因。

使用特权

评论回复
7
平常人| | 2007-2-22 10:42 | 只看该作者

“不然会出现错误提示”,为什么都没有看错误提示的习惯

往往在编译结束给出的错误提示都明确地指出了错在哪里、什么类型的错误,根据错误提示可以很容易地找到错误并纠正。

建议还是多在这里下点功夫,若是有不会的英文词汇,查查字典,下次就记住了,这样可以大大地提高你的工作效率。

使用特权

评论回复
8
maxking| | 2007-2-22 20:51 | 只看该作者

有看啊,

就是数据错误。

使用特权

评论回复
9
bg6nw| | 2007-2-22 21:08 | 只看该作者

我也遇到过类似情况

刚学单片机那会,连编译器都没用过,从网上拷贝了一段小程序,却无论如何也不能编译通过,搞得是一头雾水,最后总结出来一个结果,这玩意太难学了。
但是我最终还是入门了。
实际上这都是某些懂单片机的给新手设置的门槛,人为的。。
就像上面这一段小程序吧,怎么看都是没问题的,你把它粘贴到WORD文档里面一眼就可以看出来有问题了,原来里面有很多的【零】被置换成了英文的【欧】,在半角情况下的【零】和【欧】是看不出来区别的,所以就会编译时报错不通过。
还有其他的手段,比如两个半角空格换成一个半角空格,这些都很难查出来,新手们往往很迷惑,比如我。。
有一个很好的办法,照着这一段程序自己重新输入一遍,还能练练手,还不会被别人忽悠,多好。

使用特权

评论回复
10
3ax81| | 2007-2-23 09:40 | 只看该作者

2楼比较典型的夫子

将汇编语言翻译成机器语言当然也可以叫编译,汇编语音编译器,汇编语音汇编器,争这个?

使用特权

评论回复
11
maychang| | 2007-2-23 09:56 | 只看该作者

楼主确实没有好好看汇编后结果

无论哪种汇编器,发现错误后一定会报告,是在哪一行,发生了什么类型的错误。
连这些都不看,更不动脑想想,立刻贴上来问是怎么回事,这是很不好的习惯,至少不利于今后的学习。

使用特权

评论回复
12
hotpower| | 2007-2-23 10:29 | 只看该作者

倒塌了~~~0O0Oo0o0...色分吧~~~

使用特权

评论回复
13
hotpower| | 2007-2-23 10:33 | 只看该作者

Keil还是好色的~~~

使用特权

评论回复
14
AA_55| | 2007-2-23 11:44 | 只看该作者

技术术语的准确运用是一个合格技术人员的基本素养

先说说编译和汇编的区别。

为什么会把高级语言代码转换成目标机器码叫做编译,把汇编语言代码转换成目标机器码叫做汇编呢?因为高级语言是在更高的抽象层次描述程序逻辑过程的,没有直接对应的机器码,所以在转换成机器码时候,除了要编(就是整理的意思),更重要的是要"翻译",把两种不直接的代码翻译过来,所以才叫做编译。

而汇编语言代码是直接对应机器码的,不需要翻译,汇总、整理一下就可以直接转换成目标代码了,所以这个叫做汇编。

翻译需要很多复杂的代码分析、优化、生成技术的,所以才有专门的"编译原理"技术(学计算机的人都该学过这门课),而汇编则简单的多,不需要专门的课程教学。

很多编译器都是先析、优化源代码,然后生成中间的汇编语言代码,最后调用汇编器汇编成目标代码的,汇编器则没有这个反过来调用编译器的机制。在技术上,汇编器是底层的,而编译器则是在更高的抽象层的,它们的差异还是很大的,而且区分非常明显。

有人之所以认为这个称呼差异无所谓,其实原因就是自己没有搞清楚这两种生成目标代码方法的异同,所以才会混淆。


这两种事情有这么大的区别,不需要弄懂吗?如果这个区别都搞不懂,还是技术不过关,怎么能好好地从事技术工作呢。准确运用技术术语,不是什么文字上的游戏,而是对技术概念的准确把握,是能够看出来一个技术人员是不是真的理解了一项技术的实质了。

使用特权

评论回复
15
bg6nw| | 2007-2-23 19:53 | 只看该作者

唉,人和人不能比

坛子里,大家的水平真真是天上地下,高到可以著书立说,低到连普通三极管也掰不清腿,呵呵,大家多包涵,一团和气最好
像楼主这水平遇到这样的问题,不来坛子里问问,还真不好弄,这个我理解

使用特权

评论回复
16
平常人| | 2007-2-23 23:02 | 只看该作者

Assembler is used to compile assembly code and compiler is used to ....

Compiler is used to compile C code or other languages. The software used to compile Assembly language is called assembler.

15楼说的是对的,但对于初学者来说简单点为好,不一定非要学术上正确;就像读《红楼梦》一样,不一定非要是红学家才能谈红楼,谁都可以谈,只要不是歪曲,理解正确即可。

使用特权

评论回复
17
maxking| | 2007-2-24 16:05 | 只看该作者

正确答案应该是bg6nw所说的。

另外,汇编和编译我认为理解就好。不需要死扣字面。

使用特权

评论回复
18
AA_55| | 2007-2-24 16:55 | 只看该作者

还在讨论啊?

严谨认真是技术人员的基本要求,我不认为一个希里马哈、基本术语都搞不清、用不准的人能做出高水平的设计。如果招聘人,一个分不清编译和汇编的人大家敢给他委以重任吗?

看似一个小小的术语运用,反映了一个人做事情的认真程度和专业水准。
如果一个外包项目的承包工程师到你这里交工,拿出些汇编语言代码段,一口一个"编译"而浑然不知错误,大家敢收下这些代码,签字付款吗?反正我是肯定拒绝接收的。

因为我就碰上过这类人,满口术语乱用,显得很浮躁(这人刚刚考上了博士研究生),还自认为程序编得不错。结果拿到最终用户那里试用错误百出,打回去修改几次都通不过。其实只要踏下心了,认真做一下分析、修改测试一下就好了,但是这工程师就是不肯,总想辩解,偏偏辩解时候用的术语还不对(因为他自己就没有理解这些术语)。

后来这家公司也自知无趣,慢慢地就不再联系了,最终我们也没有付款给他,这是2004年发生的事情。如果我当时不对他乱用术语表现出的浮躁保持了警惕,贸然签字通过,那最终倒霉的是我以及我供职的公司。

使用特权

评论回复
19
wenbinjj| | 2007-2-24 23:45 | 只看该作者

又学到了

虽然知道汇编和编译
但却也没怎么专门研究过
学习了

使用特权

评论回复
20
likee| | 2007-2-25 01:26 | 只看该作者

学习!!!

使用特权

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

本版积分规则

4

主题

6

帖子

0

粉丝