首页
社区
课程
招聘
[旧帖] [讨论]关于搭建学习汇编环境的分享 0.00雪花
发表于: 2010-1-10 23:05 1755

[旧帖] [讨论]关于搭建学习汇编环境的分享 0.00雪花

2010-1-10 23:05
1755
初学汇编,在建立汇编开发环境的过程中,可能会遇到些挫折. 不建立好训练环境,只是看书没有实践导致学习进度减慢.我想也许有刚学汇编的人也会遇到这样的问题,所以总结一点自己的经验在这里分享,希望能帮上初学的人.
我看的书是汇编教材书,是16位DOS的汇编程序(不知是不是这样称呼).编译工具是MASM10.0的版本.

    从网上抄个程序如下:
DATA1 SEGMENT 
MSG1 DB 13, 10,  "Iteration: " 
NUM1 DB '1', "$" 
MSG2 DB 13, 10,  "Alphabet: $" 
NUM2 DB 'A', " $" 
MSG3 DB 13, 10, "Type digits, then press ENTER: $" 
DATA1 ENDS 
CODE1 SEGMENT 
ASSUME CS:CODE1, DS:DATA1 
START: MOV AX, DATA1 
MOV DS, AX 
MOV CX, 9 
MOV AH, 09H 
MOV DX, OFFSET MSG1 
.REPEAT 
 INT 21H
 INC NUM1 ;显示Iteration: 1,2,~,9 
.UNTILCXZ 
MOV DX, OFFSET MSG2 
INT 21H ;显示字符串"Alphabet:" 
MOV AH, 09H 
MOV DX, OFFSET NUM2 
.REPEAT 
 INT 21H
 INC NUM2 ;显示当前字母
;当前字母向后移 
.UNTIL NUM2 > 'Z' ;显示整个大写字母表 
MOV AH, 09H 
MOV DX, OFFSET MSG3 
INT 21H 
.WHILE  1 ;循环条件为永真的循环 
 MOV AH, 07H
 INT 21H ;不带回显地从键盘读一个字符 
 .BREAK .IF AL == 13 ;如果输入“回车”键,则终止循环 
 .CONTINUE .IF (AL<'0') || (AL>'9') ;如果字符不是数字字符,则继续循环 
 MOV DL, AL
 MOV AH, 02H
 INT 21H ;显示所输入的数字字母 
.ENDW 
MOV AX, 4C00H 
INT 21H 
CODE1 ENDS 
END START 

构建这个程序的过程如下: (假如上面的片段组织在a.asm中)
1:ml /c a.asm
2:link16 a.obj (不是link)
3:进入cmd运行该程序
上面这个构建过程有个缺点是生成的a.obj文件会ml所在的目录下.

所以我改进如下.
把ml所在的目录设为系统环境路径,这样我们可以进入到asm所在的目录,再键入上面的命令.

由于每次的构建都是类似, 都会经过上述三步.所以我在ml所在的目录建立一个批处理文件
//build16.bat
if exist %1.obj del %1.obj
if exist %1.exe del %1.exe

ml /c %1.asm %1.obj
if errorlevel 1 goto errasm

link16 %1.obj
if errorlevel 1 goto errlink
dir %1.*
%1.exe
goto theend

:errlink
echo _
echo Link error
goto theend

:errasm
echo _
echo Assbmbly Error
goto theend

:theend
pause

这样一条语句就可以完成 build16 a

我原来想是在批处理文件中把生成在ml所在目录下的文件拷贝至目标目录,可是我在批处理文件中处理字符串时遇到些麻烦,而且每次要使用时还得进入ml所在的目录,会影响效率.

32位的基于windows的使用radasm就可以了.而且有个教程写得很好,上网一搜就可以找到.

上面是学习汇编的搭建训练环境的一点经验,  也不知还有什么其它方法, 希望得到各位朋友的补充和指点.

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 263
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
帮顶.我也是刚刚学习....
2010-1-11 10:34
0
雪    币: 62
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我的汇编环境就是一虚拟机里装个DOS
2010-1-11 11:07
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
以前是用未来汇编来练的。。。
2010-1-11 12:45
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好帖。顶个。俺用MASM32
2010-1-11 16:01
0
雪    币: 267
活跃值: (24)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
后来发现确实用Radasm还是比较好,CCDebuger的论坛上有!
2010-1-11 19:32
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
目前偶只是看汇编教程,感觉进步不快啊
2010-1-11 20:33
0
游客
登录 | 注册 方可回帖
返回
//