《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 解決方案 > INT 21H 指令說(shuō)明及使用方法

INT 21H 指令說(shuō)明及使用方法

2017-07-23
關(guān)鍵詞: 匯編語(yǔ)言

很多初學(xué)匯編語(yǔ)言的同學(xué)可能會(huì)對(duì)INT 21H這條指令感到困惑,不知道是什么意思,下面就以一段簡(jiǎn)單的程序?yàn)榇蠹抑v解:

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

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

指令:MOV AH,01

     INT 21H

通過這樣兩條指令,輸入的字符就會(huì)被存儲(chǔ)在AL中。

 

表:DOS系統(tǒng)功能調(diào)INT 21H


AH

   

功能

   

調(diào)用參數(shù)

   

返回參數(shù)

   



00

   

程序終止(同INT 20H)

   

CS=程序段前綴

   



01

   

鍵盤輸入并回顯

   

AL=輸入字符

   



02

   

顯示輸出

   

DL=輸出字符

   



03

   

異步通迅輸入

   

AL=輸入數(shù)據(jù)

   



04

   

異步通迅輸出

   

DL=輸出數(shù)據(jù)

   



05

   

打印機(jī)輸出

   

DL=輸出字符

   



06

   

直接控制臺(tái)I/O

   

DL=FF(輸入)
DL=字符(輸出)

   

AL=輸入字符

   



07

   

鍵盤輸入(無(wú)回顯)

   

AL=輸入字符

   



08

   

鍵盤輸入(無(wú)回顯)
檢測(cè)Ctrl-Break

   

AL=輸入字符

   



09

   

顯示字符串

   

DS:DX=串地址
'$'結(jié)束字符串

   



0A

   

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

   

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

   

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

   



0B

   

檢驗(yàn)鍵盤狀態(tài)

   

AL=00 有輸入
AL=FF 無(wú)輸入

   



0C

   

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

   

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

   



0D

   

磁盤復(fù)位

   

清除文件緩沖區(qū)

   



0E

   

指定當(dāng)前缺省的磁盤驅(qū)動(dòng)器

   

DL=驅(qū)動(dòng)器號(hào) 0=A,1=B,...

   

AL=驅(qū)動(dòng)器數(shù)

   



0F

   

打開文件

   

DS:DX=FCB首地址

   

AL=00 文件找到
AL=FF 文件未找到

   



10

   

關(guān)閉文件

   

DS:DX=FCB首地址

   

AL=00 目錄修改成功
AL=FF 目錄中未找到文件

   



11

   

查找第一個(gè)目錄項(xiàng)

   

DS:DX=FCB首地址

   

AL=00 找到
AL=FF 未找到

   



12

   

查找下一個(gè)目錄項(xiàng)

   

DS:DX=FCB首地址
(文件中帶有*或?)

   

AL=00 找到
AL=FF 未找到

   



13

   

刪除文件

   

DS:DX=FCB首地址

   

AL=00 刪除成功
AL=FF 未找到

   



14

   

順序讀

   

DS:DX=FCB首地址

   

AL=00 讀成功
  =01 文件結(jié)束,記錄中無(wú)數(shù)據(jù)
  =02 DTA空間不夠
  =03 文件結(jié)束,記錄不完整

   



15

   

順序?qū)?/p>

   

DS:DX=FCB首地址

   

AL=00 寫成功
  =01 盤滿
  =02 DTA空間不夠

   



16

   

建文件

   

DS:DX=FCB首地址

   

AL=00 建立成功
  =FF 無(wú)磁盤空間

   



17

   

文件改名

   

DS:DX=FCB首地址
(DS:DX+1)=舊文件名
(DS:DX+17)=新文件名

   

AL=00 成功
AL=FF 未成功

   



19

   

取當(dāng)前缺省磁盤驅(qū)動(dòng)器

   

AL=缺省的驅(qū)動(dòng)器號(hào) 0=A,1=B,2=C,...

   



1A

   

置DTA地址

   

DS:DX=DTA地址

   



1B

   

取缺省驅(qū)動(dòng)器FAT信息

   

AL=每簇的扇區(qū)數(shù)
DS:BX=FAT標(biāo)識(shí)字節(jié)
CX=物理扇區(qū)大小
DX=缺省驅(qū)動(dòng)器的簇?cái)?shù)

   



1C

   

取任一驅(qū)動(dòng)器FAT信息

   

DL=驅(qū)動(dòng)器號(hào)

   

同上

   



