看看这段代码!

xiongzm 2002-02-25 03:15:32
我买了个文曲星,听说能编程。写了一个小程序,遇到了些麻烦,在金远见上的论坛上发了,什么人也没有,大家帮帮我吧。

帮我看看这段代码!
作者: xiongzm (211.159.83.---) 发表日期: 2002-02-22 23:02
看看下面的一段程序,我不太清楚汇编。是由于数据类型引起的错误吗?
main()
{
long int stau=1234567;
short int tristau,flag;
tristau=stau%10;
//if(tristau!=0) flag_zn=tristau;
stau=stau/10;
flag=(stau==0);
while(!flag) //while(stau)
{
tristau=stau%10;
{

;
}

flag=(stau==0);
stau=stau/10;
} //while
return 0;
}

test.asm(121) syntax error 3005:mod32 undefine symbol
test.asm(210) syntax error 3005:div32 undefine symbol
test.asm(294) syntax error 3005:cmp32 undefine symbol
test.asm(414) syntax error 3005:mod32 undefine symbol
test.asm(497) syntax error 3005:cmp32 undefine symbol
test.asm(601) syntax error 3005:div32 undefine symbol



回复此帖
Re: 帮我看看这段代码!
作者: xiongzm (211.99.82.---) 发表日期: 2002-02-23 09:11
我在TC下能把这段代码编译成功,能运行。其实上次遇到这个问题,当时不知怎么被我解决的,这次改动了程序后,忘了。不知怎样实现我的这个目的:把长整型数(如1234567)的每位分离出来。谢谢。


回复此帖
Re: 帮我看看这段代码!
作者: honestqiao (211.137.70.---) 发表日期: 2002-02-23 13:46
很简单啊,要分离出来,使用取整就可以了。
什么,还不清楚???
int(123/100)的多少啊???
是不是1啊?


回复此帖
Re: 帮我看看这段代码!
作者: xiongzm (211.99.84.---) 发表日期: 2002-02-23 22:54
honestqiao: 对,那样可以分离出来。但是问题不是出在那里,变量
stau不知道有几位,当然也可以分离出来,上面写的已经分离出来了。

问题关键的是那些出错信息,可能还是数据类型(或编译器)的问题。请
帮我在WinIDE中编译一下,是否是那些错误信息。
main()
{
long int stau=1234567;

stau=stau/10;

return 0;
}
编译同样通不过,在TC下能通过;而将long int 改为int 则能通过


回复此帖
Re: 帮我看看这段代码!
作者: honestqiao (211.137.70.---) 发表日期: 2002-02-24 22:14
这个我没有编译过。
不过有一点你要注意,就是嵌入式系统的编程,由于多半是8位子长的硬件系统,所以可能不支持长整型。
不过具体暂时我还不是很清楚。


回复此帖
Re: 帮我看看这段代码!
作者: xiongzm (211.159.89.---) 发表日期: 2002-02-25 01:28
honestqiao,谢谢了。应该能支持长整型,上次那个函数也是用的long int,编译通过了,
程序还在我的文曲星上运行了。再说WinIDE也能“识别”long int,和其他
关键字一样的颜色。现在我都不知道该怎么办了,编译就那么几条错误信息,
叫我怎么调试其他可能的bug.大家帮我找找原因,Thanks in advance!

还有的是WinIDE库函数使用说明中给出的示例程序有的也编译不过去,如
itoa() 函数的示例编译一样的是什么....ASM()等错误。金远见怎么没有
技术人员来看看WinIDE中的帖子?

...全文
49 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongzm 2002-02-26
  • 打赏
  • 举报
回复
我原来试过了,但不能通过
真的不知道什么原因。
pajun 2002-02-26
  • 打赏
  • 举报
回复
原因分析:
从错误信息来看是由于你的编译器不支持32位造成的。
对于C的编译器来说,它的编译过程是先把C源码转换成ASM,在由ASM编译器生成可执行的二进制码。显然你的问题是用到了长整型。这是个32位的数据类型。所以你的C编译器在翻译成汇编码时,将所有涉及到该长整型的操作都加了32的后缀。而你的汇编编译器不支持这种32位汇编。所以会出现这种错误。
解决办法:
我不太懂文曲星的编译环境。但可以猜测一下。你要解决的问题是要使编译器把你的32位数据用16位编译环境来实现,查看一下你编译器的选项,强制生成16位方式的汇编应该就可以解决你说的问题了。
xiongzm 2002-02-26
  • 打赏
  • 举报
回复
pajun:谢谢!
我回去想想。
真不知道那个WinIDE怎么的,应该是你说的那样的问题。但是上次我也用的是long int也是出问题,好象是把那个长整型的赋一个整型变量,变换了几次就通过了,当我把这个修改去掉时问题任然存在,因此一开始我就怀疑是数据类型问题。但后来发现“把那个长整型的赋给一个整型变量”存在潜在的bug,便改动了算法,而现在不论怎样像上次那样改也过不去。

还是这编译原理,汇编要真的好好学!
Behard 2002-02-25
  • 打赏
  • 举报
回复
#include <stdlib.h>
xiongzm 2002-02-25
  • 打赏
  • 举报
回复
是吗,是在WinIDE下吗?我还是不行。
thisisxutao 2002-02-25
  • 打赏
  • 举报
回复
编译通过

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