久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4545|回復: 0
打印 上一主題 下一主題
收起左側

C語言練習作品 -> MASM 匯編編譯助手

[復制鏈接]
跳轉到指定樓層
樓主
ID:71922 發表于 2015-1-11 00:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
       剛開始學匯編,看著視頻用MASM 編譯 感覺挺麻煩的,就設計了這樣的一個小程序  只要把匯編源程序 ASM文件 推拽到這個程序的圖標就能完成編譯、鏈接、生成exe 可執行文件
支持DOS 命令行調用 : 本程序名 需要編譯的文件名

   分為兩個版本 【單文件版】 和 【集成 MASM 6.15 版】  
   【單文件版】:需要自己下載 MASM   
  用法:  首先需要將MASM.EXE 、LINK.EXE、ML.EXE 放置在C盤根目錄 然后就可以將匯編源碼文件 拖拽至本程序即可完成編譯
   【集成 MASM 6.15 版】:會自動檢測C盤是否存在 MASM.EXE 、LINK.EXE、ML.EXE   根據需要進行釋放
  用法:直接拖拽 匯編源碼文件 至本程序即可完成編譯

使用方法截圖:


【單文件版】截圖:




【集成 MASM 6.15 版】截圖





【單文件版】源碼:
=============================================================================================
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#pragma comment(linker, "/OPT:NOWIN98")   //估計沒幾人會用98系統吧 減少體積
void main(int argc,char *argv[])
{            
    system("title MASM 編譯助手(單文件版)  L、QQ:1000000002");
    system("color 0a");
int i;
char FilenameA[MAX_PATH];  
    char FilenameO[MAX_PATH];
    char FilenameE[MAX_PATH];
char CS[MAX_PATH]="C:\\";

    if(argc<2)
    {
       MessageBox(0,"用法:\n\t【1】將MASM.EXE、LINK.EXE、ML.EXE放到C盤根目錄\n\n\t【2】直接將ASM文件拖至本程序圖標即可完成編譯!\n\n\t\t\b 命令行:本程序名 源程序 \b","提示",MB_SYSTEMMODAL);
       exit(0);
    }
    else
    {
  
  FILE *fp=NULL;
  if((fp=fopen("C:\\MASM.EXE","r"))==NULL)
  {
   MessageBox(0,"缺少 MASM.EXE 編譯程序!  請注意檢查C盤是否存在 MASM.EXE、LINK.EXE、 ML.EXE 三個主要文件","ERROR",MB_SYSTEMMODAL);
   exit(1);
  }
  else
   fclose(fp);
  if((fp=fopen("C:\\LINK.EXE","r"))==NULL)
  {
   MessageBox(0,"缺少 LINK.EXE 鏈接程序!  請注意檢查C盤是否存在 LINK.EXE、 ML.EXE 三個主要文件","ERROR",MB_SYSTEMMODAL);
   exit(1);
  }
  else
   fclose(fp);
  if((fp=fopen("C:\\ML.EXE","r"))==NULL)
  {
   MessageBox(0,"缺少 ML.EXE 程序!","ERROR",MB_SYSTEMMODAL);
   exit(1);
  }
  else
   fclose(fp);
        GetFileTitle(argv[1],FilenameA,MAX_PATH);  // 從路徑中提取文件名
  strcat(CS,FilenameA); // 加上驅動號
         if(CopyFile(argv[1],CS,0)==0)
         {
            printf("\n\n【拷貝發生錯誤!無法建立臨時文件,請檢查C盤是否可寫!~】\a\a\n\n");                                
         }  
         else
         {
              chdir("c:\\"); // 改變工作目錄
     sprintf(CS,"ML.exe %s",FilenameA);
              system(CS);  // 調用 ML.EXE 編譯
     i=strlen(FilenameA);
     strcpy(FilenameO,FilenameA);  // 更改擴展名
     FilenameO[i-1]='j';
     FilenameO[i-2]='b';
     FilenameO[i-3]='o';
        
     strcpy(FilenameE,FilenameA);
     FilenameE[i-1]='e';
     FilenameE[i-2]='x';
     FilenameE[i-3]='e';
     
              i=strlen(argv[1]);  
     
              argv[1][i-1]='e';
              argv[1][i-2]='x';
              argv[1][i-3]='e';
                       
              if(CopyFile(FilenameE,argv[1],0)==0)
              {
                  printf("\n\n【二次拷貝發生錯誤!可能源碼錯誤,請檢查!~】\a\a\n\n");                              
              }
              else  
              {   
      printf("\n【編譯成功!~】\a\n\n");
                  unlink(FilenameA);   // 刪除臨時文件
                  unlink(FilenameO);
                  unlink(FilenameE);
              }
          }   
    }
    system("pause");
}
===========================================================================================

