找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3972|回复: 0
收起左侧

Keil uVision3 奇怪的问题

[复制链接]
ID:7485 发表于 2013-4-15 20:57 | 显示全部楼层 |阅读模式

我使用的是 Keil uVision3,真是让人又爱、让人又气!时不时遇到一些莫名其妙的问题。

 这不,今天又遇到一次。 本来就下面一句:

 Write_word(0,4,169+TIANGAN);

鼠标指在“TIANGAN”上,显示=9,加上169(0xa9)应该等于0xb2。可结果一看却是0xae

下面是编译器给出的对应的汇编:

 //--------------------------------------------------------------------------

58: }

59: Write_word(0,4,169+TIANGAN);

 

 C:0x2966 E51D   MOV A,DIZHI(0x1D) //这一句应该汇编成“MOV A,TIANGAN(0x1C), DIZHI 是下一个地址(0x1D)的内容,内容是0x05,加上169=0xae

C:0x2968 24A9    ADD A,#0xA9

C:0x296A FB        MOV R3,A

C:0x296B 7D04    MOV R5,#0x04

C:0x296D E4        CLR A

C:0x296E FF         MOV R7,A

C:0x296F 022B2C LJMP Write_word(C:2B2C)

//**************************************************

无奈改成这样试一试:

结果仍然是错的:

62: j=TIANGAN+169;

63: Write_word(0,4,j);

汇编的结果如下:

62: j=TIANGAN+169;

C:0x2966 E51D     MOV A,DIZHI(0x1D)   //这一句应该汇编成“MOV A,TIANGAN(0x1C), DIZHI 是下一个地址(0x1D)的内容,内容是0x05

C:0x2968 24A9     ADD A,#0xA9

C:0x296A F525      MOV 0x25,A

 

63: Write_word(0,4,j);

C:0x296C FB         MOV R3,A

C:0x296D 7D04     MOV R5,#0x04

C:0x296F E4         CLR A

C:0x2970 FF          MOV R7,A

C:0x2971 022B2E  LJMP Write_word(C:2B2E)

//**************************************************

 最后改成这样,终于正确了。

59 uu=&TIANGAN;

60 j=*uu+169;

61 Write_word(0,4,j);

上面三句汇编的结果:

59: uu=&TIANGAN;

C:0x2966 781C     MOV R0,#TIANGAN(0x1C)

 

60: j=*uu+169;

C:0x2968 E6         MOV A,@R0

C:0x2969 24A9     ADD A,#0xA9

C:0x296B F525     MOV 0x25,A

 

61: Write_word(0,4,j); 

C:0x296D FB         MOV R3,A

C:0x296E 7D04     MOV R5,#0x04

C:0x2970 E4         CLR A

C:0x2971 FF         MOV R7,A

C:0x2972 022B2F LJMP Write_word(C:2B2F)

 

不知道各位高手遇到过这种情况没有?如遇到过又是怎样处理的?

[此贴子已经被作者于2013-4-15 21:07:15编辑过]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表