汇编语言与软件问题

为什么11H给P1.0赋值时,P1口的值会变,而11H给P1.1时,P1口的值就是默认值FF... 为什么11H给P1.0赋值时,P1口的值会变,而11H给P1.1时,P1口的值就是默认值FF 展开
 我来答
lycdl
高粉答主

2015-09-23 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4884万
展开全部
昨天就看到这个提问了,记得就是你提问的。都已经采纳了,怎么又来提问呢?
你这一行指令就写错了,那编译的结果就是错的。
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来编译,就会指出你的程序是错误的。
不要用错误的指令来写程序,由于软件的缺陷偶尔得到一点好象是对的结果,就拿错误的指令来说事,用错误的结果来提问,这能证明什么呢?用郭冬临的小品说:用谎言验证谎言,得到结论一定是谎言。
改一下就是:用错误来验证错误,得到的结论一定是错误。
追问

昨天那个只注意了是软件的问题,就没有深入了解,以前也没有看过HEX文件,没有注意到这个。我试着看一下HEX文件。

还有KEIL C51的那个软件,本身命令不对的,也给编译过了。具体问题在截图里!

追答
你这个人真的是太无聊了,为什么喜欢用错误的东西验证错误呢。你就会写错误的程序吗,就不会写点正经的东西吗?这有什么意思吗,别人都在学习有用的知识,你却在那恶搞!
这么写的目的是什么?是来测试软件的BUG吗?给你多少钱?
你还是先学习点最基础的知识再来提问,连最基础的东西都搞不明白,就瞎写一通。以你的错误观点来说事,太可笑了。
首先,你那三行指令都是错误,而且其中的数都是一个位,根本就不存在什么2个字节,你这单片机是跟谁学的,什么叫2个字节?就算不是一个位,也只是1个字节,哪来的2个字节?

让你用keil来编译,还是用汇编写程序,会查出你的错误。
而对于C语言,因为,它的语法并不十分严密,你的那三行指令并没有严格地按语法来检验。但不能因为编译通过了,就来说你的程序是对,有点掩耳盗铃吧!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式