例8.14 编写一个类似TYPE命令的程序,其要求如下:
1)、用键盘输入文件名(可包含路径),若输入的字符串为空,则程序运行结束;
2)、若输入的文件存在,则显示其内容,否则,显示文件不存在的信息。

解:
.MODEL SMALL
.DATA
  FName DB 30, ?, 30 DUP(?), 0
  Fail   DB "Not Found", 10, 13, "$"
  Buff   DB 128 dup(?)
.CODE
.STARTUP
again:
MOV AH, 0AH
LEA DX, FName
INT 21H ;输入的文件名
MOV BL, FName+1
CMP BL, 0
JZ over ;检查文件名是否为空
XOR BH, BH
MOV FName[BX+2], 0
MOV DX, Offset FName+2
MOV AL, 0H
MOV AH, 3DH
INT 21H ;以只读方式打开文件
JNC succ
LEA DX, Fail
MOV AH, 9H
INT 21H
JMP again
succ:
MOV BX, AX ;把文件句柄赋给BX
read:
LEA DX, BUFF
MOV CX, 128
MOV AH, 3FH
INT 21H ;从文件中最多一次读取128个字符
CMP AX, 0
JZ close ;读取的字符数为0
JC close ;读错误
PUSH BX ;保护文件句柄
MOV DX, offset buff
MOV CX, AX
MOV BX, 1 ;屏幕设备的句柄规定为1
MOV AH, 40H
INT 21H ;把读出的字符显示在屏幕上
POP BX ;恢复文件句柄
JMP read
close:
MOV AH, 3EH
INT 21H
JMP AGAIN
over:
.EXIT 0
END

关 闭