打印

一段有趣的 C51 代码~~~

[复制链接]
2167|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ETUAL|  楼主 | 2007-8-16 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天逛blog发现的一段比较有趣的代码,可能比较老的了,分享一下吧~~~hoho~~ 有兴趣的朋友看看~~拍拍砖~~

代码如下,实现的功能是软复位,提示,copy过去keil,编译后运行,然后用反汇编窗口看一下生成的代码是啥,想想就知道的了,哈~~~
我觉得这个程序段很好,很好的诠释了一些基本的概念,但是不是很被人在意的概念。
数组名的本质,函数名的本质,指针的本质,执行子程序的时候PC和堆栈究竟做了些什么工作,函数指针怎么用,怎么用实际的内存地址来做指针变量。数组里面的数据的本质是什么?跟代码有啥不同?(将数组里面的数据当代码用 ....... ) 另外,这里用到的一些基本技巧是 DOS 病毒上面也会用的~~~所以原blog称他为病毒了 ,囧

main()

{

   unsigned char code rst[]={0xe4,0xc0,0xe0,0xc0,0xe0,0x32};  // 复位代码

   (*((void (*)())(rst)))();  // 执行上一行代码,将rst数组当函数调用

}


想了半天想不出来,或者想出来想对对答案的:
http://www.roboticfan.com/blog/user_2005/11202/archives/2007/2007612224342.shtml
(这不是我的blog,只是偶尔逛过看到而已, 所以没有广告成分....)

相关帖子

沙发
xwj| | 2007-8-16 23:35 | 只看该作者

也没什么啊,N年前就倒塌过了

使用特权

评论回复
板凳
computer00| | 2007-8-17 00:17 | 只看该作者

理解了微机原理就会自己写了。

使用特权

评论回复
地板
ayb_ice| | 2007-8-17 07:28 | 只看该作者

指令的二进制编码而已....

使用特权

评论回复
5
etual| | 2007-8-17 10:41 | 只看该作者

无论怎么样

无论怎么样,我都觉得这段简单的代码背后蕴藏的东西是值得学习的。
象我等小鸟们一起共勉吧,HOHO~~~

使用特权

评论回复
6
zjf0000| | 2007-8-17 13:04 | 只看该作者

晕,有才!

ljmp 0  更直接

使用特权

评论回复
7
hyh0lh| | 2007-8-17 18:14 | 只看该作者

脑子好使~

使用特权

评论回复
8
fishingok| | 2007-8-17 18:54 | 只看该作者

re

楼主可以自己编了

使用特权

评论回复
9
kukucat| | 2007-8-19 10:24 | 只看该作者

不错,又能学到点东东~~~

使用特权

评论回复
10
ntao0227| | 2007-8-19 13:19 | 只看该作者

我很不明白

这更象是教材上的代码游戏。

使用特权

评论回复
11
gamethink| | 2007-8-19 14:13 | 只看该作者

有用吗

其实用处不大

使用特权

评论回复
12
dai_weis| | 2007-8-19 22:22 | 只看该作者

工作中把MCU给复位了?

那我还是采用硬件办法,一个IO通过三极管和一个电容电阻组成的RC或者外接芯片,一条指令,保证复位

使用特权

评论回复
13
yongzai| | 2011-5-8 11:48 | 只看该作者
看不懂

使用特权

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

本版积分规则

3

主题

192

帖子

2

粉丝