汇编语言与软件问题
1个回答
展开全部
昨天就看到这个提问了,记得就是你提问的。都已经采纳了,怎么又来提问呢?
你这一行指令就写错了,那编译的结果就是错的。
P1.1本是一个位,怎么可能赋值为8位数11H呢,只能用SETB P1.1置1 ,CLR P1.1清0。
而你说改成MOV P1.0,#11H,P1口的值就对的。这是因为编译器软件存在BUG,没有识别出你的指令的错误,也给编译了,看编译后的HEX代码文件就知道,它是按MOV P1,#11H编译的。 而MOV P1.1,#11H,是按MOV 91H,#11H编译的,所以结果就不对了。
如果你用keilc来编译,就会指出你的程序是错误的。
不要用错误的指令来写程序,由于软件的缺陷偶尔得到一点好象是对的结果,就拿错误的指令来说事,用错误的结果来提问,这能证明什么呢?用郭冬临的小品说:用谎言验证谎言,得到结论一定是谎言。
改一下就是:用错误来验证错误,得到的结论一定是错误。
你这一行指令就写错了,那编译的结果就是错的。
P1.1本是一个位,怎么可能赋值为8位数11H呢,只能用SETB P1.1置1 ,CLR P1.1清0。
而你说改成MOV P1.0,#11H,P1口的值就对的。这是因为编译器软件存在BUG,没有识别出你的指令的错误,也给编译了,看编译后的HEX代码文件就知道,它是按MOV P1,#11H编译的。 而MOV P1.1,#11H,是按MOV 91H,#11H编译的,所以结果就不对了。
如果你用keilc来编译,就会指出你的程序是错误的。
不要用错误的指令来写程序,由于软件的缺陷偶尔得到一点好象是对的结果,就拿错误的指令来说事,用错误的结果来提问,这能证明什么呢?用郭冬临的小品说:用谎言验证谎言,得到结论一定是谎言。
改一下就是:用错误来验证错误,得到的结论一定是错误。
追答
你这个人真的是太无聊了,为什么喜欢用错误的东西验证错误呢。你就会写错误的程序吗,就不会写点正经的东西吗?这有什么意思吗,别人都在学习有用的知识,你却在那恶搞!
这么写的目的是什么?是来测试软件的BUG吗?给你多少钱?
你还是先学习点最基础的知识再来提问,连最基础的东西都搞不明白,就瞎写一通。以你的错误观点来说事,太可笑了。
首先,你那三行指令都是错误,而且其中的数都是一个位,根本就不存在什么2个字节,你这单片机是跟谁学的,什么叫2个字节?就算不是一个位,也只是1个字节,哪来的2个字节?
让你用keil来编译,还是用汇编写程序,会查出你的错误。
而对于C语言,因为,它的语法并不十分严密,你的那三行指令并没有严格地按语法来检验。但不能因为编译通过了,就来说你的程序是对,有点掩耳盗铃吧!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询