⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.lst

📁 C to ASM and ASM to C on Keil C
💻 LST
字号:
C51 COMPILER V7.10   TEST                                                                  08/04/2004 20:42:29 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE TEST
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND CODE SYMBOLS PREPRINT

line level    source

   1          //////////////////////////////////////////////////////////////////
   2          ///                                                                                                                             //
   3          // 作为初学者,对Keil C51与汇编函数的相互调用一直是个不敢轻易尝 //
   4          // 试的难点。本程序的演示通过一个简单的相互结合,演示了下述内容 //
   5          //      1。c对asm的函数调用,并展示了变量传递方法                                       //
   6          //      2。用asm编写中断函数,并展示了C程序中的全局变量在asm中的引用//
   7          // 希望通过本程序能对大多数初学者学习C51有所帮助。                              //
   8          //--------------------------------------------------------------//
   9          // 晓奇工作室 http://www.xiao-qi.com/                                                   //
  10          //                                                                              晓奇 info@xiao-qi.com   //
  11          //////////////////////////////////////////////////////////////////
  12          #pragma src( aa.a51 )                                   // 产生汇编代码
  13          #include "reg51.h"
  14          
  15          // 定义一个16位变量
  16          unsigned int aa;
  17          
  18          // 对外部函数的说明,并不区分汇编或C
  19          extern void timerCt0(void);
  20          extern unsigned char fnAdd( unsigned char x ,unsigned char y );
  21          extern unsigned char fnSub( unsigned char x ,unsigned char y );
  22          
  23          //////////////////////////////////////////////////////////////////
  24          // cpu内部状态初始化。这里仅仅对ct0作了初始化                                   //
  25          //////////////////////////////////////////////////////////////////
  26          void prInit(void){
  27   1              TMOD= 0x11;                             // 0001 0001 T0,T1 16位定时器
  28   1              IP      = 0x2;                          // 0000 0010 定时0最高优先级
  29   1              IE      = 0x2;
  30   1              TCON= 5;
  31   1              TH0 = 0xff;                             // 预置初值
  32   1              TL0     = 0xe0;
  33   1              TR0 = 1;                                // 打开定时器中断
  34   1              ET0 = 1;
  35   1              EA      = 1;
  36   1      }
  37          
  38          //////////////////////////////////////////////////////////////////
  39          // 本函数提供给汇编函数调用                                                                             //
  40          //////////////////////////////////////////////////////////////////
  41          
  42          unsigned char fnMul( unsigned char x ,unsigned char y ){
  43   1      unsigned char temp;
  44   1              temp = x*y;
  45   1              return temp;
  46   1      }
  47          
  48          //////////////////////////////////////////////////////////////////
  49          // 演示主程序,debug时请在进入while(1)处后,留意定时中断对变量  //
  50          // aa的修改.为了更清楚的观察,请使用F11单步调试。                               //                                                                                                              //
  51          //////////////////////////////////////////////////////////////////
  52          
  53          void main(void) {
  54   1              prInit();
  55   1              aa=fnAdd(10,20);
C51 COMPILER V7.10   TEST                                                                  08/04/2004 20:42:29 PAGE 2   

  56   1              aa=fnSub(30,10);
  57   1              aa=aa+1;
  58   1              while(1);
  59   1      }
C51 COMPILER V7.10   TEST                                                                  08/04/2004 20:42:29 PAGE 3   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
_fnAdd . . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
aa . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0000H  2
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
_fnSub . . . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
_fnMul . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  x?140. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
  y?141. . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
  temp?142 . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0007H  1
prInit . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     68    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -