Board logo

标题: [原创]批处理版汇编语言开发工具 [打印本页]

作者: netbenton     时间: 2009-4-1 12:38    标题: [原创]批处理版汇编语言开发工具

这是一个完全批处理程序。

一、它的功能是,对为它写的汇编语言源程序进行编译生成可执行exe/com文件


而这种源程序支持以下描述:

一),用8088汇编语言指令系统

二),用DB/DW定义数据,并支持重复定义

三),用SET进行变量设置,如同BAT一样使用。

四),支持宏定义,宏扩展,宏嵌套扩展,并支持参数使用

五),支持子过程定义及调用

六),支持重复宏编程,

七),支持if else endif条件宏编程,可多层嵌套。

八),inc宏定义库文件调用

九),数据文件直接嵌入目标程序

十),特色#为头的标号,可作数据可作地址,主程序,宏(多层嵌套),子过程,if宏(多层嵌套)等
      之间的标号自然独立,并又可相互引用,

十一),以分号;为注释,可独立一行或在行后

十二),EXE程序的段定义方法简单,




二、不需要系统命令外的任何三方工具,

三、程序指令有错误时,直观报错,方便调试

四、了解8088指令系统后,简单学习本工具编程方法便可以使用该工具

五、程序开源,修改方便,可根据个人需要进行修改扩展,

============================
2009.8.1 更新为:    版本2.0.2
小提速了一下,增强了示例源码

============================
2010.9.25 更新为:    版本2.3.0
  1,增加:子过程可以使用参数,并且增加了“invoke” 伪指令,用于带参数调用子过程
  2,增加:子过程可以使用局部变量,这样可以轻松的把常用子过程,做成黑箱代码,方便编译和移殖。
  3,增加:数据结构定义和使用,并且可用于子过程的局部变量定义中
  4,改进了:10进制转16进制的算法,得以小提速
  5,增加:自动对较大的源码进行重复调整地址,这样复杂一点的汇编程序也可以用batasm来开发了。
  6,增加多行汇编语句连写功能,if else endif 连写功能
  7,增加case功能,与else 区别:case的分支只执行一个,而else 则是所有条件成立的。
  8,增加使用if@ else@ case@来解决分支过长时的短跳限制问题。

[ Last edited by netbenton on 2010-9-24 at 07:58 ]
附件 1: batasm2.0.2.rar (2009-8-1 11:19, 20.92 K,下载次数: 261)
附件 2: batasm2.3.rar (2010-9-25 03:51, 23.55 K,下载次数: 97)

作者: princezhou     时间: 2009-4-1 13:54
谢谢分享,太好了!很牛!
作者: wja2030     时间: 2009-4-2 06:00
谢谢分享,
作者: 070     时间: 2009-4-3 08:23
没有想到批处理如此强大!
作者: yishanju     时间: 2009-4-3 08:30
这楼上的简直是史前恐龙,2003年注册的
居然还有存活
作者: 764873221     时间: 2009-4-3 10:56    标题: 好啊

谢谢分享,太好了!很牛!
作者: DJ131452DJ     时间: 2009-4-5 16:19
谢谢分享,
作者: hugreen     时间: 2009-4-6 06:09
好东西,收下了,谢谢分享
正想重新学学汇编
作者: netbenton     时间: 2009-4-10 01:01
看来玩批处理又同时玩汇编的人不多。

本想得到一点意见,然后再完善完善的,都沉到看不见了,花了那么多时间搞的,不甘心就这么消失了。

这可是能促进批处理和汇编的“关系”的东西哦,一个从BAT进入ASM的小小"管道",可以让玩批处理的人也玩玩汇编。

再顶起来看看能否遇到感兴趣的。。。
作者: s11ss     时间: 2009-4-10 01:26
用debug玩……
作者: yishanju     时间: 2009-4-10 03:48
不知道学汇编的入门在哪里
要哪看哪些书,用哪些工具。。完全不知道。
要不然肯定有兴趣学一学
作者: s11ss     时间: 2009-4-10 05:57


  Quote:
Originally posted by yishanju at 2009-4-10 03:48 AM:
不知道学汇编的入门在哪里
要哪看哪些书,用哪些工具。。完全不知道。
要不然肯定有兴趣学一学

王爽和罗云彬的书
作者: uchina     时间: 2009-4-10 23:14
恩,是好东西啊,谢谢分享
作者: netbenton     时间: 2009-4-12 02:18
对!
batasm.bat 主要是靠debug来完成,

但是,debug 能支持标号定义,并调用吗?如call  标号
不能,debug 只支持call 1023绝对地址调用

debug可以接收汇编指令的输入,但是顺序一条一条的输入,如果中间有修改,则全部都要修改。


batasm.bat 可以让debug编程差不多像masm一样,并且有些地方更方便,如:
在源码可以这样定义:db "%date%" "%time%"
把实时的系统日期和时间定义到程序中。

batasm.bat 还带有这样一个功能,可以把代码生成16进制数据,在批处理中调用debug来还原为可执行程序。还可以固化为宏代码。

[ Last edited by netbenton on 2009-4-12 at 00:21 ]
作者: netbenton     时间: 2009-4-15 01:12
再顶一次,我感觉应该还可以忧化的,想所速度提上去,只是自己能力有限,不知道怎么搞了,真希望哪位高人能提点一下。

