第8章 輸入輸出程序設計_第1頁
第8章 輸入輸出程序設計_第2頁
第8章 輸入輸出程序設計_第3頁
第8章 輸入輸出程序設計_第4頁
第8章 輸入輸出程序設計_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

輸入輸出功能是計算機的重要組成部分,是人—機交互功能的主要承擔者。在早期的計算機系統(tǒng)中,通常把輸入輸出設備或功能作為次要的部分,而把CPU作為主要研究對象。但現(xiàn)在隨著輸入輸出設備的日益豐富、功能要求越來越復雜,輸入輸出部分在整個計算機系統(tǒng)中的地位也得到了進一步提高。第八章輸入輸出程序設計2/5/20231

輸入輸出設備是計算機系統(tǒng)的重要的組成部分,沒有輸入輸出設備,計算機就得不到要解決問題的初始信息,處理的結(jié)果信息也不可能被送出,這樣的計算機不能完成任何工作。計算機系統(tǒng)是通過硬件接口(或控制器)以及輸出輸出程序?qū)ν獠吭O備實現(xiàn)處理和控制的。而匯編語言能直接控制硬件,因此就成為編寫輸入輸出程序的最有效的語言。2/5/202328.1I/O設備的數(shù)據(jù)傳送方式

每種輸入輸出設備都是通過硬件接口或控制器與CPU相連接,這些接口都能支持輸入輸出指令I(lǐng)N,OUT與外部設備交換信息,這些信息包括控制、狀態(tài)和數(shù)據(jù)三種不同性質(zhì)的信息。存儲器I/O接口輸入設備I/O接口數(shù)據(jù)總線DB控制總線CB地址總線AB輸出設備CPU8.1.1CPU與外設2/5/20233控制信息:是由CPU發(fā)送給外部設備的,命令其處于某種方式或執(zhí)行某種操作。狀態(tài)信息:從接口輸入的狀態(tài)信息表示I/O設備當前的狀態(tài)。數(shù)據(jù)信息:則是I/O設備和CPU真正要交換的信息。數(shù)據(jù)信息可分為三種類型:數(shù)字量、模擬量和開關(guān)量。這些信息可以是并行的,也可以是串行的。

CPU與外設之間的數(shù)據(jù)傳送方式有:程序直接控制I/O方式、中斷方式和DMA方式。由于DMA方式是由DMA控制器實現(xiàn)其傳送功能的,所以在這里只做簡單介紹。主要講解前兩種方式。2/5/202348.1.2直接存儲器存取方式(DMA)方式

當外設的速度相對很高,且一次傳送的數(shù)據(jù)量很大時,中斷方式的效率就很低。例如,對磁盤的讀寫操作,一般的文件都有幾十K,幾百K,甚至幾兆,通過DMA方式利用專門的接口控制電路,在存儲器與高速的外設之間進行大量的數(shù)據(jù)交換,而不需要CPU的參與。

DMA控制器-DMAC,除了具有一般接口的特點外,CPU可以通過對DMAC相應端口的讀/寫操作來控制DMA的工作方式;DMAC在得到總線控制權(quán)后,能夠像CPU一樣提供相應的控制信號來控制系統(tǒng)總線,從而實現(xiàn)外設與內(nèi)存之間高速大量的數(shù)據(jù)傳輸。一般接口電路不具備控制總線的能力。2/5/20235存儲器外部設備CPUDMA請求DMA響應HOLDHLDADMA控制器2/5/202368.2程序直接控制I/O方式關(guān)于I/O“接口”與“端口”I/O接口與CPU之間傳送的信息有數(shù)據(jù)、狀態(tài)和控制信號等3大類。每個接口內(nèi)部都包含有一定數(shù)量的寄存器(一般包括數(shù)據(jù)寄存器、狀態(tài)寄存器和控制寄存器),用來存放三種不同信息。為了區(qū)分不同的寄存器(REG),需要給每個REG分配一個地址號,這就類似于給內(nèi)存單元編址一樣。I/O接口內(nèi)部可尋址的REG又稱為端口。按接受和傳送的信息有分為數(shù)據(jù)端口(雙向,輸入緩沖,輸出鎖存),狀態(tài)端口(一般只讀),控制端口(一般只寫)。CPU對外設工作方式的控制和信息的交換最終都歸結(jié)為CPU通過IN/OUT指令對各個可尋址端口的讀寫操作。

