在汇编语言中怎样将一个数据段全部清零 15
3个回答
展开全部
;功能:显示当前目录下的文本文件内容
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编写的
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编写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |