lec10控制臺輸入輸出_第1頁
lec10控制臺輸入輸出_第2頁
lec10控制臺輸入輸出_第3頁
lec10控制臺輸入輸出_第4頁
lec10控制臺輸入輸出_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第 10 講講 控制臺輸入輸出控制臺輸入輸出顯示器顯示器 I/O鍵盤鍵盤 I/O 大多數(shù)的程序,都有一個大多數(shù)的程序,都有一個“人機人機”交互交互的過程,的過程,也就是說,從也就是說,從鍵盤鍵盤上輸入程序所需要的控制信息和數(shù)據(jù),上輸入程序所需要的控制信息和數(shù)據(jù),把程序的運行結(jié)果和運行狀態(tài)向把程序的運行結(jié)果和運行狀態(tài)向顯示器顯示器輸出。輸出。 交互使用的鍵盤稱為交互使用的鍵盤稱為“標(biāo)準(zhǔn)輸入設(shè)備標(biāo)準(zhǔn)輸入設(shè)備”,顯示器稱為,顯示器稱為“標(biāo)準(zhǔn)輸出設(shè)備標(biāo)準(zhǔn)輸出設(shè)備”,合稱為,合稱為“控制臺控制臺(Console)”。n匯編程序提供給匯編語言程序員的功能非常有限匯編程序提供給匯編語言程序員的功能非常有限

2、n程序員可利用程序員可利用ROM-BIOS和和操作系統(tǒng)操作系統(tǒng)提供的系統(tǒng)功能提供的系統(tǒng)功能n系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用是程序設(shè)計的一個重要方面是程序設(shè)計的一個重要方面裸機裸機匯編語言程序系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用nDOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用qDOS利用利用21H號中斷號中斷提供給用戶近百個系統(tǒng)功能,主要包括設(shè)提供給用戶近百個系統(tǒng)功能,主要包括設(shè)備管理、目錄管理和文件管理三個方面的功能備管理、目錄管理和文件管理三個方面的功能n書書附錄附錄F中列出了主要的中列出了主要的DOS功能調(diào)用的使用解釋功能調(diào)用的使用解釋nROM-BIOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用qROM-BIOSROM-BIOS也以中斷服務(wù)

3、程序的形式,向程序員提供系統(tǒng)的基本輸入也以中斷服務(wù)程序的形式,向程序員提供系統(tǒng)的基本輸入輸出程序輸出程序qROM-BIOSROM-BIOS功能更加基本,且與操作系統(tǒng)無關(guān)功能更加基本,且與操作系統(tǒng)無關(guān)q當(dāng)當(dāng)DOSDOS沒有啟動或不允許使用沒有啟動或不允許使用DOSDOS功能調(diào)用時,可以使用功能調(diào)用時,可以使用ROM-BIOSROM-BIOS功功能調(diào)用能調(diào)用q書書附錄附錄G中列出了主要的中列出了主要的BIOS功能調(diào)用的使用解釋功能調(diào)用的使用解釋 BIOS和和DOS基本調(diào)用基本調(diào)用調(diào)用方法:調(diào)用方法:1. 將將調(diào)用參數(shù)調(diào)用參數(shù)裝入裝入指定的指定的寄存器中;寄存器中;2. BIOS或或DOS功能號功能