8.2.1I/O接口基本結(jié)構(gòu)及編址方式2/5/20237(1)統(tǒng)一編址:存儲器(內(nèi)存)與I/O端口的編址占用同一個地址空間。特點是所有對內(nèi)存操作的指令對I/O端口同樣有效,指令豐富,但會損失一部分的內(nèi)存空間。(2)獨立編址:內(nèi)存與I/O端口對應不同的地址空間。對I/O端口有專門的指令。缺點是對I/O端口操作的指令不及統(tǒng)一編址時豐富(例如,8086/8088中對I/O端口就只有最基本的輸入輸出指令),但能最大程度地滿足存儲空間的尋址范圍。

I/O接口編址方式2/5/20238圖2/5/20239I/O端口地址I/O端口是CPU與輸入輸出設備的交換數(shù)據(jù)的場所,通過I/O端口,處理機可以接受從輸入設備輸入的信息;也可向輸出設備發(fā)送信息。在計算機系統(tǒng)中,為了區(qū)分各類不同的I/O端口,就用不同的數(shù)字給它們進行編號,這種對I/O端口的編號就稱為I/O端口地址。按照每次可交換一個字節(jié)數(shù)據(jù)的端口稱為字節(jié)端口,每次可交換一個字數(shù)據(jù)的端口稱為字端口。在Intel公司的CPU家族中,I/O端口的地址空間可達64K,即可有65536個字節(jié)端口,或32768個字端口。這些地址不是內(nèi)存單元地址的一部分,不能普通的訪問內(nèi)存指令來讀取其信息,而要用專門的I/O指令才能訪問它們。雖然CPU提供了很大的I/O地址空間,但目前大多數(shù)微機所用的端口地址都在0~3FFH范圍之內(nèi),其所用的I/O地址空間只占整個I/O地址空間的很小部分。表8.1列舉了幾個重要的I/O端口地址。2/5/2023102/5/202311計算機在啟動時,BIOS程序(BasicInput/OutputSystem)將檢查計算機系統(tǒng)中有哪些端口地址。當發(fā)現(xiàn)有串行端口地址時,BIOS就把該端口存放在以地址40:00H開始的數(shù)據(jù)區(qū)內(nèi);當發(fā)現(xiàn)有并行端口地址時,BIOS會把它存入以地址40:08H開始的數(shù)據(jù)區(qū)內(nèi)。每類端口有4個字的空間,對有二個串行口、二個并行口的計算機系統(tǒng),其BIOS程序?qū)⒌玫饺鐖D所示的部分數(shù)據(jù)表。圖中03F8H、02F8H、0378H和0278H分別為COM1、COM2、LPT1和LPT2的端口地址。2/5/202312

I/O指令:

輸入指令:IN

AL,PORTINAX,PORT INAL,DXINAX,DX輸出指令:OUTPORT,ALOUTPORT,AX OUTDX,ALOUTDX,ALPORT:端口地址若地址值≦255,可直接尋址(尋址范圍256個端口);否則,需經(jīng)寄存器DX間接尋址(尋址范圍64K個端口)

8.2.2I/O指令2/5/202313(1)INAX,28HMOVDATA_WORD,AX(2)INAL,27HTEST

AL,00000100JNZERRORMOVDX,126INAL,DXORAL,80HOUT

DX,AL2/5/202314codesegmentmainprocfarassumecs:codes:pushdsxorax,axpushaxmovbx,6000;f

movcx,1000;times

movdx,cx

inal,61handal,11111100b

trig:xoral,2

out61h,almovcx,bxdelay:loopdelaydecdxjnetrigretmainendpcodeendsends簡單的I/O程序舉例:SOUND程序2/5/202315程序直接控制I/O方式分:無條件傳送方式 和條件傳送方式1)無條件傳送 無條件:每次進行輸入/輸出之前,不需要查詢外設的狀態(tài).2)有條件傳送又稱查詢式傳送,在每次輸入/輸出之前,先要讀取外設的狀態(tài),滿足一定的條件才能進行一次I/O操作。

2/5/202316C

P

U打

器打印機DBSTBBUSYCB

DB

AB圖打印機連接示意圖

【例】向打印機輸出字符。2/5/2023172/5/202318:┆源程序

MOV BX,OFFSET,BUFFER;置緩沖區(qū)偏移量