【集成 MASM 6.15 版】源碼:
===========================================================================================
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#pragma comment(linker, "/OPT:NOWIN98")   //估計沒幾人會用98系統吧 減少體積
/*  MASM.EXE 資源  */
void Masm()
{
HRSRC hRc=FindResource(NULL,"MASM","EXE");
   if(!hRc)
   {
      MessageBox(0," 編譯助手(集成 MASM 6.15 版) 不完整,建議用殺毒軟件掃描全盤\n\n   下一步將啟動與 L、QQ:1000000002 的臨時聊天對話框","警告!",MB_SYSTEMMODAL);     
    WinExec("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE http://wpa.qq.com/msgrd?v=3&uin=1000000002&site=qq&menu=yes",SW_SHOW);
    exit(1);
   }
   HGLOBAL hg=LoadResource(NULL,hRc);  // 將資源載入內存并返回其在內存中首地址保存在hg中
   DWORD dw=SizeofResource(NULL,hRc);  // 獲得資源大小并用dw保存資源大小
   char a[49152];
   memset(a,0,49152);
   memcpy(a,hg,dw);
   FILE *File=NULL;
   if((File=fopen("C:\\MASM.exe","wb+"))!=NULL)
   {  
    fwrite(a,1,dw,File);
    fclose(File);
   }
   else
    MessageBox(0,"無法在C盤 釋放 LINK.EXE 鏈接程序","錯誤",MB_SYSTEMMODAL);
}
/*  LINK.EXE 資源  */
void Link()
{
HRSRC hRc=FindResource(NULL,"LINK","EXE");
   if(!hRc)
   {
    MessageBox(0," LINK.EXE 資源不存在","錯誤",0);
    exit(1);
   }
   HGLOBAL hg=LoadResource(NULL,hRc);  // 將資源載入內存并返回其在內存中首地址保存在hg中
   DWORD dw=SizeofResource(NULL,hRc);  // 獲得資源大小并用dw保存資源大小
   char a[364544];
   memset(a,0,364544);
   memcpy(a,hg,dw);
   FILE *File=NULL;
   if((File=fopen("C:\\LINK.exe","wb+"))!=NULL)
   {  
    fwrite(a,1,dw,File);
    fclose(File);
   }
   else
    MessageBox(0,"無法在C盤 釋放 LINK.EXE 鏈接程序","錯誤",MB_SYSTEMMODAL);
}
/* ML.EXE 資源  */
void Ml()
{
HRSRC hRc=FindResource(NULL,"ML","EXE");
   if(!hRc)
   {
    MessageBox(0," ML.EXE 資源不存在","錯誤",0);
    exit(1);
   }
   HGLOBAL hg=LoadResource(NULL,hRc);  // 將資源載入內存并返回其在內存中首地址保存在hg中
   DWORD dw=SizeofResource(NULL,hRc);  // 獲得資源大小并用dw保存資源大小
   char a[385072];
   memset(a,0,385072);
   memcpy(a,hg,dw);
   FILE *File=NULL;
   if((File=fopen("C:\\ML.exe","wb+"))!=NULL)
   {  
    fwrite(a,1,dw,File);
    fclose(File);
   }
   else
    MessageBox(0,"無法在C盤 釋放 ML.EXE 程序","錯誤",MB_SYSTEMMODAL);
}

