访问手机版页面
你的位置:老古开发网 > 其他 > 正文  
问与答(31)、(32)
内容导读:

问:我用C51编程调用汇编程序文件,程序很简单,C语言与汇编语言程序都只有几行(读、写1820),但是在C调用完汇编程序之后,不返回到调用处,而是返回到C语言的第一句处。运行了其它几个程序都是这个样,在MedWin和Keil下都试过,不知何故?

答:C语言和汇编语言混合编程要严格按照规则,汇编代码不能随意编制,它们有规范的接口。具体方法可以先设计包含哑函数的C模块,即把RDS1820( )用一个空函数来代替。

  #include
  #include
  #include
  //extern WDS1820(void);
  RDS1820(void)
  {
  }
  void main(void){
    int i;
    i++;
    // WDS1820();
    i++;
    RDS1820();
    i++;
    i++;
  }

  然后使用Debug和Code选项进行编译,从产生的列表文件中看具体的程序框架,注意函数名的符号变化,依据框架编制相应的汇编代码。具体方法参见本刊2001年第6期嵌入式C编程技术(六)或《单片机与嵌入式系统应用》合订本2001(1-6),全国各大书店有售。

问:符合IEEE-754标准的单精度浮点数在C51中是怎么表示的?

答:符合IEEE-754标准的单精度浮点数在C51中占用4个字节(32位二进制数),在内存中的存放格式如下:

  字节地址 +0 +1 +2 +3
  浮点数内容 SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM

  其中,S为符号位,E为阶码,占用8位二进制数。阶码E是以2为底的指数再加上偏移量127,M为尾数的小数部分,用23位二进制数表示。例如:

  124.75=0x42F98000H
  124.75=111 1100.11B
  阶码E=127+6=10000101;
  1.M=1.11110011B;
  M=11110011B

  所以:

    0100 0010 1111 1001 1000 0000 0000 0000 4 2 F 9 8 0 0 0

标签:
来源:单片机与嵌入式系统应用 作者: 时间:2006/2/12 0:00:00
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