MOV CX,CHRTL ;置輸出字符計數(shù)器BG:MOV AL,[BX]

;取字符

MOV DX,378H

;輸出字符到數(shù)據(jù)寄存器

OUT DX,AL

MOV DX,379H

;讀打印機狀態(tài)WT: IN AL,DX TEST AL,80H

;判‘忙’否?

JZ WT

;忙,重查詢

MOV DX,37AH

;形成選通信號

MOV AL,0DH ;令打印機打印字符

OUT DX,AL

MOV AL,0CH OUT DX,AL INC BX ;指向下一輸出字符

LOOP BG┆2/5/202319在看一個例子

Cpu要從三個設備輪流輸入數(shù)據(jù),proc1、proc2、proc3分別是設備1、設備2、設備3的數(shù)據(jù)輸入程序,他們的狀態(tài)寄存器的端口地址分別為stat1、stat2、stat3表示,這三個狀態(tài)寄存器的第五位是輸入準備位。2/5/202320

input:in al,stat1

test al,20hjz

dev2call farptrproc1

dev2:in al,stat2test al,20hjz

dev3

call farptrproc2

dev3:in al,stat3 test al,20h jz no_input call farptrproc3no_input2/5/202321

查詢式傳輸過程的優(yōu)點是硬件開銷小,使用起來比較簡單。但在此方式下,CPU要不斷地查詢外設的狀態(tài),當外設未準備好時,CPU就只能循環(huán)等待,不能執(zhí)行其它程序,這樣就浪費了CPU的大量時間,降低了主機的利用率。為了解決這個矛盾,我們提出了中斷傳送方式:即當CPU進行主程序操作時,外設的數(shù)據(jù)已存入輸入端口的數(shù)據(jù)寄存器;或端口的數(shù)據(jù)輸出寄存器已空,由外設通過接口電路向CPU發(fā)出中斷請求信號,CPU在滿足一定的條件下,暫停執(zhí)行當前正在執(zhí)行的主程序,轉(zhuǎn)入執(zhí)行相應能夠進行輸入/輸出操作的子程序,待輸入/輸出操作執(zhí)行完畢之后CPU即返回繼續(xù)執(zhí)行原來被中斷的主程序。這樣CPU就避免了把大量時間耗費在等待、查詢狀態(tài)信號的操作上,使其工作效率得以大大地提高。8.3中斷傳送方式2/5/202322外部設備是如何連到主機上的?2/5/2023238.3.18086中斷的分類:內(nèi)部中斷和硬件中斷(1)內(nèi)部中斷

內(nèi)部中斷簡稱內(nèi)中斷,又稱軟件中斷。它不需要外部硬件支持。并且不受中斷標志位狀態(tài)的影響。8086/8088內(nèi)部中斷有以下5種:

l

除數(shù)為0中斷——類型0中斷

l

溢出中斷——類型4中斷INTO

l

單步中斷——類型1中斷

l

斷點中斷——類型3中斷

l

中斷指令——指令I(lǐng)NTn中斷由cpu的某些錯誤引起為調(diào)試程序而設置的中斷2/5/202324(2)硬件中斷:來自處理機的外部條件所以又稱外中斷硬件中斷主要有兩種來源——非屏蔽中斷NMI和可屏蔽中斷INTR。?非屏蔽中斷NMI。非屏蔽中斷來源于三方:

系統(tǒng)板的RAM在讀寫時產(chǎn)生奇偶校驗錯;

I/O通道中的擴展選件出現(xiàn)奇偶校驗錯;協(xié)處理器8087的異常狀態(tài)產(chǎn)生的中斷。?可屏蔽中斷INTR是由外部設備通過一片8259A產(chǎn)生的中斷請求。從外設發(fā)出的中斷請求到cpu響應中斷,用兩個控制條件起決定作用:

1、外設的中斷請求是否被屏蔽。2、cpu是否允許相應中斷。

8259A內(nèi)部有一個中斷屏蔽寄存器,端口地址為21h2/5/202325結(jié)束硬件中斷moval,20hout20h,al中斷屏蔽寄存器和中斷命令寄存器只允許鍵盤中斷:

moval,11111101

out21h,al2/5/202326外部設備向cpu發(fā)出中斷請求,cpu是否相應還與IF有關(guān)STI——開中斷指令將標志寄存器中的中斷標志位IF置1,允許CPU響應來自INTR引腳的中斷請求CLI——關(guān)中斷指令將標志寄存器中的中斷標志位IF清0,使CPU不響應來自INTR引腳的中斷請求2/5/2023278.3.2中斷向量表