耐心的等。。。
作者: darkkid     时间: 2009-4-15 01:43
大哥相当牛b,奉你为神了
作者: jasonshaw     时间: 2009-4-16 02:41
太牛x!
作者: asp     时间: 2009-4-22 05:13
好东西,做个记号
作者: bbsjohn     时间: 2009-4-22 07:56
顶你了 先下来看看
作者: a794685135     时间: 2009-4-27 06:55
很好很强大 , 膜拜了~~~~~~~
作者: knight1006     时间: 2009-5-4 22:26
强!没想到汇编也可以用批处理来生成
作者: zgrhcf     时间: 2009-5-5 04:23
我是新手,看到楼主这么好的东西,可不晓得做啥用的?也不知道咋使用?
作者: wangjunhai     时间: 2009-5-6 10:26
支持一下,小弟正在学习当中
作者: hjh700913     时间: 2009-5-6 22:40
谢谢分享,太好了!
作者: hjh700913     时间: 2009-5-6 22:49
批处理版汇编语言开发工具批处理版汇编语言开发工具
作者: s11ss     时间: 2009-7-31 15:03
阳春白雪,望尘莫及
作者: rootkit     时间: 2009-8-6 21:41
竟然有如此强人!
作者: netbenton     时间: 2009-9-21 10:49
贴子要沉了,写了个批处理的鼠标三方工具mous.com,生成目录程序只有80个字节。
源码如下:
;com程序汇编开发工具,批处理版。版本2.0 演示程序(十)
;一个给批处理写的鼠标三方工具
;主要是调用鼠标中断 33 来完成


;//////////////在批处理中的用法:
;mous.com
;set lie=%errorlevel%
;mous.com 1
;set han=%errorlevel%
;mous.com 12
;set anj=%errorlevel%
;echo %anj% - %han% . %lie%
;///////////////////////////////////


;/////////////////////
set equ=nz
set gtr=b
;////////个性if条件定义


mov al,[80]        ;///////取命令行参数个数

if al equ 0        ;//////不带参数初始化,循环等待按键,并读取列坐标
  MOV     AX,0
  INT     33
#lp                ;**** if语句内可以定义标号
    MOV     AX,1
    INT     33
    MOV     AX,5
    INT     33
    TEST    AX,3
    JZ      #lp        ;**** 并使用跳转
    MOV     AX,3
    INT     33
    MOV     AX,CX
    MOV     BL,08
    DIV     BL
else al equ 2        ;//////一个参数(空格占一位),读取行坐标
    MOV     AX,0003
    INT     33
    MOV     AX,DX
    MOV     BL,08
    DIV     BL
else al equ 3        ;//////二个参数,读取按键(左1/右2)
   MOV     AX,0003
   INT     33
   MOV     AL,BL
else al gtr 3
  mov al,0        ;出错返回值为0
endif

;////////////
mov ah,4c
int 21
;/////返回DOS

作者: 523066680     时间: 2009-9-21 11:18

(图像来自外链)

这么猛! 我现在懵懵地。内牛满面。。。

[ Last edited by 523066680 on 2009-9-21 at 21:26 ]
作者: pcbfans     时间: 2009-10-2 15:56
好啊,长见识了!
作者: chinaccap     时间: 2009-10-8 12:14
谢谢,太感谢啦!
作者: cj000     时间: 2009-10-20 09:15
论坛里高手真多,下载学习学习。
作者: RuiIsRui     时间: 2009-10-23 22:02
多谢楼主奉献
作者: RuiIsRui     时间: 2009-10-23 22:06
再顶一次,呵呵~超牛啊。
作者: tyuooiu     时间: 2009-10-25 23:25
谢谢分享
作者: time868     时间: 2009-10-27 16:29
看来很有用哦~~谢谢哦。
作者: Evangel     时间: 2009-10-31 15:54
虽然不懂汇编,但看在汇编的面子上,还是顶了
作者: lianjiang2004     时间: 2009-11-2 09:01
虽然一点不懂,也是要强顶一下。
作者: supoingo     时间: 2009-11-2 17:59
这个对学习8088汇编的人可能有用,不过实现方式......
作者: netbenton     时间: 2009-11-25 00:43
本人转战BatHome

最新版本请看:http://bbs.bathome.net/thread-6482-1-1.html

[ Last edited by netbenton on 2010-2-21 at 16:50 ]
作者: echoair     时间: 2010-2-21 21:40
再敬佩楼主一次…
作者: netbenton     时间: 2010-9-25 03:59
2010.9.25 更新为:    版本2.3.0
  1,增加:子过程可以使用参数,并且增加了“invoke” 伪指令,用于带参数调用子过程
  2,增加:子过程可以使用局部变量,这样可以轻松的把常用子过程,做成黑箱代码,方便编译和移殖。
  3,增加:数据结构定义和使用,并且可用于子过程的局部变量定义中
  4,改进了:10进制转16进制的算法,得以小提速
  5,增加:自动对较大的源码进行重复调整地址,这样复杂一点的汇编程序也可以用batasm来开发了。
  6,增加多行汇编语句连写功能,if else endif 连写功能
  7,增加case功能,与else 区别:case的分支只执行一个,而else 则是所有条件成立的。
  8,增加使用if@ else@ case@来解决分支过长时的短跳限制问题。
作者: chenall     时间: 2010-10-22 01:03
强人,谢谢,最近准备学习汇编.
就把老贴翻出来,慢慢研究..
作者: hy55310     时间: 2010-10-24 22:13
批处理如此强大
作者: acaigg     时间: 2010-12-27 21:00
谢谢分享,太好了!很牛!
作者: cyn01livecn     时间: 2011-1-19 15:12
用的是虾米语言???
作者: ghostman     时间: 2017-4-24 18:28
谢谢LZ