21

   

隨機(jī)讀

   

DS:DX=FCB首地址

   

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

   



22

   

隨機(jī)寫

   

DS:DX=FCB首地址

   

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

   



23

   

測(cè)定文件大小

   

DS:DX=FCB首地址

   

AL=00 成功(文件長(zhǎng)度填入FCB)
AL=FF 未找到

   



24

   

設(shè)置隨機(jī)記錄號(hào)

   

DS:DX=FCB首地址

   



25

   

設(shè)置中斷向量

   

DS:DX=中斷向量
AL=中斷類型號(hào)

   



26

   

建立程序段前綴

   

DX=新的程序段前綴

   



27

   

隨機(jī)分塊讀

   

DS:DX=FCB首地址
CX=記錄數(shù)

   

AL=00 讀成功
  =01 文件結(jié)束
  =02 緩沖區(qū)太小,傳輸結(jié)束
  =03 緩沖區(qū)不滿

   



28

   

隨機(jī)分塊寫

   

DS:DX=FCB首地址
CX=記錄數(shù)

   

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

   



29

   

分析文件名

   

ES:DI=FCB首地址
DS:SI=ASCIIZ串
AL=控制分析標(biāo)志

   

AL=00 標(biāo)準(zhǔn)文件
  =01 多義文件
  =02 非法盤符

   



2A

   

取日期

   

CX=年
DH:DL=月:日(二進(jìn)制)

   



2B

   

設(shè)置日期

   

CX:DH:DL=年:月:日

   

AL=00 成功
  =FF 無(wú)效

   



2C

   

取時(shí)間

   

CH:CL=時(shí):分
DH:DL=秒:1/100秒

   



2D

   

設(shè)置時(shí)間

   

CH:CL=時(shí):分
DH:DL=秒:1/100秒

   

AL=00 成功
  =FF 無(wú)效

   



2E

   

置磁盤自動(dòng)讀寫標(biāo)志

   

AL=00 關(guān)閉標(biāo)志
AL=01 打開標(biāo)志

   



2F

   

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

   

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

   



30

   

取DOS版本號(hào)

   

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

   



31

   

結(jié)束并駐留

   

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

   



33

   

Ctrl-Break檢測(cè)

   

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

   

DL=00 關(guān)閉Ctrl-Break檢測(cè)
  =01 打開Ctrl-Break檢測(cè)

   



35

   

取中斷向量

   

AL=中斷類型

   

ES:BX=中斷向量

   



36


   

取空閑磁盤空間


   

DL=驅(qū)動(dòng)器號(hào) 
0=缺省,1=A,2=B,...

   

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

   



38

   

置/取國(guó)家信息

   

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

   

BX=國(guó)家碼(國(guó)際電話前綴碼)
AX=錯(cuò)誤碼

   



39

   

建立子目錄(MKDIR)

   

DS:DX=ASCIIZ串地址

   

AX=錯(cuò)誤碼

   



3A

   

刪除子目錄(RMDIR)

   

DS:DX=ASCIIZ串地址

   

AX=錯(cuò)誤碼

   



3B

   

改變當(dāng)前目錄(CHDIR)

   

DS:DX=ASCIIZ串地址

   

AX=錯(cuò)誤碼

   



3C

   

建立文件

   

DS:DX=ASCIIZ串地址
CX=文件屬性

   

成功:AX=文件代號(hào)
錯(cuò)誤:AX=錯(cuò)誤碼

   



3D

   

打開文件

   

DS:DX=ASCIIZ串地址
AL=0 讀
  =1 寫
  =3 讀/寫

   

成功:AX=文件代號(hào)
錯(cuò)誤:AX=錯(cuò)誤碼

   



3E

   

關(guān)閉文件

   

BX=文件代號(hào)

   

失敗:AX=錯(cuò)誤碼

   



3F

   

讀文件或設(shè)備

   

DS:DX=數(shù)據(jù)緩沖區(qū)地址
BX=文件代號(hào)
CX=讀取的字節(jié)數(shù)

   

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

   



40

   

寫文件或設(shè)備

   

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

   

寫成功:
  AX=實(shí)際寫入的字節(jié)數(shù)
寫出錯(cuò):AX=錯(cuò)誤碼

   



41

   

刪除文件

   

DS:DX=ASCIIZ串地址

   

成功:AX=00
出錯(cuò):AX=錯(cuò)誤碼(2,5)

   



42


   

移動(dòng)文件指針


   

