80x86DOS功能調用【轉】

DOS系統功能調用方式如:

  1.置入口參數;
  2.將子程序編號送入AH寄存器;
  3.執行中斷指令:INT 21H。
  有的子程序不需入口參數,但大部分需要將參數送入指定地點。程序員只須給出這三個方面的信息,不必關心具體程序如何,在內存中的存放地址如何,DOS根據所給的信息,自動轉入相應的子程序去執行。調用結束後有出口參數時一般在寄存器中,有些子程序調用結束時會在屏幕上看到結果。
  DOS系統功能調用所提供的子程序,按其功能分類可分爲以下六組:
1.字符I/O管理 
  編號:01H到0CH,管理顯示器、鍵盤、打印機及異步通訊接口的字符輸入輸出。 
2.傳統的文件管理 
 編號:0DH到24H,27H到29H,管理磁盤,包括打開關閉文件、查找目錄、刪除文件、建立文件、重新命名文件、順序讀寫文件、隨機讀寫文件等功能。 
3.擴充的文件管理 
  編號:39H到3BH,47H,管理目錄,包括建立子目錄,修改當前目錄,刪除目錄,取當前目錄等功能。 
  編號:3CH到46H,管理文件,包括建立、打開、關閉文件,從文件或設備讀寫數據,在指定的目錄裏刪除文件、修改文件屬性等。
4.內存管理 
  編號:48H到4H,管理內存,包括分配內存,釋放已分配的內存,執行程序等。
5.作業管理 
  編號:00H退出用戶程序並返回操作系統 
  26H建立一個程序段  
  31H終止用戶程序並駐留在內存 
  4BH裝入一個程序 
  4CH終止當前程序並返回操作系統  
  4DH取子進程的返回代碼 
6.其他資源管理
  編號:25H,35H,置中斷向量和取中斷向量
  2AH,2BH,取日期和設置日期
  2CH,2DH,取時間和設置時間
  30H,38H,取DOS版本號及國別信息其它爲用於處理樹形目錄結構的擴充

  的文件管理系統調用和用於DOS內部的擴充的系統調用。
常用的DOS系統功能調用使用說明
1、00H號調用 終止程序,返回使用DOS (一般常用4CH)
(1)調用方式:AH←00H(調用號) 
  INT 21H 
(2)說明: 
  1)完成終止當前程序執行返回到操作系統狀態。 
  2)同時將關閉所有文件並刷新所有文件緩衝區。 

  3)完成與INT 20H相同的操作。

2、01H號調用 讀取鍵盤字符並回顯
(1)調用方式:AH←01H(調用號) 
  INT 21H
(2)說明: 
  1)執行該功能調用首先掃描鍵盤,等待按鍵。 
  2)若有鍵按下,則檢查所按鍵碼。 
  3)當按CTRL-BREAK鍵瞬時,則推出命令執行。 
  4)當爲其它鍵時,則將對應ACSII碼送AL寄存器,同時送顯示器顯示。
3、02H號調用 顯示字符 
 1)調用方式:DL←要輸出顯示的ACSII字符代碼 
  AH←02H(調用號)

  INT 21H
(2)說明: 
 1)完成從標準輸出設備顯示器上輸出顯示一個字符。 

 2)在顯示一個字符後檢查該字符是否是CTRL-BREAK。若是,則推出命令執行。

4、03H號調用異步通訊口輸入 
(1)調用方式:AH←03H(調用號) 
  INT 21H

(2)說明: 
 1)完成從標準異步通訊接口(COM1)等待輸入一個字符。 
 2)將輸入的字符取到寄存器AL中。 
 3)DOS把一個異步通訊口端口COM1初始化爲2400波特,無校驗位,一個停止位和8個數據位。

5、04H號調用 異步通訊口輸出
(1)調用方式:DL←要輸出的ACSII字符 
  AH←04H(調用號) 
  INT 21H
(2)說明: 
 1)完成從標準異步通訊接口(COM1)等待輸出一個字符。 
 2)關於異步通訊口的輸入輸出操作,建議使用ROM BIOS中斷調用14H。6.05H調用 打印輸出
1)調用方式: DL←要打印輸出的字符 
  AH←05H(調用號) 
  INT 21H

(2)說明: 

 1)向標準打印設備(PRN或LPT1)打印輸出一個字符。 
 2)該功能調用所瓦斯年成的功能同02H號調用(顯示一字符),只是輸出的設備不同。
7.06H號調用 直接控制檯I/O
(1)調用方式:DL←字節常數 
  AH←06H(調用號) 
  INT 21H
