中斷INT 21H

int 21h -- dos功能調用 
含有近100個功能,提供了應用程序所需要的大多數服務,包括打開文件、關閉文件、讀文件、寫文件、讀鍵盤輸入、寫顯示屏、讀取或設置系統日期和時間,以及一大堆控制變量。
通過給AH寄存器賦值,然後調用INT 21H指令,計算機就會根據AH寄存器中的值執行相應的操作
給AH寄存器賦值效果如下

 

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

 

 http://blog.csdn.net/chinazeze/archive/2007/08/10/1735621.aspx

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