晕啊!!!
发请求帮助的帖子不到10分钟,自己再看了一下程序,稍微修改了一下(把其中的与 & 改成或 | ):
if ((rGPFDAT&0x20)==0) Bufkey |= Key_0; // 如果以输入口线为低,则置位相应的按钮标志位
if ((rGPFDAT&0x40)==0) Bufkey |= Key_1;
if ((rGPFDAT&0x80)==0) Bufkey |= Key_2;
......
汇编后竟成了
[0xe51f008c] ldr r0,0x30004264 ; = #0x31001634
[0xe3a01000] mov r1,#0
[0xe5801040] str r1,[r0,#0x40]
[0xe3a02456] mov r2,#0x56000000
[0xe5921054] ldr r1,[r2,#0x54]
[0xe38110fd] orr r1,r1,#0xfd
[0xe5821054] str r1,[r2,#0x54]
[0xe5921054] ldr r1,[r2,#0x54]
[0xe3110020] tst r1,#0x20
[0x1a000001] bne 0x30004318 ; (ReadKey + 0x30)
[0xe3a01001] mov r1,#1
[0xe5801040] str r1,[r0,#0x40]
[0xe5921054] ldr r1,[r2,#0x54]
[0xe3110040] tst r1,#0x40
[0x1a000002] bne 0x30004330 ; (ReadKey + 0x48)
[0xe5901040] ldr r1,[r0,#0x40]
[0xe3811002] orr r1,r1,#2
[0xe5801040] str r1,[r0,#0x40]
[0xe5921054] ldr r1,[r2,#0x54]
[0xe3110080] tst r1,#0x80
[0x1a000002] bne 0x30004348 ; (ReadKey + 0x60)
程序这样就对了。
这差别也太大了点。看来我的C语言水平太差了(也许C编译器太聪明了),还是汇编程序熟悉一点。
有待努力提高C语言水平。
对了,顺便问一下各位,怎样删除自己的帖子或修改帖子。毕竟才发的帖子。
|