ITEEDU

4、磁盘绝对读写中断

中断25H——磁盘绝对读中断? 中断26H——磁盘绝对写中断

有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅附录3之其它DOS中断。

5、系统标准设备的句柄

0000H——键盘

0001H——屏幕

0002H——错误显示(屏幕)

0003H——COM1

0004H——打印机

6、目录、文件功能的应用举例

例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