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

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

2017-07-23
關鍵詞: 汇编语言

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

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

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

指令:MOV AH,01

     INT 21H

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

 

表:DOS系統功能調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

   

鍵盤輸入到緩沖區

   

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

   



本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 日韩欧美精品在线观看视频| 久久久久久九九| 欧美中文字幕在线观看视频| 国产女精品视频网站免费| 国产精品久久久久久久久婷婷| 精品国偷自产一区二区三区| 精品免费国产| 国产剧情日韩欧美| 国产精品久久久久久久久久| 国产精品福利视频| 久久久久久91| 欧美日韩精品免费观看视一区二区| 国产国产精品人在线视| 国产精品日日做人人爱| 免费在线观看一区二区| 久久久久久久电影一区| 国产精品福利在线| 高清国产一区| 国产激情视频一区| 久久久久五月天| 国产一区深夜福利| 综合久久国产| 日韩中文字幕亚洲| 青青精品视频播放| 国产欧美日韩免费看aⅴ视频| 国产日产久久高清欧美一区| 精品国内产的精品视频在线观看| 一区二区视频国产| 久久久久久久电影一区| 亚洲色欲久久久综合网东京热| 亚洲精品日韩激情在线电影| 伊人久久大香线蕉精品| 欧美尤物巨大精品爽| 水蜜桃亚洲精品| 久久视频在线免费观看| 91久久久久久久久| 久久久久久亚洲| 777精品久无码人妻蜜桃| 国产欧美日韩最新| 亚洲欧洲国产日韩精品| 国产精品麻豆免费版|