中断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