DOS系統功能調用表(INT 21H)


AH

功能

調用參數

返回參數

00

程序終止(同INT 20H)

CS=程序段前綴

 

01

鍵盤輸入並回顯

 

AL=輸入字符

02

顯示輸出

DL=輸出字符

 

03

異步通迅輸入

 

AL=輸入數據

04

異步通迅輸出

DL=輸出數據

 

05

打印機輸出

DL=輸出字符

 

06

直接控制台I/O

DL=FF(輸入)
DL=字符(輸出)

AL=輸入字符

07

鍵盤輸入(無回顯)

 

AL=輸入字符

08

鍵盤輸入(無回顯)
檢測Ctrl-Break

 

AL=輸入字符

09

顯示字符串

DS:DX=串地址
'$'結束字符串

 

0A

鍵盤輸入到緩沖區

DS:DX=緩沖區首地址
(DS:DX)=緩沖區最大字符數

(DS:DX+1)=實際輸入的字符數

0B

檢驗鍵盤狀態

 

AL=00 有輸入
AL=FF 無輸入

0C

清除輸入緩沖區並
請求指定的輸入功能

AL=輸入功能號
(1,6,7,8,A)

 

0D

磁盤復位

 

清除文件緩沖區

0E

指定當前缺省的磁盤驅動器

DL=驅動器號 0=A,1=B,...

AL=驅動器數

0F

打開文件

DS:DX=FCB首地址

AL=00 文件找到
AL=FF 文件未找到

10

關閉文件

DS:DX=FCB首地址

AL=00 目錄修改成功
AL=FF 目錄中未找到文件

11

查找第一個目錄項

DS:DX=FCB首地址

AL=00 找到
AL=FF 未找到

12

查找下一個目錄項

DS:DX=FCB首地址
(文件中帶有*或?)

AL=00 找到
AL=FF 未找到

13

刪除文件

DS:DX=FCB首地址

AL=00 刪除成功
AL=FF 未找到

14

順序讀

DS:DX=FCB首地址

AL=00 讀成功
  =01 文件結束,記錄中無數據
  =02 DTA空間不夠
  =03 文件結束,記錄不完整

15

順序寫

DS:DX=FCB首地址

AL=00 寫成功
  =01 盤滿
  =02 DTA空間不夠

16

建文件

DS:DX=FCB首地址

AL=00 建立成功
  =FF 無磁盤空間

17

文件改名

DS:DX=FCB首地址
(DS:DX+1)=舊文件名
(DS:DX+17)=新文件名

AL=00 成功
AL=FF 未成功

19

取當前缺省磁盤驅動器

 

AL=缺省的驅動器號 0=A,1=B,2=C,...

1A

置DTA地址

DS:DX=DTA地址

 

1B

取缺省驅動器FAT信息

 

AL=每簇的扇區數
DS:BX=FAT標識字節
CX=物理扇區大小
DX=缺省驅動器的簇數

1C

取任一驅動器FAT信息

DL=驅動器號

同上

21

隨機讀

DS:DX=FCB首地址

AL=00 讀成功
  =01 文件結束
  =02 緩沖區溢出
  =03 緩沖區不滿

22

隨機寫

DS:DX=FCB首地址

AL=00 寫成功
  =01 盤滿
  =02 緩沖區溢出

23

測定文件大小

DS:DX=FCB首地址

AL=00 成功(文件長度填入FCB)
AL=FF 未找到

24

設置隨機記錄號

DS:DX=FCB首地址

 

25

設置中斷向量

DS:DX=中斷向量
AL=中斷類型號

 

26

建立程序段前綴

DX=新的程序段前綴

 

27

隨機分塊讀

DS:DX=FCB首地址
CX=記錄數

AL=00 讀成功
  =01 文件結束
  =02 緩沖區太小,傳輸結束
  =03 緩沖區不滿

28

隨機分塊寫

DS:DX=FCB首地址
CX=記錄數

AL=00 寫成功
  =01 盤滿
  =02 緩沖區溢出

29

分析文件名

ES:DI=FCB首地址
DS:SI=ASCIIZ串
AL=控制分析標志

AL=00 標准文件
  =01 多義文件
  =02 非法盤符

2A

取日期

 

CX=年
DH:DL=月:日(二進制)

2B

設置日期

CX:DH:DL=年:月:日

AL=00 成功
  =FF 無效

2C

取時間

 

CH:CL=時:分
DH:DL=秒:1/100秒

2D

設置時間

CH:CL=時:分
DH:DL=秒:1/100秒

AL=00 成功
  =FF 無效

2E

置磁盤自動讀寫標志

AL=00 關閉標志
AL=01 打開標志

 

2F

取磁盤緩沖區的首址

 

ES:BX=緩沖區首址

30

取DOS版本號

 

AH=發行號,AL=版本

31

結束並駐留

AL=返回碼
DX=駐留區大小

 

33

Ctrl-Break檢測

AL=00 取狀態
  =01 置狀態(DL)
DL=00 關閉檢測
  =01 打開檢測

DL=00 關閉Ctrl-Break檢測
  =01 打開Ctrl-Break檢測