4、號裝入裝入AH;3. 如需如需子功能號子功能號,把它裝入,把它裝入AL;4. 按中斷號按中斷號調(diào)用調(diào)用DOS或或BIOS中斷中斷(INT);5. 檢查或取得檢查或取得返回參數(shù)返回參數(shù)。子程序調(diào)用子程序調(diào)用 主程序主程序 CALL SUBP 子程序子程序 RETDOS/BIOS調(diào)用調(diào)用 源程序源程序 INT n DOS/BIOS 例行程序例行程序 IRET1.1.向顯示器輸出信息向顯示器輸出信息 通過通過DOS操作系統(tǒng)的服務(wù)程序(操作系統(tǒng)的服務(wù)程序(INT 21H)輸出;輸出; 通過通過“基本輸入輸出系統(tǒng)(基本輸入輸出系統(tǒng)(BIOS)” 輸出;輸出; 把顯示內(nèi)容(把顯示內(nèi)容(ASCII代碼)直接

5、寫入代碼)直接寫入“顯示存儲器(顯示存儲器(Video RAM,VRAM)”,由顯示器接口電路轉(zhuǎn)換輸出。由顯示器接口電路轉(zhuǎn)換輸出。向顯示器輸出信息有三種方法:向顯示器輸出信息有三種方法:DOS顯示功能調(diào)用顯示功能調(diào)用( AH 功功 能能 調(diào)調(diào) 用用 參參 數(shù)數(shù) 2 顯示一個字符顯示一個字符(檢驗檢驗Ctrl-Break) DL = 字符字符ASCII碼碼 光標(biāo)跟隨字符移動光標(biāo)跟隨字符移動 6 顯示一個字符顯示一個字符(不檢驗不檢驗Ctrl-Break) DL = 字符字符ASCII碼碼 光標(biāo)跟隨字符移動光標(biāo)跟隨字符移動 9 顯示字符串顯示字符串 DS:DX=串地址串地址,光標(biāo)跟隨串移動,光標(biāo)跟

6、隨串移動例例:下面的程序在顯示器上輸出數(shù)字字符:下面的程序在顯示器上輸出數(shù)字字符“9”:MOVAH, 2;功能號功能號02HMOVDL, 39H;字符字符“9”的的ASCII代碼代碼INT21H;調(diào)用調(diào)用21H號系統(tǒng)服務(wù)程序號系統(tǒng)服務(wù)程序 字符字符“9”顯示在顯示在光標(biāo)光標(biāo)(Cursor)位置,光標(biāo)向右移動一個字符位置。位置,光標(biāo)向右移動一個字符位置。 DL 待輸出字符的待輸出字符的ASCII代碼代碼 AH 02H INT 21HX為為DB定義的一個變量,下面的程序能夠輸出定義的一個變量,下面的程序能夠輸出X的值嗎?的值嗎? MOVAH, 2;功能號功能號02H裝入裝入AH寄存器寄存器MOVD

7、L, X;變量變量X的值裝入的值裝入DL寄存器寄存器INT21H;調(diào)用調(diào)用21H號系統(tǒng)服務(wù)程序號系統(tǒng)服務(wù)程序(1)輸出單個字符顯示)輸出單個字符顯示CODESEGMENTASSUME CS: CODESTART:LEABX, STRINGMOVCX, 7ONE:MOVDL, CS: BX;取出一個字符的取出一個字符的ASCII代碼代碼MOVAH, 2;單個字符輸出的功能號單個字符輸出的功能號INT21H;調(diào)用系統(tǒng)服務(wù),輸出一個字符調(diào)用系統(tǒng)服務(wù),輸出一個字符INCBX;修改指針修改指針LOOP ONE;計數(shù)與循環(huán)控制計數(shù)與循環(huán)控制MOVAX, 4C00HINT21HSTRINGDB“Hello

8、!”CODEENDSENDSTART例例3-10 在顯示器上輸出文字在顯示器上輸出文字“Hello !” STRING在代碼段里定義,取字符需要增加在代碼段里定義,取字符需要增加段跨越前綴段跨越前綴“CS: BX”,否則會到否則會到“DS: BX”處取字符,輸出不確定的內(nèi)容。處取字符,輸出不確定的內(nèi)容。 代碼為代碼為0DH的字符稱為的字符稱為“回車回車(Carriage Return, CR)”,把把 光標(biāo)移動到本行的第一個字符位置,光標(biāo)移動到本行的第一個字符位置, 代碼為代碼為0AH的字符稱為的字符稱為“換行換行(Line Feed, LF)”,把光標(biāo)移把光標(biāo)移 動到下一行的相同位置上。動到

9、下一行的相同位置上。MOVCX, 11STRINGDB0DH, 0AH, “Hello !”, 0DH, 0AHDS: DX 待輸出字符串的首地址待輸出字符串的首地址AH 09HINT21H字符串以字符字符串以字符“$”為結(jié)束標(biāo)志,該字符本身不輸出。為結(jié)束標(biāo)志,該字符本身不輸出。CODESEGMENTASSUME CS: CODE, DS: CODESTART:MOV AX, CODEMOVDS, AXLEADX, STRINGMOVAH, 9INT21HMOVAX, 4C00HINT21HSTRINGDB 0AH, 0DH, “Hello !”, 0AH, 0DH, $CODEENDSEND

10、START(2)輸出一個字符串)輸出一個字符串 功功 能能 調(diào)用參數(shù)調(diào)用參數(shù) 返回參數(shù)返回參數(shù) 從鍵盤輸入一個字符并回顯在屏幕上從鍵盤輸入一個字符并回顯在屏幕上 AL=字符字符ASCII碼碼 讀鍵盤字符,不回顯讀鍵盤字符,不回顯 DL= 0FFH 若有字符可取,若有字符可取,AL=字符字符ASCII碼碼,ZF=0 若無字符可取,若無字符可取,AL=0,ZF=1 從鍵盤輸入一個字符,不回顯從鍵盤輸入一個字符,不回顯 AL=字符字符ASCII碼碼 從鍵盤輸入一個字符,不回顯,從鍵盤輸入一個字符,不回顯, AL=字符字符ASCII碼碼 檢測檢測Ctrl-Break和和Ctrl -C鍵鍵 輸入字符到緩

11、沖區(qū)輸入字符到緩沖區(qū) DS:DX = 緩沖區(qū)首址緩沖區(qū)首址 2. DOS2. DOS鍵盤輸入功能調(diào)用鍵盤輸入功能調(diào)用( )DATASEGMENTSUMDB?DATAENDS; -CODESEGMENTASSUME DS: DATA, CS: CODESTART:MOV AX, DATAMOVDS, AX例例3-13 從鍵盤輸入從鍵盤輸入5個數(shù)字(個數(shù)字(0到到9之間),求它們的和,之間),求它們的和,存入存入SUM。MOVCX, 5;循環(huán)次數(shù)循環(huán)次數(shù)MOVSUM, 0;累加器清零累加器清零ONE: MOVAH, 1;輸入單個字符的功能號輸入單個字符的功能號INT21H;輸入一個字符,輸入一個字

12、符,ASCII碼在碼在AL中中ANDAL, 0FH;ASCII碼轉(zhuǎn)換成二進(jìn)制數(shù)碼轉(zhuǎn)換成二進(jìn)制數(shù)ADDSUM, AL;累加累加LOOP ONE;計數(shù)與循環(huán)計數(shù)與循環(huán)MOVAX, 4C00HINT21HCODE ENDSENDSTART輸入緩沖區(qū)格式舉例說明:輸入緩沖區(qū)格式舉例說明: BUFFER DB 81, ?, 81 DUP(?)0AH號號DOS功能調(diào)用功能調(diào)用n輸入一行字符輸入一行字符 功能調(diào)用號:功能調(diào)用號:AH0AH 入口參數(shù):入口參數(shù):DS=輸入緩沖區(qū)的段地址輸入緩沖區(qū)的段地址 DX=輸入緩沖區(qū)的偏移地址輸入緩沖區(qū)的偏移地址 功能調(diào)用:功能調(diào)用:INT 21H 出口參數(shù):緩沖區(qū)出口參

13、數(shù):緩沖區(qū)=輸入的一行字符輸入的一行字符n第一字節(jié)第一字節(jié):輸入字符存放區(qū)的大小。:輸入字符存放區(qū)的大小。n第二字節(jié)第二字節(jié):實際輸入的字符個數(shù),不包括回車。:實際輸入的字符個數(shù),不包括回車。n第三字節(jié)之后第三字節(jié)之后:輸入字符存放區(qū),存放輸入的字符和回車。:輸入字符存放區(qū),存放輸入的字符和回車。例例: : 輸入字符串到緩沖區(qū)輸入字符串到緩沖區(qū)STRINGSTRING MAXLEN DB 32 MAXLEN DB 32 ,0, 32 DUP(?) ACTLEN DB ? MAXLEN DB 32 ,33 DUP(?) STRING DB 32 DUP(?)CODE SEGMENTMOVAX,

14、DATAMOVDS, AXLEADX,MAXLENMOVAH,INT21HCODE ENDS END32568H61H70H70H79H0DHMAXLENACTLENSTRINGDATASEGMENTSUMDB?BUFFERDB6, ?, 6 DUP(?)DATAENDSCODESEGMENTASSUME DS: DATA, CS: CODESTART:MOVAX, DATAMOVDS, AXLEADX, BUFFER;裝載輸入緩沖區(qū)首地址裝載輸入緩沖區(qū)首地址MOVAH, 0AH;行輸入功能代號行輸入功能代號INT21H;調(diào)用系統(tǒng)服務(wù)調(diào)用系統(tǒng)服務(wù)例例3-14 從鍵盤輸入最多從鍵盤輸入最多5個數(shù)

15、字(個數(shù)字(0到到9之間),求它們的和,之間),求它們的和,存入存入SUM。MOVSUM, 0;累加器清零累加器清零MOVCL, BUFFER+1 ;循環(huán)次數(shù)循環(huán)次數(shù)MOVCH, 0LEABX, BUFFER+2 ;裝載字符存放區(qū)首地址裝載字符存放區(qū)首地址ONE:MOVAL, BX;取出一個字符取出一個字符ANDAL, 0FH;ASCII碼轉(zhuǎn)換成二進(jìn)制數(shù)碼轉(zhuǎn)換成二進(jìn)制數(shù)ADDSUM, AL;累加累加INCBX;修改指針修改指針LOOP ONE;計數(shù)與循環(huán)計數(shù)與循環(huán)MOVAX, 4C00HINT21HCODEENDSENDSTART小結(jié)小結(jié)n主要的主要的DOS功能調(diào)用功能調(diào)用( )q字符輸出:字

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論