在8086系統(tǒng)中,內(nèi)存最低端的1K字節(jié)地址范圍內(nèi)(從00000-003FFH),放置256個中斷的中斷向量(入口地址),即稱為中斷向量表。每個中斷矢量在表中占據(jù)4個字節(jié),地址較高的兩個字節(jié)放入口地址的段地址,地址較低的兩個字節(jié)放偏移地址。

中斷向量表中的存儲地址=中斷類型碼n×4什么是中斷向量、中斷向量地址、中斷向量表?2/5/2023282/5/202329表8-3中斷向量表地址(Hex)

類型碼中斷名稱

0—30除以04—71單步

8—B2非屏蔽

C—F3斷點

10—134溢出

14—175打印屏幕

18—1B6保留

1D—1F7保留

20—238定時器

24—279鍵盤

28—2BA保留的硬中斷

2C—2FB異步通信(COM2)30—33C異步通信(COM1)34—37D硬盤

38—3BE軟盤

3C—3FF并行打印機地址(Hex)

類型碼中斷名稱40—4310視頻顯示I/O調(diào)用44—4711設備檢測調(diào)用48—4B12存儲器容量檢測4C—4F13軟/硬盤I/O調(diào)用50—5314通信I/O調(diào)用54—5715盒式磁帶I/O調(diào)用58—5B16鍵盤I/O調(diào)用5C—5F17打印機I/O調(diào)用60—6318ROMBASIC64—6719引導程序入口68—6B1A時間調(diào)用6C—6F1B鍵盤CTRL-BREAK控制70—731C定時器報時74—771D顯示器參數(shù)表78—7B1E軟盤參數(shù)表7C—7F1F字符點陣結(jié)構(gòu)參數(shù)表BIOS中斷向量2/5/202330地址(Hex)

類型碼中斷名稱80—8320程序結(jié)束,返回DOS84—8721DOS系統(tǒng)功能調(diào)用88—8B22程序結(jié)束地址8C—8F23CTRL_BREAK退出地址90—9324標準錯誤出口地址94—9725絕對磁盤讀98—9B26絕對磁盤寫9C—9F27程序結(jié)束,駐留內(nèi)存A0—FF28—3F為DOS保留100—17F40—5F保留(擴充BIOS中斷向量)180—19F60—67為用戶軟中斷保留1A0—1FF68—7F不用(其中70—77為I/O設備中斷向量)200—21780—85BASIC使用218—3C386—F0BASIC運行時,用于解釋3C4—3FFF1—FF未用DOS中斷向量2/5/202331用指令來為中斷類型N設置中斷向量:MOV AX,0MOV ES,AXMOV BX,N*4 ;中斷入口地址MOV AX,OFFSETINTHANDMOV ES:WORDPRT[BX],AX ;設置中斷處理程序INTHANDMOV AX,SEGINTHAND ;的入口地址MOV ES:WORDPRT[BX+2],AX

┆INTHAND: ;中斷處理程序 ┆

IRET

用戶可以為保留的中斷類型號擴充自己的需要的中斷功能,對新增加的中斷功能要在中斷向量表中建立相應的中斷向量。2/5/202332

用戶在編寫自己的中斷處理程序代替系統(tǒng)中的某個中斷處理功能時,要注意保留原來的中斷向量。程序結(jié)束時,要恢復原來的中斷向量??梢允褂胐os功能調(diào)用來存取中斷向量取中斷向量預置AH=35H,AL=中斷類型號執(zhí)行INT21H——把類型號為AL的中斷向量取出到ES:BX中設置中斷向量預置AH=25H,AL=中斷類型號,DS:DX=中斷向量執(zhí)行INT21H——把DS:DX指向的中斷向量放置到中斷向量表中類型號為AL的中斷向量處2/5/202333┆MOV AL,N

MOV AH,35H ;調(diào)用DOS功能35HINT 21HPUSH ES ;保存原中斷向量PUSH BXPUSH DSMOV AX,SEGINTHANDMOV DS,AX ;置用戶定義的中斷處理MOV DX,OFFSETINTHAND;程序INTHAND的入口MOV AL,N ;地址(段地址和偏移地址)MOV AH,25H ;設置新的中斷向量INT 21H例:使用DOS功能調(diào)用存取中斷向量。2/5/202334 POP DS ┆ POP DX ;恢復原中斷向量 POP DS MOV AL,N MOV AH,25H INT 21H RETINTHAND: ;中斷處理程序 ┆

