音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

這是我寫的PIC系列反匯編程序原碼,認為好的話頂一頂!在vc通過

作者:xq001 欄目:單片機
這是我寫的PIC系列反匯編程序原碼,認為好的話頂一頂!在vc通過
用C語言產(chǎn)生BIN文件,再用這文件反匯編,再編譯就能仿真,這是我自用程序,給大家看看.只能學習,不能商用!




#include <stdio.h>

#define     BL          25          // length of LINE buffer
#define     NL         '\n'
#define     CR         '\r'
#define     TAB        '\t'
#define     FORMFEED   '\f'
#define     MODE_BYTE   0
#define     MODE_ADDX   1
#define     LINE_BUFF_SIZE 8097
#define     ERROR_LIST_SIZE 100


main (int argc, CHAR *argv[])
//main ()
{

  // Vars and etc
  FILE            *fp, *fopen(), *fp_opcode, *exec_file, *list_fp;
  int             fclose(),c,tt;
  unsigned CHAR   *c_buffer,d,*file_NAME, *c_code, *binary_NAME, *list_file, *unasm_NAME;
  unsigned CHAR   *str_label1, *LINE_lab;
  unsigned int    result_buffer[BL];
  int             source_LINE_count,i,j,c_code_ptr,k;
  int             LINE_start,LINE_end;
  CHAR            LINE_buff[LINE_BUFF_SIZE],LINE_buffh[LINE_BUFF_SIZE],LINE_buffl[LINE_BUFF_SIZE],ca,cb,cc,cd,ce,cf;

  if(argc<3) {
    printf("MICROCHIP unasm PIC12Cxx;PIC16C5X;PIC16C6X;PIC16C7X;PIC16C8X...\n");
    printf("Usage:\n");
    printf("dpic [binaryfile] [unasmfile] \n");
    printf("where:\n");
    printf("binaryfile = unassembler file NAME\n");
    printf("unasmfile = the assembler code file\n");
    exit(-1);
  }
  if( (fp=fopen(argv[1],"rb+")) == NULL )
    { printf("error opening source file\n");
      exit(-1);
    }

// Open the listing file
  if( (list_fp=fopen(argv[2],"w+")) == NULL )
    { printf("error opening unassembler file\n");
      exit(-1);
    }

  rewind(fp); // reset source file pointer to beginning
  LINE_end = -1; // initial VALUE of LINE_end

  for(j=0;j<LINE_BUFF_SIZE;j++)
    {
        LINE_buffh[j]=NULL;
        LINE_buffl[j]=NULL;
    }
  j=0;

  while( (c=fgetc(fp)) != EOF )
    { LINE_buffh[j]=c;             // copy CHARs into LINE buffer
     if ((c=fgetc(fp))!=EOF)
      LINE_buffl[j]=c;
      j++;
    source_LINE_count = j ;
    }

   fprintf(list_fp,";*****************************************************************\n");
   fprintf(list_fp,";*                                                               *\n");
   fprintf(list_fp,";*           Unasm programmer write by XiaoQiang                 *\n");
   fprintf(list_fp,";*                                                               *\n");
   fprintf(list_fp,";*****************************************************************\n\n");
   fprintf(list_fp,";    Total LINE count in source file= %d\n",source_LINE_count);
   fprintf(list_fp,";    Please check GOTO & CALL instruct address \n\n");

   j=0;

    for(i=0;i<source_LINE_count;i++)
    { if (LINE_buffl[i]>0x0f)
        {
            fprintf(list_fp,"\n\t LIST P=PIC16CXX\n\n");
            j=1;
            break;
        }
      else
        {  if (i==(source_LINE_count-1))
            {
             fprintf(list_fp,"\n\t LIST P=PIC16C5X\n\n");
             j=0;
             break;
            }
        }
    }


    
    for (i=0;i<source_LINE_count;i++)
    {
        fprintf(list_fp,"L%d:\t",i);
        if (j == 0)
        {
            SWITCH (LINE_buffl[i])
            {
            case (0x00 ):
                {
                    SWITCH (LINE_buffh[i]&0xC0)
                    {    
                        case (0X00 ):
2樓: >>參與討論
fxmxh
MPLAB自帶反匯編的啊
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
菜鳥提問:PIC16C**是不是只有OTP型的?有可擦寫的嗎?
位變量批量保存??
請教高手,誰有單片機的解碼程序(解碼2262芯片的)
初學PIC,用12C508,請指教
怎么把VB中的picturebox控件中的曲線轉(zhuǎn)成數(shù)據(jù)
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號