中断25H——磁盘绝对读中断? 中断26H——磁盘绝对写中断
有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之其它DOS中断。
0000H——键盘
0001H——屏幕0002H——错误显示(屏幕)
0003H——COM10004H——打印机
例8.13 编写一个创建子目录的程序,具体要求如下:
1)、用键盘输入一个目录路径名,若输入的字符串为空,则程序运行结束;
2)、若目录创建成功,显示成功信息,否则,显示创建失败信息。
解:
.MODEL SMALL
.DATA
DName DB 30, ?, 30 DUP(?), 0
SMsg DB "Ok", 10, 13, "$"
FMsg DB "Failure", 10, 13, "$"
.CODE
.STARTUP
again:
MOV AH, 0AH
LEA DX, DName
INT 21H ;输入目录名
MOV BL, DName+1
CMP BL, 0
JZ over ;检查输入的字符串是否为空
XOR BH, BH
MOV DName[BX+2], 0 ;确保字符串以0为结束标志
MOV DX, Offset DName+2
MOV AH, 39H
INT 21H ;以当前输入的字符串来创建目录
.IF CARRY?
LEA DX, FMsg
.ELSE
LEA DX, SMsg
.ENDIF
MOV AH, 9H
INT 21H
JMP again
over:
.EXIT 0
END
例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