打印

请教51汇编子程序 问题(汇编很吃力啊)

[复制链接]
5043|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Periodic|  楼主 | 2012-2-24 17:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Periodic 于 2012-2-25 08:16 编辑

MOV  R7,41H   
MOV  R6,40H   
MOV  R5,#0AH   
LCALL  FUN_1   
MOV  43H,R6   
MOV  44H,R7   
;=================子程序====================================================
FUN_1:
         SETB  C   
         MOV  R3,#00H   
         MOV  R4,#11H     ;左移R7  R6 11位
LOOP1:
         CPL  C   
         MOV  A,R7  
         RLC  A   
         MOV  R7,A   
         MOV  A,R6   
         RLC  A   
         MOV  R6,A   
         MOV  A,R3   
         RLC  A   
         MOV  R3,A              ;R3<-R6<-R7
         DJNZ  R4,LOOP2     ;R4-1!=0转移
         RRC  A   
         MOV  10H,A  
         RET
;------------------------------------------------      
LOOP2:
         JC  LOOP3   
         SUBB  A,R5        ;A= A-10
         JC  LOOP1   
         MOV  R3,A  
         SJMP  LOOP1
LOOP3:
         CLR  C   
         SUBB  A,R5   ;A= A-10
         CLR  C   
         MOV  R3,A  
         SJMP  LOOP1  
;========================================

相关帖子

沙发
xxdcq| | 2012-2-24 17:37 | 只看该作者
什么问题?
这好像是一个双字节除以单字节的除法子程序

使用特权

评论回复
板凳
NE5532| | 2012-2-24 20:03 | 只看该作者
你们单位写汇编程序不写注释?

使用特权

评论回复
地板
Periodic|  楼主 | 2012-2-25 08:11 | 只看该作者
小地方啊! 是前人写的,

使用特权

评论回复
5
Periodic|  楼主 | 2012-2-25 08:15 | 只看该作者
我自己看 相类似  Q格式转换   一个双字节左移动程序

使用特权

评论回复
6
chenczy| | 2012-2-25 09:40 | 只看该作者
有什么问题啊?不会叫人帮你分释程序吧?(先说明我还没看程序)

使用特权

评论回复
7
刘前辈| | 2012-2-25 12:25 | 只看该作者
LZ不必分析了,这是C51程序编译结果。根本不是前任自己写的汇编。—— 一般人都用这种方式保护程序。C51 源程序自己拿走不提供,给个汇编谎称源代码。

看得懂硬件图纸,要求什么功能自己写一个C程序是很简单的事。—— 如此保护知识产权太小儿科了。后人重新写的一定比前任更好。


、、

使用特权

评论回复
8
Periodic|  楼主 | 2012-2-25 12:49 | 只看该作者
C51编译的?

使用特权

评论回复
9
Periodic|  楼主 | 2012-2-25 12:50 | 只看该作者
怎么看出来的 啊!

使用特权

评论回复
10
刘前辈| | 2012-2-25 14:15 | 只看该作者
MOV  R7,41H   
MOV  R6,40H   
MOV  R5,#0AH   
LCALL  FUN_1   

呵呵,这是C51和A51之间的通信协议,R6/R7,R5 明显是C51函数 FUN1(int, uchar)的编译结果; 如若用汇编语言写程序可不需要这么规范的。


、、

使用特权

评论回复
11
Periodic|  楼主 | 2012-2-25 14:22 | 只看该作者
原来如此  LZ不愧号称 前辈 51古董级别的东西了,我是回过头来学汇编 工作需要:L

使用特权

评论回复
12
Periodic|  楼主 | 2012-2-25 14:25 | 只看该作者
不过这个程序 还是需要 看的   前人 的东西 也许值得学习  要不然前人怎么 那么保密 哈哈 关键是 算法

使用特权

评论回复
13
Periodic|  楼主 | 2012-2-25 14:26 | 只看该作者
这个51实现 了 现在那些用DSP实现 的功能,感觉这个程序 值得一读。

使用特权

评论回复
14
Periodic|  楼主 | 2012-2-25 14:30 | 只看该作者
还有个问题 请教刘前辈  能不能看出 用的什么 开发 环境啊????

使用特权

评论回复
15
Periodic|  楼主 | 2012-2-25 14:30 | 只看该作者
KEIL  还是 IAR?还是。。。。。

使用特权

评论回复
16
刘前辈| | 2012-2-25 15:57 | 只看该作者
本帖最后由 刘前辈 于 2012-2-25 16:36 编辑

典型的Keil  C51。用uV2环境。

     前任用C51写的,LZ去分析编译结果代码?——那您最好先学过《编译原理》。像小I 现在正在学的那样,小I 是计算机软件专业毕业的,刚毕业就在北大方正干过。

         LZ若是计算机软件毕业,学过《编译原理》的,不会来干单片机控制吧?还是做软件银子多,轻易10K。问问小I ,北大方正一个月拿多少?

         干单片机这行,人太多了。中专生都不少。“物以博为贱”了。

       不过,向高发展,人才很稀,例如单片机联网技术——现场总线。都要求硕士、博士毕业的,一堆硕博20年也没看做出什么……仍然招聘,课题启动基金20W……


、、



、、

使用特权

评论回复
17
Periodic|  楼主 | 2012-2-25 16:11 | 只看该作者
本帖最后由 Periodic 于 2012-2-25 16:12 编辑

再请教下 是如何看出来的 :handshake

使用特权

评论回复
18
刘前辈| | 2012-2-25 16:25 | 只看该作者
请看一下
徐爱钧,彭秀华写的《Keil  Cx51 V7.0单片机高级语言编程与uVision2应用实践》

& 9.7 Cx51编译器与汇编语言程序的接口

我这有电子版,等下贴一节出来。


、、

使用特权

评论回复
19
刘前辈| | 2012-2-25 16:31 | 只看该作者
本帖最后由 刘前辈 于 2012-2-25 16:47 编辑

还有一个很简单的实验,写一个虚拟空函数:
说明 void FUN_1(int,char);

定义 void  FUN_1 ( int  val,  char   num )
{
code……
   }

调用  FUN_1(0x4041,10);

编译一下,看看结果是不是:
MOV  R7,41H   
MOV  R6,40H   
MOV  R5,#0AH   
LCALL  FUN_1   


肯定一样!


//

使用特权

评论回复
20
Periodic|  楼主 | 2012-2-25 19:49 | 只看该作者
以前学三星2440 的时候  学过编译原理!  明白了  就是前任把  C代码的反汇编留下了。
那我就把 汇编 变成C吧!:L

使用特权

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

本版积分规则

1

主题

670

帖子

2

粉丝