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

源地址:http://blog.csdn.net/chinazeze/article/details/1735621

注:用於彙編中調用dos的指令:

mov ah,n   ;這的n可用下表用AH列的值代替

int 21H      ;進入dos


AH

功能

調用參數

返回參數

00

程序終止(INT 20H)

CS=程序段前綴

01

鍵盤輸入並回顯

AL=輸入字符

02

顯示輸出

DL=輸出字符

03

異步通迅輸入(從COM口讀入到AL)

AL=輸入數據

04

異步通迅輸出(從DL輸出到COM口)

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地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章