35

取中斷向量

AL=中斷類型

ES:BX=中斷向量

36


取空閑磁盤空間


DL=驅動器號 0=缺省,1=A,2=B,...

成功:AX=每簇扇區數
     BX=有效簇數
     CX=每扇區字節數
     DX=總簇數
失敗:AX=FFFF

38

置/取國家信息

DS:DX=信息區首地址

BX=國家碼(國際電話前綴碼)
AX=錯誤碼

39

建立子目錄(MKDIR)

DS:DX=ASCIIZ串地址

AX=錯誤碼

3A

刪除子目錄(RMDIR)

DS:DX=ASCIIZ串地址

AX=錯誤碼

3B

改變當前目錄(CHDIR)

DS:DX=ASCIIZ串地址

AX=錯誤碼

3C

建立文件

DS:DX=ASCIIZ串地址
CX=文件屬性

成功:AX=文件代號
錯誤:AX=錯誤碼

3D

打開文件

DS:DX=ASCIIZ串地址
AL=0 讀
  =1 寫
  =3 讀/寫

成功:AX=文件代號
錯誤:AX=錯誤碼

3E

關閉文件

BX=文件代號

失敗:AX=錯誤碼

3F

讀文件或設備

DS:DX=數據緩沖區地址
BX=文件代號
CX=讀取的字節數

讀成功:
  AX=實際讀入的字節數
  AX=0 已到文件尾
讀出錯:AX=錯誤碼

40

寫文件或設備

DS:DX=數據緩沖區地址
BX=文件代號
CX=寫入的字節數

寫成功:
  AX=實際寫入的字節數
寫出錯:AX=錯誤碼

41

刪除文件

DS:DX=ASCIIZ串地址

成功:AX=00
出錯:AX=錯誤碼(2,5)

42


移動文件指針


BX=文件代號
CX:DX=位移量
AL=移動方式(0:從文件頭絕對位移,1:從當前位置相對移動,2:從文件尾絕對位移)

成功:DX:AX=新文件指針位置
出錯:AX=錯誤碼

43

置/取文件屬性

DS:DX=ASCIIZ串地址
AL=0 取文件屬性
AL=1 置文件屬性
CX=文件屬性

成功:CX=文件屬性
失敗:CX=錯誤碼

44




設備文件I/O控制




BX=文件代號
AL=0 取狀態
  =1 置狀態DX
  =2 讀數據
  =3 寫數據
  =6 取輸入狀態
  =7 取輸出狀態

DX=設備信息




45

復制文件代號

BX=文件代號1

成功:AX=文件代號2
失敗:AX=錯誤碼

46

人工復制文件代號

BX=文件代號1
CX=文件代號2

失敗:AX=錯誤碼

47

取當前目錄路徑名

DL=驅動器號
DS:SI=ASCIIZ串地址

(DS:SI)=ASCIIZ串
失敗:AX=出錯碼

48

分配內存空間

BX=申請內存容量

成功:AX=分配內存首地
失敗:BX=最大可用內存

49

釋放內容空間

ES=內存起始段地址

失敗:AX=錯誤碼

4A

調整已分配的存儲塊

ES=原內存起始地址
BX=再申請的容量

失敗:BX=最大可用空間
     AX=錯誤碼

4B

裝配/執行程序

DS:DX=ASCIIZ串地址
ES:BX=參數區首地址
AL=0 裝入執行
AL=3 裝入不執行

失敗:AX=錯誤碼

4C

帶返回碼結束

AL=返回碼

 

4D

取返回代碼

 

AX=返回代碼

4E

查找第一個匹配文件

DS:DX=ASCIIZ串地址
CX=屬性

AX=出錯代碼(02,18)

4F

查找下一個匹配文件

DS:DX=ASCIIZ串地址
(文件名中帶有?或*)

AX=出錯代碼(18)

54

取盤自動讀寫標志

 

AL=當前標志值

56

文件改名

DS:DX=ASCIIZ串(舊)
ES:DI=ASCIIZ串(新)

AX=出錯碼(03,05,17)

57

置/取文件日期和時間

BX=文件代號
AL=0 讀取
AL=1 設置(DX:CX)

DX:CX=日期和時間
失敗:AX=錯誤碼

58

取/置分配策略碼

AL=0 取碼
AL=1 置碼(BX)

成功:AX=策略碼
失敗:AX=錯誤碼

59

取擴充錯誤碼

 

AX=擴充錯誤碼
BH=錯誤類型
BL=建議的操作
CH=錯誤場所

5A

建立臨時文件

CX=文件屬性
DS:DX=ASCIIZ串地址

成功:AX=文件代號
失敗:AX=錯誤碼

5B

建立新文件

CX=文件屬性
DS:DX=ASCIIZ串地址

成功:AX=文件代號
失敗:AX=錯誤碼

5C


控制文件存取


AL=00封鎖  =01開啟
BX=文件代號
CX:DX=文件位移
SI:DI=文件長度

失敗:AX=錯誤碼


62

取程序段前綴

 

BX=PSP地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM