keil真傻,cjne a,#10,$+1 居然不报错

[复制链接]
 楼主| bg6nw 发表于 2009-2-22 08:32 | 显示全部楼层 |阅读模式
org 0h
mov a,#11
cjne a,#10,$+1
nop
ljmp loop
nop
nop
loop:ljmp $
end

原以为$+ 只能大于等于3,结果还能反卷呢,呵呵,一运行,
把 cjne a,#10,$+1 这一句给拆分了
hotpower 发表于 2009-2-22 08:40 | 显示全部楼层

正向者为$+3,逆向者想$+1或$+2,都属合法之用,Keil无罪~~~

chunk 发表于 2009-2-22 12:05 | 显示全部楼层

你知道这样不行就可以了

KEIL的开发者想的是“象这种问题还要我给你个警告吗?”所以他不给你报什么错。更何况人家的C编译器不会产生这种东西。汇编器更多的时候是做为C编译器到机器码之间的“后端”用的。
xwj 发表于 2009-2-22 13:37 | 显示全部楼层

汇编不可能做太多的分析,比如覆盖分析

否则你很多的汇编技巧都会没法玩了

而且人家的C编译器根本就不会产生这种东西
HWM 发表于 2009-2-22 14:00 | 显示全部楼层

ASM一般比较忠实于你的想法,包括你的错误或异想天开

学生D 发表于 2009-2-23 14:00 | 显示全部楼层

没错呀。

     3: cjne a,#10,$+1 
C:0x0002    B40AFE   CJNE     A,#0x0A,C:0003
     4: nop 
C:0x0005    00       NOP      
     5: ljmp loop 


$: 用来表示当前指令地址,当然就是0x0002, $+!是0x0003,这不正是你的意思?编译器做的十分聪明正确!

要是报错了才傻呢。
gtw 发表于 2009-2-23 20:00 | 显示全部楼层

呵呵

汇编器可不是变形金刚,今天你喜欢汽车他就编程汽车,明天你喜欢飞机就变成飞机。
刘前辈 发表于 2009-2-23 20:22 | 显示全部楼层

keil可是一个人名!

就好象你说比尔盖茨真...一样,小心别人告你侮辱人...权。

keil带的51ASM汇编程序是Intel的版权,LZ无异于又是在说“Intel真傻”。


中国人总给人留下不好的印象。

说别人傻,是不是就显得自己聪明了?
HotC51 发表于 2009-2-23 21:52 | 显示全部楼层

请参见:HotC51共产儿童团第四课:歪门邪道搞破坏

    当然非典型应用是要付出代价的,但只要严格遵守"非典型应用操作规范",那么
“可恶的非典”就能造福与其应用,并能达到奇妙之效果。

    重申:“非典”绝非“技巧”,也不能等同看待,因为本不是一个“数量级的产物”。



团长以后会陆续地散播些流毒给大家~~~

如:
   mov a,#250
   djnz b,$+4;//b<>0执行nop,b==0,执行a=0;
   mov a,#0

课毕。

团长放毒结束要去“吸毒”了~~~

HotC51@126.com   2009.2.23 于菜地。
团部:http://group.**/1623/

相关链接:https://bbs.21ic.com/club/bbs/list.asp?boardid=68&page=1&t=3241150
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

511

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部