(2)說明: 
1)該功能調用可以完成從標準輸入設備鍵盤輸入字符,也可以完成向標準輸出設備顯示器輸出字符。 
2)當DL=FFH時,表示從鍵盤輸入字符。
若標誌位ZF=0,表示AL中爲鍵入的字符值。
若標誌位ZF=1,表示AL中不是鍵入字符值,既無鍵按入。
當DL FFH時,表示向顯示器輸出,此時DL中應存放輸出字符的ASCII碼值。
3)該功能調用不檢查字符是否爲CTRL—BREAK鍵。
例如:

CODE:
  MOV DL,O66H 
  MOV AH,06H 
  INT 21H
表示完成從鍵盤輸入字符,當有鍵按下時,AL中既爲鍵入字符的ASCII碼值

CODE:

  MOV DL,41H 
  MOV AH,06H 
  INT 21H
表示完成將DL中41H所對應的字符“A”在屏幕上顯示。
8.07H號調用 直接控制檯輸入且不回顯。

(1)調用方式:AH←07H(調用號) 
  INT←21H 
(2)說明: 
  該功能調用完成從標準輸入設備鍵盤輸入字符送AL,與01H調用相比有兩點不同:一是不回顯字符;二是對鍵入字符不作CTRL-BREAK檢查。
9.08H號調用 直接控制檯輸入且不回顯。
(1)調用方式:AH←08H(調用號) 
  INT←21H
(2)說明: 
  該功能調用完成從標準輸入設備鍵盤輸入字符送AL,與01H調用相比只有一點不同,不回顯字符。比07H號調用多一個對鍵入字符要作CTRL-BREAK檢查和處理的功能。
10.09H號調用 字符串輸出顯示
(1)調用方式:DS:DX←要輸出顯示的字符串的首地址 
  AH←09H(調用號) 
  INT 21H
(2)說明: 
1)該功能調用完成在標準輸出設備顯示器上輸出顯示一字符串,字符串必須以字符“$”(24H)爲結束標誌。但“$”字符不顯示。

2)該功能調用完成顯示字符後作CTRL-BREAK檢查和處理。  
11.0AH號調用 字符串輸入
(1)調用方式:DS:DX←從鍵盤接收字符的輸入緩衝區首址 
  AH←0AH(調用號) 
  INT 21H
(2)說明: 
1)該功能調用完成從鍵盤接收字符串存到指定內存的輸入緩衝區,直到輸入回車符時爲止。 
2)緩衝區的第一個字節爲指定緩衝區能接收的字符的個數,緩衝區的第二個字節保留以用作填寫實際輸入字符的個數,緩衝區的第三個字節開始存放從鍵盤上輸入的字符。 
3)若實際輸入的字符數少於定義的字節數,則緩衝區內其餘字節補零。若實際輸入多於定義的字節數,則多餘字符丟棄,且響鈴。

以上就是DOS功能調用的常用的部分。
利用02號系統功能調用完成輸出顯示一串字符信息。

CODE:

CODE SEGMENT 
  ASSUME CS:CODE,DS:CODE 
  ORG 100H 
  START: JMP BEGIN 
  MSG DB 'This message was displayed with dos function 02H' 
  MSGLEN EQU $ - MSG 
  BEGIN: MOV AX,CODE 
  MOV DS,AX ;設置段地址 
  MOV CX,MSGLEN ;取顯示字符串信息的長度 
  MOV S1,0  
  MOV AH,02H ;02H號調用一次顯示一個字符 
  NEXT: MOV DL,MSG[SI] ;DL←取輸出顯示的字符 
  INT 21H 
  INC SI ;修改字符地址 
  LOOP NEXT ;重複執行02H系統功能調用 
  MOV AH,4CH ;字符串顯示完後,執行4CH調用 
  INT 21H ;返回DOS 
  CODE ENDS 
  END START

採用09H號功能調用,輸出顯示指定的字符串。

CODE:

CODE SEGMENT 
  ASSUME CS:CODE,DS:CODE 
  START: JMP BEGIN 
  STRING DB 'Hello,How are you!','$'  
  BEGIN: MOV AX,CODE 
  MOV DS,AX ;DS←輸出字符串段地
  LEA DX,STRING ;DX←輸出字符串偏移
  MOV AH,09H ;9號功能調用 
  INT 21H ;完成輸出顯示:Hello, ;How are you! 
  MOV AH,4CH 
  INT 21H 
  CODE ENDS 
  END START

發佈了26 篇原創文章 · 獲贊 9 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章