IRET2/5/202335當中斷發(fā)生時,由硬件自動完成下列動作:(1)取中斷類型號N。(2)標志寄存器(PSW)內(nèi)容入棧。(3)當前代碼段寄存器(CS)內(nèi)容入棧。(4)當前指令計數(shù)器(IP)內(nèi)容入棧。(5)禁止外部中斷和單步中斷(IF=0,TF=0)。(6)從中斷向量表中取4*N的字節(jié)內(nèi)容送IP,取 4*N+2的字節(jié)內(nèi)容送CS。(7)轉(zhuǎn)中斷處理程序。

8.3.3中斷過程2/5/202336

8.3.4中斷優(yōu)先級和中斷嵌套IBM-PC規(guī)定中斷的優(yōu)先級次序為:優(yōu)先級高內(nèi)部中斷(語法錯,INTO,INT)

非屏蔽中斷(NMI)

可屏蔽中斷(INTR)

低單步中斷

可屏蔽中斷的優(yōu)先權(quán)又分為8級,在正常的優(yōu)先級方式下,優(yōu)先次序為:IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR72/5/202337

可屏蔽中斷的優(yōu)先權(quán)又分為8級,在正常的優(yōu)先級方式下,優(yōu)先次序為:IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7RSL

00

正常優(yōu)先級關(guān)系01

清除由L2-L0指定的中斷請求10

個中斷優(yōu)先級依次作循環(huán)一個位置11

各中斷優(yōu)先級依次循環(huán)到由L2-L0指定的中斷請求為最低2/5/202338主程序中斷請求

1#中斷響應1#中斷服務子程序2#中斷響應2#中斷服務子程序3#3#中斷服務子程序IRETIRETIRET斷點中斷嵌套:高優(yōu)先級的中斷請求能打斷正在處理中的低級中斷服務程序;在較高級的中斷服務程序結(jié)束后,可返回被打斷的低級中斷服務程序,繼續(xù)執(zhí)行。優(yōu)先級:#1<#2<#3STI和EOI在中斷嵌套中如何是使用?如果想讓低級中斷中斷正在服務的高級中斷應怎么做?2/5/202339(1)中斷處理流程圖(2)中斷服務子程序結(jié)構(gòu)1)保護現(xiàn)場(類似于執(zhí)行通用子程序)2)開中斷(可選)3)執(zhí)行關(guān)于當前中斷源或異常處理所要求的I/O等程序操作4)關(guān)中斷(可選)5)送中斷結(jié)束命令給(EOI)6)恢復現(xiàn)場7)中斷返回

8.3.5中斷處理的一般過程YNYYNN2/5/202340

中斷控制

子程序調(diào)用程序進入方式

外部隨機請求

CALL指令程序進入時刻

當前指令執(zhí)行后 執(zhí)行CALL指令后保護/恢復現(xiàn)場

視需要設置

視需要設置保護/恢復斷點

PSW/CS/IP CS/IP返回主程序指令

執(zhí)行IRET

執(zhí)行RET參數(shù)傳遞

無比較:中斷控制與子程序調(diào)用2/5/202341【例8.5】編一段中斷處理程序,在主程序運行的過程中,每隔10秒鐘響鈴一次,同時在屏幕上顯示“Thebellisring!”。

在系統(tǒng)定時器的中斷處理程序中,有一條中斷指令I(lǐng)NT1CH,時鐘中斷每發(fā)生一次(約每秒中斷18.2次)都嵌套調(diào)用一次1CH的處理程序。在ROMBIOS例程中,1CH的處理程序只有一條IRET指令,實際上它沒有作任何工作,只是為用戶提供了一個中斷類型號。如果用戶有某種定時周期性的工作需要完成,就可以利用系統(tǒng)定時器的中斷間隔,用自己設計的處理程序來代替原有的1CH中斷程序。2/5/202342編程如下:DATA SEGMENTCOUNT DW1MESS DB‘Thebellisring!’,0DH,0AH,’$’DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,ES:DATAMAIN PROCFARSTART:PUSH DS SUB AX,AXPUSH AX MOV AX,DATA MOV DS,AX

