《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > INT 21H 指令說明及使用方法

INT 21H 指令說明及使用方法

2017-07-23
關鍵詞: 匯編語言

很多初學匯編語言的同學可能會對INT 21H這條指令感到困惑,,不知道是什么意思,,下面就以一段簡單的程序為大家講解:

例如:需要鍵盤輸入,,并且回顯,。

AH的值需要查表取得,表在下面

指令:MOV AH,01

     INT 21H

通過這樣兩條指令,,輸入的字符就會被存儲在AL中,。

 

表:DOS系統(tǒng)功能調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

   

鍵盤輸入到緩沖區(qū)

   

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

   

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

   



0B

   

檢驗鍵盤狀態(tài)

   

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

   



0C

   

清除輸入緩沖區(qū)并
請求指定的輸入功能

   

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

   



0D

   

磁盤復位

   

清除文件緩沖區(qū)

   



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=每簇的扇區(qū)數
DS:BX=FAT標識字節(jié)
CX=物理扇區(qū)大小
DX=缺省驅動器的簇數

   



1C

   

取任一驅動器FAT信息

   

DL=驅動器號

   

同上

   



21

   

隨機讀

   

DS:DX=FCB首地址

   

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

   



22

   

隨機寫

   

DS:DX=FCB首地址

   

AL=00 寫成功
  =01 盤滿
  =02 緩沖區(qū)溢出

   



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 緩沖區(qū)太小,傳輸結束
  =03 緩沖區(qū)不滿

   



28

   

隨機分塊寫

   

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

   

AL=00 寫成功
  =01 盤滿
  =02 緩沖區(qū)溢出

   



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

   

取磁盤緩沖區(qū)的首址

   

ES:BX=緩沖區(qū)首址

   



30

   

取DOS版本號

   

AH=發(fā)行號,AL=版本

   



31

   

結束并駐留

   

AL=返回碼
DX=駐留區(qū)大小

   



33

   

Ctrl-Break檢測

   

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

   

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

   



35

   

取中斷向量

   

AL=中斷類型

   

ES:BX=中斷向量

   



36


   

取空閑磁盤空間


   

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

   

成功:AX=每簇扇區(qū)數
     BX=有效簇數
     CX=每扇區(qū)字節(jié)數
     DX=總簇數
失敗:AX=FFFF

   



38

   

置/取國家信息

   

DS:DX=信息區(qū)首地址

   

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=數據緩沖區(qū)地址
BX=文件代號
CX=讀取的字節(jié)數

   

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

   



40

   

寫文件或設備

   

DS:DX=數據緩沖區(qū)地址
BX=文件代號
CX=寫入的字節(jié)數

   

寫成功:
  AX=實際寫入的字節(jié)數
寫出錯: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 取狀態(tài)
  =1 置狀態(tài)DX
  =2 讀數據
  =3 寫數據
  =6 取輸入狀態(tài)
  =7 取輸出狀態(tài)

   

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

   

裝配/執(zhí)行程序

   

DS:DX=ASCIIZ串地址
ES:BX=參數區(qū)首地址
AL=0 裝入執(zhí)行
AL=3 裝入不執(zhí)行

   

失敗: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地址

   



本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,,并不代表本網站贊同其觀點,。轉載的所有的文章、圖片,、音/視頻文件等資料的版權歸版權所有權人所有,。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容,、版權和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118,;郵箱:[email protected],。