DOS功能調用
作者: 來源:互連網
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地址
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/chinazeze/archive/2007/08/10/1735621.aspx