. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  [原创]傻瓜式16位汇编编译连接调试程序  [待解决] 回复[ 8次 ]   点击[ 643次 ]  
inrg
[帖 主]   [ 发表时间:2010-01-19 08:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22
辛苦了一晚上,终于完成了:)

下面为BAT代码,将代码复制到文本文件中,更名为DML.BAT后根据提示安装!

 

@echo off
title 16位汇编快速编译连接调试 当前日期:%date%   现在时间:%time%
color 0B

:START
cls
echo.
echo                ≡≡ 欢迎使用 16位汇编快速编译连接调试 程序 ≡≡
echo.
echo                       ╭════════════════╮
echo                       ║                                ║ 
echo   ╭═════════┤          作者:INRG            ├════════╮
echo   ║                  ║                                ║                ║
echo   ║                  ╰════════════════╯                ║
echo   ║                                                                      ║
echo   ║   [S] 安装 (注意:安装之前必须把编译和连接程序同本程序放在一个目录)  ║
echo   ║                                                                      ║
echo   ║   [U] 卸载                                                           ║
echo   ║                                                                      ║
echo   ║   本程序使用masm5.0、link3.6在XP系统下测试通过,如有问题请与我联系。 ║
echo   ║                                                                      ║
echo   ║   E-Mail:inrg@163.com  QQ:34153410                                   ║
echo   ║                                                                      ║ 
echo   ║                ╭══════════════════╮              ║
echo   ║                ║                                    ║              ║
echo   ╰════════┤            版本: 1.0               ├═══════╯
echo                     ║                                    ║
echo                     ╰══════════════════╯ 

set /p chs=请输入你的选择:
if /i "%chs%"=="S" goto s
if /i "%chs%"=="U" goto s
goto START

:s
cd %SYSTEMROOT%

REM 卸载
if exist M16.exe del /q /f M16.exe 2>nul
if exist L16.exe del /q /f L16.exe 2>nul
if exist DML16.bat del /q /f DML16.bat 2>nul

reg query "HKLM\Software"|find "DML16" >nul || goto s3 
reg query "HKLM\Software\DML16"|find "masmname" >nul || goto s1 
for /f "tokens=3" %%a in ('reg query "HKLM\Software\DML16" /v "masmname"') do set masmname=%%a
:s1
reg query "HKLM\Software\DML16"|find "dbgname" >nul || goto s2
for /f "tokens=3" %%b in ('reg query "HKLM\Software\DML16" /v "dbgname"') do set dbgname=%%b
:s2
if /i "%masmname%" neq "" reg delete HKCR\Asmfiles\shell\%masmname% /f >nul
if /i "%dbgname%" neq "" reg delete HKCR\exefile\shell\%dbgname% /f >nul
reg delete "HKLM\Software\DML16" /f >nul
:s3
if /i "%chs%"=="U" (
    echo 卸载成功!
    pause
    goto START
)

REM 安装
set /p chs0=请输入MASM程序的文件名称(如masm,不带扩展名):
set chs1=%chs0%.exe
if not exist %~sdp0%chs1% (
    echo 错误提示:未找到%chs1%文件,请将该程序拷进%~dp0目录!
    pause
    goto START
)

set /p chs2=请输入LINK程序的文件名称(如link,不带扩展名):
set chs3=%chs2%.exe
if not exist %~sdp0%chs3% (
    echo 错误提示:未找到%chs3%文件,请将该程序拷进%~dp0目录!
    pause
    goto START
)

set /p chs4=请输入编译连接ASM文件时的鼠标右键菜单名称(如ML16):
if %chs4% == "" goto START
set /p chs5=请输入调试16位EXE文件时的鼠标右键菜单名称(如DEBUG):
if %chs5% == "" goto START