MOV AL,1CH ;取中斷向量

MOV AH,35H

INT 21H2/5/202343PUSH ES ;存原中斷向量段址PUSH BX ;存原中斷向量偏移量PUSH DSMOV DX,OFFSETRING ;新偏移量送DXMOV AX,SEGRINGMOV DS,AX ;新段址送DSMOV AL,1CHMOV AH,25HINT 21H ;寫入新的中斷向量POP

DSIN AL,21H ;讀取中斷屏蔽字AND AL,11111110B ;允許定時器中斷OUT 21H,ALSTI ;開中斷MOV DI,2000DELAY:MOVSI,3000 ;延時

DELAY1:DEC SIJNZDELAY1DECDIJNZDELAYPOPDX ;恢復原中斷向量POPDSMOVAL,1CHMOVAH,25HINT21HMAINENDPRING: PROC NEAR

PUSH DS PUSH AX PUSH CX PUSH DX

MOV AX,DATA MOV DS,AX2/5/202344

STI ;開中斷 DEC COUNT ;計秒值

JNZ EXIT

MOV DX,OFFSETMESS MOV AH,09H INT 21H

MOV DX,100

IN AL,61H AND AL,0FCHSOUND:XOR AL,02 OUT 61H,AL;揚聲器發(fā)聲

MOV CX,140HWAIT1: LOOP WAIT1;延時等待

DEC DX JNE SOUND

MOV COUNT,182EXIT: CLI ;關(guān)中斷

POP DX POP CX POP AX POP DS IRET ;中斷返回RING ENDPCODE ENDS END START2/5/202345例8.6在配置了鍵盤中斷輸入(中斷類型09)和打印機輸出(中斷類型為0fh)兩種外部設備的80x86的中斷系統(tǒng)中,要求從鍵盤上接收一個字符,同時對32字節(jié)的輸入緩沖區(qū)進行測試,如果緩沖區(qū)已滿,則鍵盤掛起(禁止鍵盤中斷輸入),由打印機輸出一個信息。鍵盤和打印機分別由中斷屏蔽寄存器(21h)的1位和7位控制。鍵盤的輸入寄存器的端口地址為60h,控制寄存器的端口地址為61h.打印機輸出寄存器的端口地址為378h,打印機控制寄存器的端口地址為37ah。2/5/202346例8.7除數(shù)為0的軟件中斷(類型0)處理程序

int21h的功能4ch,該功能是惟一不依賴于任何段寄存器內(nèi)容的中止功能。該功能的另一個優(yōu)點是能在al中返回一個表明程序是否正常終止的出口代碼,al:00正常終止,01用ctrl_C終止,02嚴重設備錯誤引起終止;03用功能調(diào)用31h終止,0ffhcpu