BX=文件代號(hào)
CX:DX=位移量
AL=移動(dòng)方式(0:從文件頭絕對(duì)位移,1:從當(dāng)前位置相對(duì)移動(dòng),2:從文件尾絕對(duì)位移)

   

成功:DX:AX=新文件指針位置
出錯(cuò):AX=錯(cuò)誤碼

   



43

   

置/取文件屬性

   

DS:DX=ASCIIZ串地址
AL=0 取文件屬性
AL=1 置文件屬性
CX=文件屬性

   

成功:CX=文件屬性
失敗:CX=錯(cuò)誤碼

   



44




   

設(shè)備文件I/O控制




   

BX=文件代號(hào)
AL=0 取狀態(tài)
  =1 置狀態(tài)DX
  =2 讀數(shù)據(jù)
  =3 寫數(shù)據(jù)
  =6 取輸入狀態(tài)
  =7 取輸出狀態(tài)

   

DX=設(shè)備信息




   



45

   

復(fù)制文件代號(hào)

   

BX=文件代號(hào)1

   

成功:AX=文件代號(hào)2
失敗:AX=錯(cuò)誤碼

   



46

   

人工復(fù)制文件代號(hào)

   

BX=文件代號(hào)1
CX=文件代號(hào)2

   

失敗:AX=錯(cuò)誤碼

   



47

   

取當(dāng)前目錄路徑名

   

DL=驅(qū)動(dòng)器號(hào)
DS:SI=ASCIIZ串地址

   

(DS:SI)=ASCIIZ串
失敗:AX=出錯(cuò)碼

   



48

   

分配內(nèi)存空間

   

BX=申請(qǐng)內(nèi)存容量

   

成功:AX=分配內(nèi)存首地
失敗:BX=最大可用內(nèi)存

   



49

   

釋放內(nèi)容空間

   

ES=內(nèi)存起始段地址

   

失敗:AX=錯(cuò)誤碼

   



4A

   

調(diào)整已分配的存儲(chǔ)塊

   

ES=原內(nèi)存起始地址
BX=再申請(qǐng)的容量

   

失敗:BX=最大可用空間
     AX=錯(cuò)誤碼

   



4B

   

裝配/執(zhí)行程序

   

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

   

失敗:AX=錯(cuò)誤碼

   



4C

   

帶返回碼結(jié)束

   

AL=返回碼

   



4D

   

取返回代碼

   

AX=返回代碼

   



4E

   

查找第一個(gè)匹配文件

   

DS:DX=ASCIIZ串地址
CX=屬性

   

AX=出錯(cuò)代碼(02,18)

   



4F

   

查找下一個(gè)匹配文件

   

DS:DX=ASCIIZ串地址
(文件名中帶有?或*)

   

AX=出錯(cuò)代碼(18)

   



54

   

取盤自動(dòng)讀寫標(biāo)志

   

AL=當(dāng)前標(biāo)志值

   



56

   

文件改名

   

DS:DX=ASCIIZ串(舊)
ES:DI=ASCIIZ串(新)

   

AX=出錯(cuò)碼(03,05,17)

   



57

   

置/取文件日期和時(shí)間

   

BX=文件代號(hào)
AL=0 讀取
AL=1 設(shè)置(DX:CX)

   

DX:CX=日期和時(shí)間
失敗:AX=錯(cuò)誤碼

   



58

   

取/置分配策略碼

   

AL=0 取碼
AL=1 置碼(BX)

   

成功:AX=策略碼
失敗:AX=錯(cuò)誤碼

   



59

   

取擴(kuò)充錯(cuò)誤碼

   

AX=擴(kuò)充錯(cuò)誤碼
BH=錯(cuò)誤類型
BL=建議的操作
CH=錯(cuò)誤場(chǎng)所

   



5A

   

建立臨時(shí)文件

   

CX=文件屬性
DS:DX=ASCIIZ串地址

   

成功:AX=文件代號(hào)
失敗:AX=錯(cuò)誤碼

   



5B

   

建立新文件

   

CX=文件屬性
DS:DX=ASCIIZ串地址

   

成功:AX=文件代號(hào)
失敗:AX=錯(cuò)誤碼

   



5C


   

控制文件存取


   

AL=00封鎖
  =01開啟
BX=文件代號(hào)
CX:DX=文件位移
SI:DI=文件長(zhǎng)度

   

失敗:AX=錯(cuò)誤碼


   



62

   

取程序段前綴

   

BX=PSP地址

   



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