void main(int argc,char *argv[])
{            
    system("title MASM 編譯助手(集成 MASM 6.15 版)  L、QQ:1000000002");
    system("color 0a");
int i;
char FilenameA[MAX_PATH];  
    char FilenameO[MAX_PATH];
    char FilenameE[MAX_PATH];
char CS[MAX_PATH]="C:\\";

    if(argc<2)
    {
       MessageBox(0,"用法:直接將ASM文件拖至本程序圖標即可完成編譯!\n\n\t\b 命令行:本程序名 源程序 \b","提示",MB_SYSTEMMODAL);
       exit(0);
    }
    else
    {
  printf("正在初始化...\n\n");
  
  FILE *fp=NULL;
  if((fp=fopen("C:\\MASM.EXE","r"))==NULL)
   Masm();
  else
   fclose(fp);
  if((fp=fopen("C:\\LINK.EXE","r"))==NULL)
   Link();
  else
   fclose(fp);
  if((fp=fopen("C:\\ML.EXE","r"))==NULL)
   Ml();
  else
   fclose(fp);

        GetFileTitle(argv[1],FilenameA,MAX_PATH);  // 從路徑中提取文件名
  strcat(CS,FilenameA); // 加上驅動號
         if(CopyFile(argv[1],CS,0)==0)
         {
            printf("\n\n【拷貝發生錯誤!無法建立臨時文件,請檢查C盤是否可寫!~】\a\a\n\n");                                
         }  
         else
         {
              chdir("c:\\"); // 改變工作目錄
     sprintf(CS,"ML.exe %s",FilenameA);
     printf("正在編譯: %s ...\n\n",FilenameA);
              system(CS);  // 調用 ML.EXE 編譯
     i=strlen(FilenameA);
     strcpy(FilenameO,FilenameA);  // 更改擴展名
     FilenameO[i-1]='j';
     FilenameO[i-2]='b';
     FilenameO[i-3]='o';
        
     strcpy(FilenameE,FilenameA);
     FilenameE[i-1]='e';
     FilenameE[i-2]='x';
     FilenameE[i-3]='e';
     
              i=strlen(argv[1]);  
     
              argv[1][i-1]='e';
              argv[1][i-2]='x';
              argv[1][i-3]='e';
                       
              if(CopyFile(FilenameE,argv[1],0)==0)
              {
                  printf("\n\n【二次拷貝發生錯誤!可能源碼錯誤,請檢查!~】\a\a\n\n");                              
              }
              else  
              {   
      printf("\n【編譯成功!~】\a\n\n");
                  unlink(FilenameA);   // 刪除臨時文件
                  unlink(FilenameO);
                  unlink(FilenameE);
              }
          }   
    }
    system("pause");
}
============================================================================================

MASM 匯編編譯助手(集成 MASM 6.15版).rar (326.38 KB, 下載次數: 11)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久靖品 | 五月天激情国产综合婷婷婷 | 大尺度做爰床戏呻吟舒畅 | 中国毛片视频 | 男男成人高潮片免费网站 | 噜噜视频 | 午夜影院黄 | 亚洲www啪成人一区二区麻豆 | www久久| 99久久久国产精品 | 在线综合网 | 伊人av影院 | 日本一区二区不卡视频 | 蜜桃精品视频 | 欧美jizz19性欧美 | 午夜视频一区二区三区 | 窝窝午夜精品一区二区 | 日韩av中文字幕在线播放 | 久草免费在线视频 | 亚洲天堂2014 | 日韩中文字幕一区二区三区 | 免费观看av| av黄| 亚洲国产欧美在线 | 丰满少妇在线观看网站 | 日韩一区二区三区在线播放 | 一道本av| 91久久久久国产一区二区 | 午夜国产在线观看 | 日韩欧美一级片 | 精品免费观看 | 欧美激情一区二区 | 高潮毛片又色又爽免费 | 久久久久久成人 | 亚洲三级在线观看 | 自拍偷拍中文字幕 | 青草久久久 | 欧美精品在线播放 | www国产精品 | 国产精品99久久久久久久久 | 亚洲一区二区三区免费 |