錯誤引起終止。2/5/2023471.假設字節(jié)單元(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字單元(06925H)=

,字單元(06926H)=

a.1245H

b.4578H

c.4512H

d.7845H2.邏輯運算指令都是按

進行操作的,指令執(zhí)行后只設置標志位,不保留結(jié)果的邏輯運算指令是

a.位

b.字節(jié)

c.字

d.BCD碼

e.AND

f.OR

g.XOR

h.

TEST3.和指令ANDAL,55AND0F0H等效的指令是

,和MOVBX,0FHEQ1111B等效的指令是

。

a.ANDAL,55H

b.ANDAL,0F5H

c.ANDAL,50H

d.ANDAL,0F0H

e.MOVBX,0000H

f.MOVBX,0FH

g.MOVBX,0FFH

h.MOVBX,0FFFFH4.過程定義開始的偽指令是

宏定義結(jié)束的偽指令是

。

a.SEGMENT

b.MACRO

c.PROC

d.ASSUME

e.END

f.ENDS

g.ENDM

h.ENDP5.將數(shù)據(jù)37H定義為字節(jié)變量X1的語句是

,數(shù)據(jù)37H定義為字變量X2的語句是

。

a.X1DB37

b.X2DB37

c.X1DW37H

d.X2DW37H

e.X1DB37H

g.X2DB37H6.互換指令XCHG可以在兩個寄存器之間互換數(shù)據(jù),也可以在

之間互換數(shù)據(jù)。

a.寄存器

b.立即數(shù)

c.存儲單元

d.堆棧7.對程序流向的控制和轉(zhuǎn)移,就是對執(zhí)行指令地址的修改。如在同一段內(nèi)偏移,則修改

,如在兩個段之間轉(zhuǎn)移,則修改

。

a.IP

b.CS

c.CS和IP

d.CS或IP2/5/2023481.8088/8086CPU內(nèi)部共有

個寄存器,其中有

個通用寄存器、

個變址寄存器、

個段寄存器。2.8088/8086CPU有

種數(shù)據(jù)尋址方式,其中采用

尋址方式的指令執(zhí)行速度最快。3.IBM-PC計算機全部指令的集合稱為它的

。這些指令按功能可以分為六大類:數(shù)據(jù)傳送指令、算術(shù)指令、

、串處理指令、

。4.在不改變段寄存器的前提下,IBM-PC計算機內(nèi)存尋址的最大范圍是

字節(jié)。若CS=1234H,SS=2341H,DS=3412H,BP=8756H,則以BP寄存器間接尋址的非段超越的內(nèi)存單元的物理地址是

。5.程序有順序結(jié)構(gòu)

、

、

四種結(jié)構(gòu)。6.循環(huán)程序有兩種結(jié)構(gòu)形式,一種是

,另一種是

,當有可能一次也無需執(zhí)行循環(huán)體時采用前者。7.8088/8086允許使用

個中斷向量,每個中斷向量占

個字節(jié),系統(tǒng)的低段地址從

存放著中斷向量表。8.下面是對DOS功能調(diào)用方法的簡單說明:

(1)在AH寄存器中存入所要調(diào)用功能的

。

(2)根據(jù)所調(diào)用功能的規(guī)定設置

。

(3)用

指令轉(zhuǎn)入子程序入口。

(4)相應的子程序運行完后,可以按規(guī)定取得

2/5/2023491、在指令系統(tǒng)中,段內(nèi)、段間返回均為RET指令。試回答:(1)執(zhí)行段內(nèi)返回RET指令時,執(zhí)行的操作是:(2)執(zhí)行段間返回RET指令時,執(zhí)行的操作是:2、ARY

DW

10

DUP(?)┇MOV

AL,TYPE

ARYMOV

BL,LENGTH

ARYMOV

CL,SIZE

ARY上述MOV指令序列執(zhí)行后的結(jié)果是什么?3、設某數(shù)據(jù)段:

DATA

SEGMENTORG

20HNUM1=8NUM2=NUM1+10HDA1

DB'COMPUTER'DB

0AH,0DHCOUNT

EQU

$-DA1DA2

DW'CO','MP','UT','ER'DATA

ENDS試回答:(1)DA1的偏移地址是:___________________(2)COUNT的值是___________________________________(3)DA2+5字節(jié)單元的內(nèi)容是_________________________________2/5/20235013.在一段匯編程序中多次調(diào)用另一段程序,用宏指令比用子程序?qū)崿F(xiàn)起來(

)。參考答案為:B

A.占內(nèi)存空間小,但速度慢B.占內(nèi)存空間大,但速度快

C.占內(nèi)存空間相同,速度快D.占內(nèi)存空間相同,速度慢14.在程序執(zhí)行過程中,IP寄存器中始終保存的是(

)。參考答案為:B

A.上一條指令的首地址

B.下一條指令的首地址

C.正在執(zhí)行指令的首地址D.需計算有效地址后才能確定地址15.PSW寄存器中共有(

)位條件狀態(tài)位,有(

)位控制狀態(tài)位。參考答案為:A

A.6、3

B.3、6

C.8、4

D.4、816.下列指令執(zhí)行時出錯的是(

)。參考答案為:A

A.ADDBUF1,BUF2

B.JMPDWORDPTRDAT[BX]

C.MOVAX,[BX+DI]NUM

D.TESTAL,08H17.已知(AX)=1234H,執(zhí)行下述三條指令后,(AX)=(

)。參考答案為:D

MOVBX,AX

NEGBX

ADDAX,BXA.1234H

B.0EDCCH

C.6DCCH

D.0000H18.在下列指令中,(

)指令的執(zhí)行會影響條件碼中的CF位。參考答案為:D

A.JMPNEXT

B.JCNEXT

C.INCBX

D.SHLAX,119.串指令中的目的操作數(shù)地址是由(

)提供。參考答案為:C

A.SS:[BP]