copy /y %~sdp0%chs1%  %SYSTEMROOT%\M16.exe >nul
copy /y %~sdp0%chs3%  %SYSTEMROOT%\L16.exe >nul
reg add HKLM\Software\DML16 /v masmname /t REG_SZ /d %chs4% /f >nul
reg add HKLM\Software\DML16 /v dbgname /t REG_SZ /d %chs5% /f >nul
reg add HKCR\Asmfiles\shell\%chs4%\command /ve /d "DML16.bat ""%%1""" /f >nul
reg add HKCR\exefile\shell\%chs5%\command /ve /d "DML16.bat ""%%1""" /f >nul

echo @echo off>DML16.bat
echo if "%%~s1" == "" (>>DML16.bat
echo     echo 未传入参数!>>DML16.bat
echo     goto err0>>DML16.bat
echo )>>DML16.bat
echo if not exist %%~s1 (>>DML16.bat
echo     echo 文件未找到!>>DML16.bat
echo     goto err0>>DML16.bat
echo )>>DML16.bat
echo if /i %%~x1 equ .exe goto dbg>>DML16.bat
echo if /i %%~x1 equ .asm goto ml>>DML16.bat
echo echo 文件扩展名应为.exe或.asm!>>DML16.bat
echo :err0>>DML16.bat
echo pause>>DML16.bat
echo goto end>>DML16.bat
echo :dbg>>DML16.bat
echo debug %%~s1>>DML16.bat
echo goto end>>DML16.bat
echo :ml>>DML16.bat
echo cd %%~sdp1>>DML16.bat
echo M16.EXE %%~nx1,%%~n1.OBJ,NUL.LST,NUL.CRF ^> debugerr.txt>>DML16.bat
echo if %%errorlevel%% neq 0 (>>DML16.bat
echo     cls>>DML16.bat
echo     echo Compile Error:>>DML16.bat
echo     for /f "skip=3 tokens=*" %%%%i in (debugerr.txt) do echo %%%%i>>DML16.bat
echo     pause>>DML16.bat
echo     goto del>>DML16.bat
echo )>>DML16.bat
echo L16.EXE %%~n1.obj,%%~n1.exe,NUL.MAP,, ^> linkerr.txt>>DML16.bat
echo if %%errorlevel%% neq 0 (>>DML16.bat
echo     cls>>DML16.bat
echo     echo Connection Error:>>DML16.bat
echo     for /f "skip=3 tokens=*" %%%%i in (linkerr.txt) do echo %%%%i>>DML16.bat
echo     pause>>DML16.bat
echo     goto del>>DML16.bat
echo )>>DML16.bat
echo :del>>DML16.bat
echo del /q /f debugerr.txt ^>nul >>DML16.bat
echo del /q /f linkerr.txt ^>nul >>DML16.bat
echo del /q /f %%~n1.OBJ ^>nul >>DML16.bat
echo :end>>DML16.bat

echo 安装成功!
pause
goto START

:end
bigbigwolf
[第1楼]   [ 回复时间:2010-01-19 11:46 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-01-13 10:56
好厉害,复制下来研究一下 ^_^
inrg
[第2楼]   [ 回复时间:2010-01-19 15:35 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22
我是边学边做的 呵呵 大家觉得好就顶下 免得沉了
inrg
[第3楼]   [ 回复时间:2010-01-19 19:09 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22
忘了补充 安装完后找到相应的ASM和EXE文件点击右键 有安装时自定义添加的菜单 一步编译连接 和 调试(DEBUG) 如编译连接有错误可提示错误信息 极方便 不必再用手敲masm、link等 我也正在学汇编 让我们一起进步 一起强 b
versaariel
[第4楼]   [ 回复时间:2010-01-19 19:50 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
好东西,学习
regex
[第5楼]   [ 回复时间:2010-01-20 23:46 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
楼主的批处理的境界趋于炉火纯青登峰造极啦~~O(∩_∩)O哈哈~
inzahgi
[第6楼]   [ 回复时间:2010-01-30 10:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-30 17:03
好强大呀
mulberry
[第7楼]   [ 回复时间:2010-03-17 11:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-27 19:14
楼主辛苦了 谢谢
zhuqi470
[第8楼]   [ 回复时间:2010-04-11 02:11 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-04-09 01:21
嘿嘿   好东西
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved