日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書(shū)頻道 > 電子 > 《微計(jì)算機(jī)原理》 > 第4章 匯編語(yǔ)言程序設(shè)計(jì)

第3節(jié) BIOS中斷和DOS中斷

 

  §4.4 BIOS中斷和DOS中斷

  本節(jié)概述

  任何程序的運(yùn)行均離不開(kāi)一定的硬件環(huán)境和軟件環(huán)境。 基本硬件環(huán)境包括CPU、存儲(chǔ)器、I/O設(shè)備,從原理上講,使用IN/OUT指令可以控制任何I/O設(shè)備。事實(shí)上,BIOS中,以中斷處理程序的形式提供了微機(jī)中基本I/O設(shè)備的控制程序,稱為"BIOS中斷",應(yīng)用程序可以用"INT n"指令調(diào)用這些程序。

  教學(xué)目標(biāo)

  掌握BIOS中斷和INT 21H中斷的功能。

  本節(jié)內(nèi)容:

  概述

  BIOS中斷

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

  INT20H(結(jié)束程序的另一種方法)

  重點(diǎn)難點(diǎn)

  BIOS中斷和INT 21H中斷的功能。

  學(xué)習(xí)方法

  在學(xué)習(xí)的同時(shí)編寫(xiě)一些小的中斷服務(wù)程序以便很好地掌握BIOS中斷和INT 21H中斷的功能。

  關(guān)鍵字

  BIOS中斷  INT 21H中斷

  參考資料

  1、《微型計(jì)算機(jī)技術(shù)及應(yīng)用》,戴梅萼等編著,第二版,清華大學(xué)出版社

  2、《微型計(jì)算機(jī)原理》,季維法等編著,第一版,電子科技大學(xué)出版社

  3、《微型計(jì)算機(jī)原理—常見(jiàn)題型解析及模擬題》,武自芳主編,西北工業(yè)大學(xué)出版社

  4、《80X86/80X87匯編語(yǔ)言程序設(shè)計(jì)》,洪志全等編著,電子科技大學(xué)出版社

  §4.4.1 概述

  任何程序的運(yùn)行均離不開(kāi)一定的硬件環(huán)境和軟件環(huán)境。 基本硬件環(huán)境包括CPU、存儲(chǔ)器、I/O設(shè)備(鍵盤(pán)、磁盤(pán)、打印機(jī)、顯示卡等),關(guān)于CPU和存儲(chǔ)器,已經(jīng)作了一些了解。從原理上講,使用IN/OUT指令可以控制任何I/O設(shè)備。以打印機(jī)為例,使用IN指令可以讀入打印機(jī)的狀態(tài)(有/無(wú)紙、能否接收新的數(shù)據(jù)等)、使用OUT指令把數(shù)據(jù)送給打印機(jī)、給打印機(jī)發(fā)控制命令(移動(dòng)打印頭、某些打印針擊打)。一個(gè)簡(jiǎn)單的I/O設(shè)備使用要求,需要一系列IN/OUT等控制指令,可以把一些基本使用要求編寫(xiě)為子程序,供調(diào)用。事實(shí)上,BIOS中,以中斷處理程序的形式提供了微機(jī)中基本I/O設(shè)備的控制程序,稱為"BIOS中斷",應(yīng)用程序可以用"INT n"指令調(diào)用這些程序。

  程序運(yùn)行的主要軟件環(huán)境是操作系統(tǒng)。操作系統(tǒng)為程序運(yùn)行提供基本的服務(wù),如,程序的裝入、結(jié)束,內(nèi)存的分配,文件管理等。以DOS操作系統(tǒng)為例,它也以中斷處理程序的形式提供這些服務(wù),稱為"DOS中斷", 應(yīng)用程序也用"INT n"指令調(diào)用這些服務(wù)。 MS_DOS的DOS中斷是由IO.SYS、MSDOS.SYS兩個(gè)文件提供的中斷處理程序。(PC_DOS:IBMBIO.COM、IBMDOS.COM)。

  PC系列機(jī)有256種中斷類(lèi)型,8086CPU使用其中5個(gè)(0號(hào)除數(shù)為0中斷、1號(hào)單步中斷、2號(hào)NMI中斷、3號(hào)斷點(diǎn)中斷、4號(hào)溢出中斷),80286及以上系統(tǒng)中,通過(guò)中斷控制器8259使用的硬件中斷為16個(gè)。其余中斷類(lèi)型為BIOS中斷和DOS中斷,它們稱為"軟件中斷"。

  IBM PC/XT 機(jī)中的256級(jí)中斷安排

  另外,設(shè)備制造商提供的設(shè)備控制程序(稱為驅(qū)動(dòng)程序Driver)可能替換BIOS中斷和DOS中斷。

  當(dāng)前,驅(qū)動(dòng)程序的概念使用非常廣泛,它泛指軟件與硬件或其他軟件的接口程序。

  §4.4.2 BIOS中斷

  1、INT 17H(打印機(jī)I/O調(diào)用)

  INT 17H中斷處理程序有三個(gè)功能:

  當(dāng)AH=0時(shí),把AL中的字符在打印機(jī)上打印出來(lái)。

  當(dāng)AH=1時(shí),把AL中的初始化控制命令送給打印機(jī)。

  當(dāng)AH=2時(shí),把打印機(jī)的狀態(tài)讀至AL寄存器。

  寄存器AH中的值決定一個(gè)中斷處理程序的功能,稱其為"功能號(hào)"。當(dāng)AH=0時(shí)調(diào)用INT 17H中斷,稱為"INT 17H的0號(hào)功能",可以簡(jiǎn)記為"INT 17H/0"

  2、INT 16H(鍵盤(pán)I/O中斷)

  AH=0:從鍵盤(pán)讀入ASCII字符,放在AL中。

  AH=1:測(cè)試有無(wú)鍵被按下。ZF=0,表示按過(guò)任意鍵,并在AL中獲 得該鍵的ASCII碼。ZF=1,未按過(guò)鍵。

  AH=2:讀取特殊功能鍵的狀態(tài)至AL中。

  3、 INT 1AH (BIOS日期、時(shí)間中斷)

  AH=0:讀當(dāng)前時(shí)鐘值到CX、DX中。CX為高位,DX為低位。時(shí)鐘單位是54.9ms(1/18.2秒)(65536000/1193180)。

  AH=1:設(shè)置當(dāng)前時(shí)鐘值。

  §4.4.3 DOS系統(tǒng)功能調(diào)用(INT 21H)

  DOS的絕大部分功能均以INT 21H中斷處理程序提供。不同DOS版本一般均有幾十個(gè)INT 21H功能。這些功能有文件和磁盤(pán)管理、字符設(shè)備管理、時(shí)鐘管理、內(nèi)存管理、網(wǎng)絡(luò)管理等,INT 21H的功能能見(jiàn)表1和表2。

  表1

表2

  §4.4.4 INT 20H

  DOS中斷INT20H的功能是結(jié)束程序并返回DOS。

  入口參數(shù):CS=程序段前綴(PSP)的段地址。 IP=0000H。

  出口參數(shù):無(wú)。

  問(wèn)題: (1) 程序段前綴PSP的概念。

  (2) 不能直接給CS、IP賦值,如何指定入口參數(shù)?

  1、 程序的執(zhí)行過(guò)程

  在DOS提示符,如C:>下,鍵入一個(gè)可執(zhí)行文件名(COM、EXE)后,在運(yùn)行該程序前,DOS完成以下工作:

  (1) 從磁盤(pán)中找到該文件。

  (2) 檢測(cè)用戶可用內(nèi)存,在可用內(nèi)存的低地址段建立一個(gè)程序段前綴(PSP,Program Segment Prefix)。

  (3) 把該文件從磁盤(pán)上裝入內(nèi)存中PSP的后面。

  (4) DOS設(shè)置DS、ES的值等于PSP的段地址。如果該程序?yàn)镃OM文件,則把CS、SS的值也設(shè)置為PSP的段地址。

  (5) 開(kāi)始執(zhí)行該文件的第一條指令。

  2、 程序段前綴PSP

  DOS運(yùn)行程序時(shí),需要該程序的一系列參數(shù)(如,程序結(jié)束地址、Ctrl_Break處理程序的地址、出錯(cuò)處理地址等),另外還需要一個(gè)磁盤(pán)讀、寫(xiě)的緩沖區(qū),這個(gè)參數(shù)區(qū)和緩沖區(qū),稱為"程序段前綴(PSP)"。 PSP共有256字節(jié),它是運(yùn)行程序時(shí),由DOS自動(dòng)在內(nèi)存中建立的。 PSP的結(jié)構(gòu)下圖所示:

  注意:

  (1)、PSP起始兩字節(jié)存放"INT 20H"指令的機(jī)器碼(CDH 20H),該指令使程序返回DOS;

  (2)、EXE程序剛運(yùn)行時(shí),DS和ES指向PSP首址,即INT20H指令的機(jī)器碼:COM程序剛運(yùn)行時(shí),DS,ES,CS,SS均指向PSP首址。

  在PSP結(jié)構(gòu)中,我們只關(guān)心前兩個(gè)字節(jié),它是指令"INT 20H"的機(jī)器碼(CDH、20H)。

  3、 INT20H(結(jié)束程序的另一種方法)

  (1) 在程序執(zhí)行前,DS=程序段前綴PSP的段地址,因此,

  PUSH DS

  MOV AX,0

  PUSH AX

  這三條指令,把PSP的段地址和0值推入堆棧。

  (2) RET指令從堆棧中取出兩字,送CS和IP,因此,RET指令執(zhí)行時(shí),CS=PSP的段地址,IP=0000H。CPU轉(zhuǎn)移到PSP處執(zhí)行。

  (3) PSP處的指令是INT 20H,它的功能是結(jié)束程序并返回DOS,因此,該程序能正確返回DOS。

?
太保市| 阳城县| 霍城县| 台南市| 江永县| 贵阳市| 临江市| 磴口县| 遵义市| 五台县| 永福县| 儋州市| 丹江口市| 黄浦区| 大城县| 读书| 自贡市| 财经| 延吉市| 鄂伦春自治旗| 家居| 娄烦县| 辽宁省| 滨海县| 上虞市| 博爱县| 广河县| 溧水县| 土默特左旗| 德州市| 平舆县| 西乌珠穆沁旗| 武胜县| 定西市| 新营市| 乐业县| 林州市| 邳州市| 合川市| 高清| 青田县|