B.DS:[SI]

C.ES:[DI]

D.CS:[IP]20.將DX的內(nèi)容除以2,正確的指令是(

)。參考答案為:C

A.DIV2

B.DIVDX,2

C.SARDX,1

D.SHLDX,12/5/202351l.變量和標號的區(qū)別是________。

2.下述指令的目操作數(shù)是存放在堆棧段中,請?zhí)钊胝_答案。ADD____[BX],CH。

3.段地址和偏移地址為2000:5076的存儲單元物理地址是____。

4.在下列程序段括號中,填入正確的答案。(

SEGMENTBUFDB12H,56HDATAENDS...CODE(

5.指出下列指令錯誤原因,填入括號中。A.MOVAX,BL;(

)B.MOVCS,AX;(

)C.DECGAMA[BX];(

)D.MOVES,5600H;(

)E.SUBAX,DS;(

6.下列語句在存貯器中分別為變量分配多少字節(jié)?請?zhí)钊肜ㄌ栔?。VR1DW?

;(

)VR2DW4DUP(?),2;(

)CONTEQU10;(

2/5/2023521.在8086/8088系統(tǒng)中,存儲器是分段的,每段最大長度是_______字節(jié),段內(nèi)偏移地址從_______到_______。2.在程序調(diào)試時,顯示某指令存放地址是2340:0056,則物理地址是_______。3.匯編語言源程序中的語句有三種類型,它們是_______語句,_______語句和_______語句。4.指令MOVAX,[BX+SI+10H]源操作數(shù)尋址方式是_______。5.執(zhí)行段間返回指令RET時,將棧頂?shù)囊粋€字彈出到_______后,又彈出一個字到_______寄存器中。6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,執(zhí)行NEGWORDPTR[DI]后,(31200H)=_______,(31201H)=_______。7.執(zhí)行下列指令序列MOVAL,80HMOVBL,08HCBWIDIVBL則AH=_______AL=_______。8.已知數(shù)據(jù)定義語句ORG120HVECT1DW200HVECT2DWVECT1執(zhí)行

MOVAX,VECT1AX=_______MOVBX,VECT2BX=_______。

2/5/202353判斷以下各語句是否有錯誤,如有錯誤請說明錯誤原因1.MOV

AX,02.MOV

[1000H],1000H3.MOV

BL,AX4.MOV

[0],AX5.PUSH

PSW6.SHR

DX,BL7.MUL

AL,BL8.AND

AX,[1000]9.XCHG

CS,DS10.LDS

AL,[BX]2/5/2023541.下列語句在存儲器中分別為變量數(shù)據(jù)區(qū)分配多少個字節(jié)單元?(1)VAR3

DD

10(2)VAR4

DW

4

DUP(?),22.設DS=2000H,BX=1256H,變量TABLE的偏移地址為20A1H,(232F7H)=3280H.下列指令分別執(zhí)行后,IP的值各是多少?(1)JMP

BXIP=___________________(2)JMP

TABLE[BX]IP=___________________3.選用NOT,AND,OR

XOR邏輯指令編寫一指令序列,實現(xiàn)將AL第0位,第2位同時置1,其他位變反。

1.指令

ARRAYDB100DUP(0,3DUP(1,2),0,3)

匯編后為ARRAY存儲單元分配

個字節(jié)。2.指令

LEASI,DATA1可用指令(

)代替。3.中斷向量表的地址范圍是(

)。4.指令

MOVAX,256[BX][SI]的尋址方式是

。5.STRINGDB‘AB’,0,0,‘CD’,0,0,‘EF’,0,0請用DW偽指令改寫上述語句,必須保持內(nèi)存單元內(nèi)容不變。(

2/5/2023551.在指令系統(tǒng)中,段內(nèi)、段間返回均為RET指令。試回答:

(1)執(zhí)行段內(nèi)返回RET指令時,執(zhí)行的操作是:

(2)執(zhí)行段間返回RET指令時,執(zhí)行的操作是:2.用兩種辦法,分別只用一條指令實現(xiàn)將DA1數(shù)據(jù)區(qū)中數(shù)據(jù)個數(shù)送入CX。DA1DB20HDUP(?)

DA2DW10H,45H,7856H3.已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,試分別指出下列各指令中存儲器操作數(shù)的物理地址。

MOVAL,

溫馨提示

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

評論

0/150

提交評論