如何使用汇编语言将一个.bat型的文件读出来

如何使用汇编语言将一个.bat型的文件读出来,第1张

功能:显示当前目录下的慧搭型文本文件内容

EOF = 1AH

DSEG SEGMENT

FNAME DB 'E:\asm\TEST.BAT',0 文件完整路径名

ERROR1 DB 'File not found',07H,0 提示信息

ERROR2 DB 'Reading error',07H,0

BUFFER DB ? 1字节的缓冲区

DSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG,DS:DSEG

START: MOV AX,DSEG

MOV DS,AX

MOV DX,OFFSET FNAME

MOV AX,3D00H 为读打开指定文件

INT 21H

JNC OPEN_OK 打开成功,转

MOV SI,OFFSET ERROR1

CALL DMESS 显示不成功信息

JMP OVER

OPEN_OK:MOV BX,AX 保存文件柄

CONT: CALL READCH 从前猜文件中读一个字符

JC READERR 如读出错,则转

CMP AL,EOF 读到文件枝激结束符吗?

JZ TYPE_OK 是,转

CALL PUTCH 显示所读字符

JMP CONT 继续

READERR:MOV SI,OFFSET ERROR2

CALL DMESS

TYPE_OK:MOV AH,3EH 关闭文件

INT 21H

OVER: MOV AH,0 结束程序

INT 16H

MOV AH,4CH

INT 21H

READCH PROC

MOV CX,1 置读字节数

MOV DX,OFFSET BUFFER 置读缓冲区地址

MOV AH,3FH

INT 21H

JC READCH2 读出错,转

CMP AX,CX 判断文件是否结束

MOV AL,EOF 文件结束,置结束符

JB READCH1 文件结束,转

MOV AL,BUFFER 文件未结束,取所读字符

READCH1:CLC

READCH2:RET

READCH ENDP

显示一个以0为结束符的字符串

DMESS PROC

DMESS1: MOV DL,[SI]

INC SI

OR DL,DL

JZ DMESS2

MOV AH,2

INT 21H

JMP DMESS1

DMESS2: RET

DMESS ENDP

显示一个字符

PUTCH PROC

PUSH DX

MOV DL,AL

MOV AH,2

INT 21H

POP DX

RET

PUTCH ENDP

CSEG ENDS

END STAR

我刚开始学汇编,这是书上一个例题,给你看看,masm编写的

可执行文件与编写语言程序之间的关系

这个不是exe与bat的关系吧~~~~汗

bat是脚本,用dos指令(不完全是)编写,不用汇编即可运行

exe需要用编写语言(如c,c++,b)在编程工具中编写汇编得到.

咳咳,撇开你的题目,bat可以加壳旁肢雀变成exe,常用工具有quick bfc(这个方便使运早用,但是如360那种东西认不了壳就饥旦报毒的东西会报毒)和winrar(这个需要手动 *** 作,不会被报毒)

exe com程序一般都是经过编译 转汇编的一种程序 而批处理世拿是一种解释性皮返前语言 两者差距在于 汇编后的程序更容易燃清让电脑高效率运行处理 而批处理等一些 包括VB script HTML等 都是需要经过解释然后执行

此外编译后期修改起来不如解释来的容易

但是排除VB软件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12529354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存