- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
atm32u4程序改写
atm32u4程序改写
篇一:程序改写自己
程序删除自己改写自己
有这样一个问题:让程序本身能限制它的运行次数,比如只能运行10次。
目前使用的方法大都是通过读取和改写外部文件的数据来判断运行的次数,比如增加配置文件(.inf),读写系统注册表,或增加其它类似文件。也就是说,程序运行要依靠外部数据来判断运行次数。
有没有不依靠外部数据的呢。。。
有这样想法:程中文件本身有一个数据10,当这个程序结束时,把这个10变成其它数,比如9,当下次运行的时候取读9,运行结束时再把9变成8,依此下去。。。这样就能通过这个数字的变化来控制程序运行次数。
大家都知道一个windows应用程序在运程中,所占用的程序文件是不能常规删除和改写的。这就是说,程序在磁盘上的文件里面的这个“10”不能在运行时改写,文件被系统写保护了(可以读取)。
现在请做这样一件事:新建一个文本文件A.txt,然后在里面写入del %0,保存之后把A.txt文件后缀后改掉,变成A.bat。del %0的意思删除文件本身。这样就建成了一个批处理文件,双击它就能运行了。双击它之后A.bat文件没了!(至于为啥windows程序不能删除自己,bat批处理文件可以删除自己,我也说不清楚,我对cmd没深入了解)
于是想出了一个办法:(假设主程序为hello.exe)
1、 程序hello.exe复制自己,复制的文件为temp.exe
2、 hello.exe改写temp.exe里面的数据“10”为“9”
3、 hello.exe先建立temp.bat文件,调用temp.bat文件后退出
4、 temp.bat先删除hello.exe,再将temp.exe改名为hello.exe,后最删除自已
经过上以4步后,从用户角度讲,hello.exe文件没变,但是它能“不依靠外部数据”判断自身运行次数。(程序自己间接改写了自己,这个用处大哦)
以下是我的程序源文件,思路就是上面的4步。
我用的环境是dev-c++,win8系统,能够正常编译执行。(直接copy回去研究吧,呵呵)
源程序如下:
篇二:程序分析及改写程序答案
1、
Process(a)
Begin
Case a is
WHEN quot;0001quot;=gt;ylt;=”00”;
WHEN quot;0010quot;=gt;ylt;=”01”;
WHEN quot;0100quot;=gt;ylt;=”10”;
WHEN quot;1000quot;=gt;ylt;=”11”;
WHEN OTHERS=gt;ylt;=”zz”;
End case;
End process;
2、
ylt;=”00” when p(0)=’1’ else
“01” when p(1)=’1’ else
“10” when p(2)=’1’ else
“11” when p(3)=’1’ else
“ZZ”;
3、
实现的功能:串行输入、串行输出4位移位寄存器
篇三:程序分析及改写程序
1、如下是一个4-2编码器的vhdl描述,其真值表如图所示。试用case语句代
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY encoder IS
PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
Y: OUT STD_LOGIC_VECTOR(1 DOWNTO 0));
END encider;
BEGIN With A select ylt;= “00” WHEN quot;0001quot;, “01” WHEN quot;0010quot;,
“10” WHEN quot;0100quot;,
“11” WHEN quot;1000quot;, “ZZ” WHEN OTHERS; END aa;
2、如下是一个优先编码器的vhdl描述,,其真值表如图所示。其中P(
0)优先级最高,P(3)优先级最低。试用一条合适的并发描述语句完成该功能描述。 library ieee; use ieee.std_logic_1164.all; entity encoder is port(p:in std_logic_vector(0 to 3);y:out std_logic_vector ( 0 to 1) ); end encoder; architecture rtl of encoder is
beginelsif (P(3)=’1’) then ylt;=”11”; process(P)else ylt;=”ZZ”;
beginend if;
if
文档评论(0)