版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、微機(jī)原理與接口技術(shù)部分答案第二版主編:龔尚福2.2 8086微處理器由哪幾部分組成?各部分的功能是什么?16355 【解】:按功能可分為兩部分:總線接口單元BIU(Bus Interface Unit)和執(zhí)行單元EU(Execution Unit)??偩€接口單元BIU是8086 CPU在存儲(chǔ)器和I/O設(shè)備之間的接口部件,負(fù)責(zé)對(duì)全部引腳的操作,即8086對(duì)存儲(chǔ)器和I/O設(shè)備的所有操作都是由BIU完成的。所有對(duì)外部總線的操作都必須有正確的地址和適當(dāng)?shù)目刂菩盘?hào),BIU中的各部件主要是圍繞這個(gè)目標(biāo)設(shè)計(jì)的。它提供了16位雙向數(shù)據(jù)總線、20位地址總線和若干條控制總線。 其具體任務(wù)是:負(fù)責(zé)從內(nèi)存單元中預(yù)取指
2、令,并將它們送到指令隊(duì)列緩沖器暫存。CPU執(zhí)行指令時(shí),總線接口單元要配合執(zhí)行單元,從指定的內(nèi)存單元或I/O端口中取出數(shù)據(jù)傳送給執(zhí)行單元,或者把執(zhí)行單元的處理結(jié)果傳送到指定的內(nèi)存單元或I/O端口中。執(zhí)行單元EU中包含1個(gè)16位的運(yùn)算器ALU、8個(gè)16位的寄存器、1個(gè)16位標(biāo)志寄存器FR、1個(gè)運(yùn)算暫存器和執(zhí)行單元的控制電路。這個(gè)單元進(jìn)行所有指令的解釋和執(zhí)行,同時(shí)管理上述有關(guān)的寄存器。EU對(duì)指令的執(zhí)行是從取指令操作碼開(kāi)始的,它從總線接口單元的指令隊(duì)列緩沖器中每次取一個(gè)字節(jié)。如果指令隊(duì)列緩沖器中是空的,那么EU就要等待BIU通過(guò)外部總線從存儲(chǔ)器中取得指令并送到EU,通過(guò)譯碼電路分析,發(fā)出相應(yīng)控制命令,
3、控制ALU數(shù)據(jù)總線中數(shù)據(jù)的流向。2.3 簡(jiǎn)述8086 CPU的寄存器組織?!窘狻浚海?)通用寄存器:通用寄存器又稱數(shù)據(jù)寄存器,既可作為16位數(shù)據(jù)寄存器使用,也可作為兩個(gè)8位數(shù)據(jù)寄存器使用。當(dāng)用作16位時(shí),稱為AX、BX、CX、DX。當(dāng)用作8位時(shí),AH、BH、CH、DH存放高字節(jié),AL、BL、CL、DL存放低字節(jié),并且可獨(dú)立尋址。這樣,4個(gè)16位寄存器就可當(dāng)作8個(gè)8位寄存器來(lái)使用。(2)段寄存器:段寄存器共有4個(gè)CS、DS、SS、ES。代碼段寄存器CS表示當(dāng)前使用的指令代碼可以從該段寄存器指定的存儲(chǔ)器段中取得,相應(yīng)的偏移值則由IP提供;堆棧段寄存器SS指定當(dāng)前堆棧的起始地址;數(shù)據(jù)段寄存器DS指示
4、當(dāng)前程序使用的數(shù)據(jù)所存放段的起始地址;附加段寄存器ES則指出當(dāng)前程序使用附加段地址的起始位置,該段一般用來(lái)存放原始數(shù)據(jù)或運(yùn)算結(jié)果。 (3)指針和變址寄存器:堆棧指針SP用以指出在堆棧段中當(dāng)前棧頂?shù)牡刂?。入棧(PUSH)和出棧(POP)指令由SP給出棧頂?shù)钠频刂?。基址指針BP指出要處理的數(shù)據(jù)在堆棧段中的基地址,故稱為基址指針寄存器。變址寄存器SI和DI用來(lái)存放當(dāng)前數(shù)據(jù)段中某個(gè)單元的偏移量。(4)指令指針與標(biāo)志寄存器:指令指針I(yè)P的功能跟Z80 CPU中的程序計(jì)數(shù)器PC的功能類似。正常運(yùn)行時(shí),IP中存放的是BIU要取的下一條指令的偏移地址。它具有自動(dòng)加1功能,每當(dāng)執(zhí)行一次取指令操作時(shí),它將自動(dòng)加
5、1,使它指向要取的下一內(nèi)存單元,每取一個(gè)字節(jié)后IP內(nèi)容加1,而取一個(gè)字后IP內(nèi)容則加2。某些指令可使IP值改變,某些指令還可使IP值壓入堆?;驈亩褩V袕棾?。標(biāo)志寄存器FLAGS是16位的寄存器,8086共使用了9個(gè)有效位,標(biāo)志寄存器格式如圖2.5所示。其中的6位是狀態(tài)標(biāo)志位,3位為控制標(biāo)志位。狀態(tài)標(biāo)志位是當(dāng)一些指令執(zhí)行后,表征所產(chǎn)生數(shù)據(jù)的一些特征。而控制標(biāo)志位則可以由程序?qū)懭耄赃_(dá)到控制處理機(jī)狀態(tài)或程序執(zhí)行方式的表征。2.4 試述8086 CPU標(biāo)志寄存器各位的含義與作用?!窘狻浚?1) 6個(gè)狀態(tài)標(biāo)志位的功能分別敘述如下: CF(Carry Flag)進(jìn)位標(biāo)志位。當(dāng)執(zhí)行一個(gè)加法(或減法)運(yùn)算,
6、使最高位產(chǎn)生進(jìn)位(或借位)時(shí),CF為1;否則為0。 PF(Parity Flag)奇偶標(biāo)志位。該標(biāo)志位反映運(yùn)算結(jié)果中1的個(gè)數(shù)是偶數(shù)還是奇數(shù)。當(dāng)指令執(zhí)行結(jié)果的低8位中含有偶數(shù)個(gè)1時(shí),PF=1;否則PF=0。 AF(Auxiliary carry Flag)輔助進(jìn)位標(biāo)志位。當(dāng)執(zhí)行一個(gè)加法(或減法)運(yùn)算,使結(jié)果的低4位向高4位有進(jìn)位(或借位)時(shí),AF=1;否則AF=0。ZF(Zero Flag)零標(biāo)志位。若當(dāng)前的運(yùn)算結(jié)果為零,ZF=1;否則ZF=0。SF(Sign Flag)符號(hào)標(biāo)志位。它和運(yùn)算結(jié)果的最高位相同。OF(Overflow Flag)溢出標(biāo)志位。當(dāng)補(bǔ)碼運(yùn)算有溢出時(shí),OF=1;否則OF=0
7、。(2) 3個(gè)控制標(biāo)志位用來(lái)控制CPU的操作,由指令進(jìn)行置位和復(fù)位。DF(Direction Flag)方向標(biāo)志位。它用以指定字符串處理時(shí)的方向,當(dāng)該位置“1”時(shí),字符串以遞減順序處理,即地址以從高到低順序遞減。反之,則以遞增順序處理。IF(Interrupt enable Flag)中斷允許標(biāo)志位。它用來(lái)控制8086是否允許接收外部中斷請(qǐng)求。若IF=1,8086能響應(yīng)外部中斷,反之則不響應(yīng)外部中斷。注意:IF的狀態(tài)不影響非屏蔽中斷請(qǐng)求(NMI)和CPU內(nèi)部中斷請(qǐng)求。TF(Trap Flag)跟蹤標(biāo)志位。它是為調(diào)試程序而設(shè)定的陷阱控制位。當(dāng)該位置“1”時(shí),8086 CPU處于單步狀態(tài),此時(shí)CP
8、U每執(zhí)行完一條指令就自動(dòng)產(chǎn)生一次內(nèi)部中斷。當(dāng)該位復(fù)位后,CPU恢復(fù)正常工作。2.5 8086中,存儲(chǔ)器為什么采用分段管理? 【解】:8086/8088的地址總線寬度為20位,其最大尋址空間是1MB。而其他微處理器則在實(shí)模式下只能訪問(wèn)前1 MB的存儲(chǔ)器地址。實(shí)際上,實(shí)模式就是為8086/8088而設(shè)計(jì)的工作方式,它要解決在16位字長(zhǎng)的機(jī)器里怎么提供20位地址的問(wèn)題,而解決的辦法是采用存儲(chǔ)器地址分段的方法。程序員在編制程序時(shí)要把存儲(chǔ)器劃分成段,在每個(gè)段內(nèi)地址空間是線性增長(zhǎng)的。每個(gè)段的大小可達(dá)64KB,這樣段內(nèi)地址可以用16位表示。存儲(chǔ)器分段的方法雖然給程序設(shè)計(jì)帶來(lái)一定的麻煩,但這種方法可以擴(kuò)大存儲(chǔ)
9、空間,而且對(duì)于程序的再定位也是很方便的。2.6 什么是邏輯地址?什么是物理地址?如何由邏輯地址計(jì)算物理地址?【解】:物理地址:完成存儲(chǔ)器單元或I/O端口尋址的實(shí)際地址成為物理地址,CPU型號(hào)不同其物理地址也不同。物理地址是指CPU和存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)實(shí)際所使用的地址,而邏輯地址是程序使用的地址。物理地址由兩部分組成:段基址(段起始地址高16位)和偏移地址。前者由段寄存器給出,后者是指存儲(chǔ)單元所在的位置離段起始地址的偏移距離。當(dāng)CPU尋址某個(gè)存儲(chǔ)單元時(shí),先將段寄存器的內(nèi)容左移4位,然后加上指令中提供的16位偏移地址而形成20位物理地址。在取指令時(shí),CPU自動(dòng)選擇代碼段寄存器CS,左移4位后,加
10、上指令提供的16位偏移地址,計(jì)算出要取指令的物理地址。堆棧操作時(shí),CPU自動(dòng)選擇堆棧段寄存器SS,將其內(nèi)容左移4位后,加上指令提供的16位偏移地址,計(jì)算出棧頂單元的物理地址。每當(dāng)存取操作數(shù)時(shí),CPU會(huì)自動(dòng)選擇數(shù)據(jù)段寄存器(或附加段寄存器ES),將段基值左移4位后加上16位偏移地址,得到操作數(shù)在內(nèi)存的物理地址。2.9 在80x86微機(jī)的輸入/輸出指令中,I/O端號(hào)通常是由DX寄存器提供的,但有時(shí)也可以在指令中直接指定00H0FFH的端口號(hào)。試問(wèn)可直接由指令指定的I/O端口數(shù)是多少?【解】:由于在80x86的輸入/輸出指令中,可以直接在00H0FFH指定,所以直接由指令指定的I/O端口數(shù)是256。
11、3.1 指令分成幾部分?每部分的作用是什么?【解】:每條指令由兩部分組成:操作碼字段和地址碼字段。操作碼字段:用來(lái)說(shuō)明該指令所要完成的操作。 地址碼字段:用來(lái)描述該指令的操作對(duì)象。一般是直接給出操作數(shù),或者給出操作數(shù)存放的寄存器編號(hào),或者給出操作數(shù)存放的存儲(chǔ)單元的地址或有關(guān)地址的信息。3.2 指出下列MOV指令的源操作數(shù)的尋址方式:MOVAX,1234HMOVAX,BXMOVAX,BXMOVAX,TABLE;TABLE ;TABLE是一個(gè)變量名MOVAX,1234HMOVAX,BX+1234HMOVAX,BPSIMOVAX,BX+SI-1234H【解】:MOVAX,1234H 立即尋址MOVA
12、X,BX 寄存器尋址MOVAX,BX 寄存器間接尋址MOVAX,TABLE ;TABLE是一個(gè)變量名 直接尋址方式MOVAX,1234H 直接尋址方式MOVAX,BX+1234H 寄存器相對(duì)尋址MOVAX,BPSI 基址變址尋址MOVAX,BX+SI1234H 相對(duì)地址變址尋址3.3 設(shè):(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,TABLE的物理地址為2000AH,(SI)=0002H。求下列每條指令源操作數(shù)的存儲(chǔ)單元地址:MOVAX,1234HMOVAX,BXMOVAX,TABLEBXMOVAX,BPMOVAX,BPSI【解】: 存儲(chǔ)單元地址:(
13、DS)10H + EA =2000H10H+1234H=21234H存儲(chǔ)單元地址:(DS)10H +(BX)=2000H10H+0100H=20100H存儲(chǔ)單元地址:(DS)10H+EA=2000H10H+0100H+000AH=2010AH存儲(chǔ)單元地址:(SS)10H+EA=1000H10H+0010H=10010H儲(chǔ)單元地址:(SS)10H+EA=1000H10H+0010H+0002H =10012H3.4 設(shè)ARRAY是字?jǐn)?shù)組的首地址,寫出將第5個(gè)字元素取出送AX寄存器的指令,要求使用以下幾種尋址方式: 直接尋址 寄存器間接尋址 寄存器相對(duì)尋址 基址變址尋址【解】:(1)直接尋址(2)
14、寄存器間接尋址(3)寄存器相對(duì)尋址(4)基址變址尋址 MOV AX, ARRAY+8 MOV BX, ARRAY+8 MOV BX, 8 LEA BX, ARRAY MOV AX, BX MOV AX, ARRAYBX MOV SI, 8 MOV AX,BX+SI3.5 設(shè)當(dāng)前(CS)=2000H,(IP)=2000H,標(biāo)號(hào)NEXT定義在當(dāng)前代碼段偏移地址是0100H處,(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=30H,數(shù)據(jù)段定義的字變量ARRAY的內(nèi)容為1000H,試寫出下列轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址 JMPNEARPTR JMPBX JMPWORD
15、PTRARRAY【解】: JMPNEARPTR 此轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址為:20100H JMPBX 此轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址為:21000H JMPWORDPTRARRAY 此轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址為:23000H3.6 設(shè)當(dāng)前(CS)=2000H,(IP)=2000H,標(biāo)號(hào)NEXT定義在3000H:1000H處。當(dāng)前(DS)=1000H,(BX)=1000H,(11000H)=00H,(11001H)=03H,(11002H)=00H,(11003H)=30H,數(shù)據(jù)段定義的字變量ARRAY的內(nèi)容為0300H,(ARRAY+2)=3000H,試寫出下列轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址: JMPFARP
16、TRNEXT JMPDWORDARRAY【解】: JMPFARPTRNEXT 此轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址為:31000H JMPDWORDARRAY 此轉(zhuǎn)移指令的目標(biāo)轉(zhuǎn)移地址為:30300H3.7 下列每組指令有何區(qū)別?(1)MOV AX,1234H MOV AX,1234H (2)MOV AX,TABLEMOV AX,TABLE(3)MOV AX,TABLE LEAAX,TALBE(4)MOV AX,BX MOV AX,BX【解】:(1)MOV AX,1234H 將立即數(shù)1234H送到寄存器AX中 MOV AX,1234H 將存儲(chǔ)區(qū)1234H中的內(nèi)容送到寄存器AX中(2)MOV AX,TABL
17、E 將標(biāo)號(hào)TABLE的地址送到寄存器AX中MOV AX,TABLE 將存儲(chǔ)區(qū)TABLE 中的內(nèi)容送到寄存器AX中(3)MOV AX,TABLE 將標(biāo)號(hào)TABLE的地址送到寄存器AX中 LEA AX,TALBE 將標(biāo)號(hào)TABLE的地址送到寄存器AX中(4)MOV AX,BX 寄存器尋址 MOV AX,BX 寄存器間接尋址3.8 MOVCS,AX指令正確嗎?【解】:MOVCS,AX指令不正確。因?yàn)镃S是指令寄存器,由系統(tǒng)自動(dòng)改變,不能由指令進(jìn)行更改。3.9 寫一指令序列,將3456H裝入DS寄存器?!窘狻浚篗OV AX, 3456H MOV DS, AX3.10 若正在訪問(wèn)堆棧中03600H單元,
18、則SS和SP的值是多少?【解】:若正在訪問(wèn)堆棧中03600H單元,則SS和SP的值會(huì)有好多組合,其中可以有SS是0300H,SP是0600H。3.11 若(SS)=2000H,(SP)=000AH,先執(zhí)行將字?jǐn)?shù)據(jù)1234H和5678H壓入堆棧的操作,再執(zhí)行彈出一個(gè)字?jǐn)?shù)據(jù)的操作,試畫出堆棧區(qū)及SP的內(nèi)容變化過(guò)程示意圖(標(biāo)出存儲(chǔ)單元的物理地址)。SP20006H78H【解】:物理地址(SS)10HSP 20007H56H34HSP20008H 20008H 20009H 2000AH12H34H12H 20009HSP2000AH 2000AH3.16 解釋XLAT指令是怎樣轉(zhuǎn)換AL寄存器中的內(nèi)容
19、的。并編寫一段程序用XLAT指令將BCD碼09轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼,并將ASCII碼存入數(shù)據(jù)ARRAY中?!窘狻浚篨LAT指令是將AL的內(nèi)容替換成存儲(chǔ)單元中的一個(gè)數(shù),往往用于代碼轉(zhuǎn)換。使用此指令前,先在數(shù)據(jù)段建立一個(gè)表格,表格首地址存入BX寄存器,欲取代碼的表內(nèi)位移量存入AL寄存器中。XLAT指令將(AL)值擴(kuò)展成16位,與(BX)相加形成一個(gè)段偏移地址,段地址取(DS),據(jù)此讀出代碼送入AL寄存器。程序如下:TABLE DB 30H, 31H, , 39H ARRAY DB 1O DUP(?) MOV CL, 10 MOV SI, 0 MOV BX, OFFSET TABLE MOV A
20、L, AL AGAIN: XLAT MOV SI, AL INC SI INC AL LOOP AGAIN3.17 若(AX)=0001H,(BX)=0FFFFH,執(zhí)行ADD AX,BX之后,標(biāo)志位ZF、SF、CF和OF各是什么?【解】: (AX)= 0001H = 0000 0000 0000 0001 B + (BX)=0FFFFH = 1111 1111 1111 1111 B (AX)= 0001H = 1 0000 0000 0000 0000 B 則:ZF=1、SF=0、CF=1、OF=03.18 寫一指令序列完成將AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位
21、不變?!窘狻浚?OR AX, 000FH (OR AX, 0000 0000 0000 1111 B) AND AX, 1FFFH (AND AX, 0001 1111 1111 1111 B) XOR AX, 01C0H (XOR AX, 0000 0001 1100 0000 B)3.19 試寫出執(zhí)行下列指令序列后AX寄存器的內(nèi)容。執(zhí)行 前(AX)=1234H。MOV CL,7SHL BX,CL【解】:(AX) = 1234H = 0001 0010 0011 0100 B 執(zhí)行后:(AX) = 0 0011 0100 0000 000 B = 0001 1010 0000 0000 B
22、= 1A00H 4.1 假設(shè)下列指令中的所有標(biāo)識(shí)符均為類型屬性為字的變量,請(qǐng)指出下列指令中哪些是非法的?它們的錯(cuò)誤是什么? MOV BP,AL MOV WORD_OPBX+4*3DI,SP MOV WORD_OP1,WORD_OP2 MOV AX,WORD_OP1DX MOV SAVE WORD,DS MOV SP,SS:DATA_WORDBXSI MOV BXSI,2 MOV AX,WORD_OP1+WORD_OP2 MOV AX,WORD_OP1-WORD_OP2+100 MOV WORD_OP1,WORD_OP1-WORD_OP2【解】: MOV BP,AL 兩個(gè)操作數(shù)不匹配 MOV W
23、ORD_OPBX+4*3DI,SP MOV WORD_OP1,WORD_OP2兩個(gè)內(nèi)存單元之間不能直接傳送數(shù)據(jù) MOV AX,WORD_OP1DX MOV SAVE WORD,DS MOV SP,SS:DATA_WORDBXSI當(dāng)基址為BX時(shí),選取DS寄存器 MOV BXSI,2 MOV AX,WORD_OP1+WORD_OP2 MOV AX,WORD_OP1-WORD_OP2+100 MOV WORD_OP1,WORD_OP1-WORD_OP24.2 假設(shè)VAR1和VAR2為字變量,LAB為標(biāo)號(hào),試指出下列指令的錯(cuò)誤之處: ADD VAR1,VAR2 SUB AL,VAR1 JMP LABS
24、I JNZ VAR1 JMP NEAR LAB【解】: ADD VAR1,VAR2ADD兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)單元,MOV AX, VAR1 ADD AX, VAR2 SUB AL,VAR1兩個(gè)操作數(shù)不匹配SUB AX, VAR1 JMP LABSI LAB與SI不能相加JMP WORD PTR SI JNZ VAR1JNZ后面應(yīng)是標(biāo)號(hào),不應(yīng)是變量JNZ LAB JMP NEAR LAB缺少PTR運(yùn)算符JMP NEAR PTR LAB4.3 畫圖說(shuō)明下列語(yǔ)句所分配的存儲(chǔ)空間及初始化的數(shù)據(jù)值。 BYTE_VAR DB BYTE,12,-12H,3 DUP(0,?,2 DUP(1,2),?) W
25、ORD_VAR DW 5 DUP(0,1,2),?,-5,BY,TE,256HWORD_VAR00H00H01H00H02H00H00H00H01H00H02H00HBBYTE_VAR41H【解】:(1) (2) 0Y59H1E45HT54H120CH212HF4H30個(gè)字節(jié)00H0210101H02H2101H200H0202H101H202H101H02H2FBH5FFH54H00H56H00H45HBYTE00H41H59H00H02H101H000H202H101H2256H02H4.4 假設(shè)程序中的數(shù)據(jù)定義如下:PARTNO DW ?PNAME DB 16 DUP(?)COUNT D
26、D ?PLENTH EQU $-PARTNO問(wèn)PLENTH的值為多少?它表示什么意義?【解】:PLENTH的值為22,它表示數(shù)據(jù)的個(gè)數(shù)。4.5 有符號(hào)定義語(yǔ)句如下:BUFF DB 1,2,3,123EBUFF DB 0L EQU EBUFF-BUFF問(wèn)L的值是多少?【解】:PLENTH的值為6。4.6 假設(shè)程序中的數(shù)據(jù)定義如下:LNAME DB 30 DUP(?)ADDRESS DB 30 DUP(?)CITY DB 15 DUP(?)CODE-LIST DB 1,7,8,3,2 用一條MOV指令將LNAME的偏移地址放入AX。 用一條指令將CODE_LIST的頭兩個(gè)字節(jié)的內(nèi)容放入SI。 寫一
27、條偽操作使CODE_LENGHT的值等于CODE_LIST域的實(shí)際長(zhǎng)度。【解】: 用一條MOV指令將LNAME的偏移地址放入AX。 MOV AX, OFFSET LANME 用一條指令將CODE_LIST的頭兩個(gè)字節(jié)的內(nèi)容放入SI。MOV SI, WORD PTR CODE_LSIT 寫一條偽操作使CODE_LENGHT的值等于CODE_LIST域的實(shí)際長(zhǎng)度。 CODE_LENGHT EQU CITY-CODE_LIST4.7 試寫出一個(gè)完整的數(shù)據(jù)段DATA_SEG,它把整數(shù)5賦予一個(gè)字節(jié),并把整數(shù)-1,0,2,5和4放在10字?jǐn)?shù)組DATA_LIST的頭5個(gè)單元中。然后,寫出完整的代碼段,其功
28、能為:把DATA_LIST中頭5個(gè)數(shù)中的最大值和最小值分別存入MAX和MIN單元中?!窘狻浚簠⒖汲绦蛉缦拢?DATA_SEG SEGMENT DB1 DB 5 DATA_LIST DB -1, 0, 2, 5, 4, 5 DUP(?) COUNT DB 5 MAX DB ? MIN DB ? DATA_SEG ENDS CODE_SEG SEGMENT ASSUME CS:CODE_SEG, DS:DATA_SEG START PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA_SEG MOV DS, AX LEA BX, DATA_LIST MOV
29、 CX, COUNT-1 MOV AL, BX MOV AH, BX+1 LOOP1: INC BX CMP AH, AL JAE LOOP1 XCHG AH, AL LOOP2 INC BX CMP AH, BX JAE LIS XCHG AH, BX JMP LOP2 LIS: CMP AL , BX JBE LOP2 XCHG AL, BX LOOP2 MOV MAX, AH MOV MIN, AL RET START ENDP CODE_SEG ENDS END START4.10 給出等值語(yǔ)句如下:ALPHAEQU100BETAEQU25GAMMAEQU2下列表達(dá)式的值是多少? AL
30、PHA*100+BETA ALPHAMODGAMMA+BETA (ALPHA+2)*BETA-2 (BETA/3)MOD 5 (ALPHA+3)*(BETA MOD GAMMA) ALPHA GE GAMMA BETA AND 7 GAMMA OR 3【解】: ALPHA*100+BETA1001002510025 ALPHAMODGAMMA+BETA100/(252)19 (ALPHA+2)*BETA-2 (100+2)*252548 (BETA/3)MOD 5(25/3) MOD 53 (ALPHA+3)*(BETA MOD GAMMA) (100+3)*(25 MOD 2)103 ALP
31、HA GE GAMMA 100 GZ GAMMA0FFFFH BETA AND 725 AND 71 GAMMA OR 32 OR 334.9 對(duì)于下面的數(shù)據(jù)定義,三條MOV指令分別匯編成什么?(可用立即數(shù)方式表示)TABLEADW10 DUP(?)TABLEBDB10 DUP(?)TABLECDB1234 MOVAX,LENGTH TABLEAMOVBL,LENGTH TABLEBMOVCL,LENGTH TABLEC【解】:MOVAX,LENGTH TABLEAMOV AX, OOOAHMOVBL,LENGTH TABLEB MOV BL, 0AHMOVCL,LENGTH TABLEC M
32、OV CL, O1H4.10 對(duì)于下面的數(shù)據(jù)定義,各條MOV指令單獨(dú)執(zhí)行后,有關(guān)寄存器的內(nèi)容是什么?FLDBDB?TABLEADW20DUP(?)TABLEBDBABCD MOV AX,TYPE FLDB MOV AX,TYPE TABLEA MOV CX,LENGTH TABLEA MOV DX,SIZE TABLEA MOV CX,LENGTH TABLEB【解】:(1) MOV AX,TYPE FLDB (AX)= 1 (2) MOV AX,TYPE TABLEA (AX)= 2 (3) MOV CX,LENGTH TABLEA (CX)= 20 (4) MOV DX,SIZE TABL
33、EA (DX)= 40 (5) MOV CX,LENGTH TABLEB (CX)= 1 8.1 解釋下列概念: 中斷DMA,中斷源,中斷向量中斷向量表,不可屏蔽中斷,通道FCB,中斷嵌套,文件標(biāo)記中斷入口,可屏蔽中斷【解】:答: 當(dāng)進(jìn)程要求設(shè)備輸入數(shù)據(jù)時(shí),CPU把準(zhǔn)備存放輸入數(shù)據(jù)的內(nèi)存起始地址以及要傳送的字節(jié)數(shù)分別送入DMA控制器中的內(nèi)存地址寄存器和傳送字節(jié)計(jì)數(shù)器。 發(fā)出數(shù)據(jù)傳輸要求的進(jìn)行進(jìn)入等待狀態(tài)。此時(shí)正在執(zhí)行的CPU指令被暫時(shí)掛起。進(jìn)程調(diào)度程序調(diào)度其他進(jìn)程占據(jù)CPU。 輸入設(shè)備不斷地竊取CPU工作周期,將數(shù)據(jù)緩沖寄存器中的數(shù)據(jù)源源不斷地寫入內(nèi)存,直到所要求的字節(jié)全部傳送完畢。 DMA控
34、制器在傳送完所有字節(jié)時(shí),通過(guò)中斷請(qǐng)求線發(fā)出中斷信號(hào)。CPU在接收到中斷信號(hào)后,轉(zhuǎn)入中斷處理程序進(jìn)行后續(xù)處理。 中斷處理結(jié)束后,CPU返回到被中斷的進(jìn)程中,或切換到新的進(jìn)程上下文環(huán)境中,繼續(xù)執(zhí)行。中斷源:引起中斷的事件稱為中斷源。中斷向量表:每種中斷都給安排一個(gè)中斷類型號(hào)。80x86中斷系統(tǒng)能處理256種類型的中斷,類型號(hào)為0H0FFH。如圖8.3所示的中斷源,系統(tǒng)時(shí)鐘的中斷類型為08,鍵盤為09,軟中斷中的除法錯(cuò)誤的中斷類型為0等。每種類型的中斷都由相應(yīng)的中斷處理程序來(lái)處理,中斷向量表就是各類型中斷處理程序的入口地址表。中斷嵌套:正在運(yùn)行的中斷處理程序,又被其他中斷源中斷,這種情況叫做中斷嵌套
35、。中斷就是CPU在執(zhí)行當(dāng)前程序時(shí)由于內(nèi)外部事件引起CPU暫時(shí)停止當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)向執(zhí)行請(qǐng)求CPU暫時(shí)停止的內(nèi)外部事件的服務(wù)程序,該程序處理完后又返回繼續(xù)執(zhí)行被停止的程序;中斷向量是中斷處理子程序的入口地址;地址范圍是00000H-003FFH。實(shí)驗(yàn)一 系統(tǒng)認(rèn)識(shí)實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康恼莆誘DN86/88教學(xué)實(shí)驗(yàn)系統(tǒng)的基本操作。二實(shí)驗(yàn)設(shè)備TDN86/88教學(xué)實(shí)驗(yàn)系統(tǒng)一臺(tái)。三實(shí)驗(yàn)內(nèi)容及步驟1. 系統(tǒng)認(rèn)識(shí)實(shí)驗(yàn)(1)(1)程序的輸入與修改從3500H內(nèi)存單元開(kāi)始建立0-15共16個(gè)數(shù)據(jù)。實(shí)驗(yàn)步驟:a 使用串行通訊電纜將實(shí)驗(yàn)系統(tǒng)與PC機(jī)相連。b 開(kāi)啟實(shí)驗(yàn)系統(tǒng)。c 在系統(tǒng)軟件所在目錄(默認(rèn)為C:TANGDUW
36、8688)下運(yùn)行文件WMD86.EXE進(jìn)入集成操作軟件環(huán)境,打開(kāi)文件菜單選擇新建,即可開(kāi)始輸入源程序。d 輸入程序后,在文件菜單中選擇保存程序,注意文件名的格式,擴(kuò)展文件名必須為*.ASM,例:ABC.ASM。e 在編譯菜單中選擇匯編(CTRL+F2)對(duì)源程序進(jìn)行匯編,若源程序沒(méi)有錯(cuò)誤生成目標(biāo)文件*.OBJ,若源程序中有錯(cuò)誤則返回錯(cuò)誤信息,根據(jù)錯(cuò)誤信息對(duì)源程序進(jìn)行修改后再進(jìn)行匯編。f 匯編無(wú)誤后,在編譯菜單中選擇鏈接(CTRL+F3)對(duì)匯編生成的*.OBJ目標(biāo)文件進(jìn)行鏈接,鏈接信息顯示于屏幕上,如沒(méi)有錯(cuò)誤,生成相應(yīng)的可執(zhí)行文件*.EXE。g 在窗口菜單中選擇調(diào)試(CTRL+1)打開(kāi)調(diào)試窗口,出
37、現(xiàn)系統(tǒng)提示符“”后選擇菜單中的裝入程序,選擇相應(yīng)的*.EXE文件,填入程序段地址與偏移量(默認(rèn)段地址0000,偏移量2000,一般不用修改),確定后PC開(kāi)始將程序從磁盤裝入到教學(xué)實(shí)驗(yàn)系統(tǒng)內(nèi)存,提示裝載完畢后使用U命令進(jìn)行反匯編,檢查程序是否正確裝入。U命令輸入格式為U0000:2000。h 當(dāng)發(fā)現(xiàn)源程序輸入錯(cuò)誤或需要調(diào)整時(shí),在調(diào)試窗口下可用A命令來(lái)修改,如修改2000句為MOV DI,3500的操作如下:顯示信息鍵入信息A20000000:2000MOV DI,35000000:2003(2)運(yùn)行程序系統(tǒng)提供了單步運(yùn)行、斷點(diǎn)運(yùn)行、連續(xù)運(yùn)行等方式,具體操作如下:a. 單步運(yùn)行:在“”提示符下輸入
38、T或點(diǎn)擊菜單中的單步運(yùn)行執(zhí)行,每運(yùn)行一條指令后會(huì)顯示下一條待執(zhí)行指令并顯示變化寄存器的內(nèi)容,重復(fù)T可一步一步運(yùn)行直至程序結(jié)束。b. 連續(xù)運(yùn)行:在“”提示符下輸入G0000:2000(在系統(tǒng)默認(rèn)段址CS0000情況下可直接輸入G2000)可連續(xù)運(yùn)行程序,在運(yùn)行過(guò)程中,可通過(guò)CTRL+BREAK或點(diǎn)擊菜單中的停止來(lái)終止程序運(yùn)行。c. 斷點(diǎn)運(yùn)行:在程序中可用B命令定義斷點(diǎn),系統(tǒng)規(guī)定最多定義10個(gè)斷點(diǎn),例如:顯示信息鍵入信息B0:20091:上例中定義了2009地址為斷點(diǎn),輸入GB0000:2000程序連續(xù)運(yùn)行至斷點(diǎn)時(shí),程序中斷并顯示當(dāng)前各寄存器內(nèi)容。GB是G命令的擴(kuò)充,表示含斷點(diǎn)連續(xù)運(yùn)行程序,斷點(diǎn)僅
39、當(dāng)系統(tǒng)復(fù)位時(shí)清除。(3)內(nèi)存單元的內(nèi)容顯示:使用D0000:3500可查看3500H-350FH單元中的內(nèi)容是否為0-15共16個(gè)數(shù)。(4)內(nèi)存單元內(nèi)容的修改:若要修改某一單元內(nèi)容,可進(jìn)行如下操作,其中,“空格”鍵用于向待編輯單元的高地址方向移動(dòng)地址,而“-”鍵則向反方向移動(dòng)地址;用來(lái)確認(rèn)輸入,退出E命令。顯示信息鍵入信息E35000000:3500 00_01 space0000:3501 01_Space0000:3502 02_ - 0000:3501 01_2. 系統(tǒng)操作練習(xí)(2)將內(nèi)存3500H單元開(kāi)始的0-15共16個(gè)數(shù)傳遞到3600H單元開(kāi)始的數(shù)據(jù)區(qū)中。實(shí)驗(yàn)步驟:(1)輸入程序并
40、檢查無(wú)誤,經(jīng)匯編、連接后裝入系統(tǒng)。(2)E3500,在3500-3510單元中分別送入00、01、02。(3)G0000:2000,運(yùn)行程序,按CTRL+BREAK中斷,返回監(jiān)控。(4)D3600,顯示結(jié)果:3600 00 01 02 。實(shí)驗(yàn)二 運(yùn)算類編程實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康?. 掌握使用運(yùn)算類指令編程及調(diào)試方法。2. 掌握運(yùn)算類指令對(duì)各狀態(tài)標(biāo)志位的影響及其測(cè)試方法。二實(shí)驗(yàn)設(shè)備TDN86/88教學(xué)實(shí)驗(yàn)系統(tǒng)一臺(tái)三實(shí)驗(yàn)內(nèi)容及步驟8086/8088指令系統(tǒng)提供了實(shí)現(xiàn)加、減、乘、除運(yùn)算的基本指令,可對(duì)二進(jìn)制、BCD碼數(shù)據(jù)類型進(jìn)行算術(shù)運(yùn)算。1. 二進(jìn)制雙精度加法運(yùn)算計(jì)算XYZ,將結(jié)果Z存入某存儲(chǔ)單元。本實(shí)驗(yàn)程
41、序是雙精度(2個(gè)16位,既32位)運(yùn)算,利用累加器AX,先求低十六位和,并存入低址存儲(chǔ)單元,后求高16位和,再存入高址存儲(chǔ)單元。由于低位和可能向高位有進(jìn)位,因而高位字相加語(yǔ)句需用ADC指令,則低位相加有進(jìn)位時(shí),CF1,高位字相加時(shí),同時(shí)加上CF中的1。實(shí)驗(yàn)步驟:(1)輸入程序并檢查無(wú)誤,經(jīng)匯編、連接后裝入系統(tǒng)。(設(shè):CS:0000H,IP:2000H)(2)用U0000:2000查看MOV AX,XXXX(DATA)語(yǔ)句,得到數(shù)據(jù)段段地址CS:XXXX。用E命令EXXXX:0000給XL,XH,YL,YH賦值存入二進(jìn)制數(shù)A0 65 15 00和9E B7 21 00。(3)G0000:2000
42、,運(yùn)行程序。(4)DXXXX:0008,顯示計(jì)算結(jié)果:3E 1D 37 00 CC 。(5)反復(fù)試幾組數(shù),考察程序的正確性。2. 十進(jìn)制數(shù)的BCD碼減法運(yùn)算計(jì)算X-YZ,其中,X、Y、Z為BCD碼。實(shí)驗(yàn)步驟:(1)輸入程序并檢查無(wú)誤,經(jīng)匯編、連接后裝入系統(tǒng)。(設(shè):CS:0000H,IP:2000H)(2)用U0000:2000查看MOV AX,XXXX(DATA)語(yǔ)句,得到數(shù)據(jù)段段地址CS:XXXX。用E命令EXXXX:0000給X,Y賦值存入40和12的BCD碼:00 04 02 01。(3)G0000:2000,運(yùn)行程序。(4)DXXXX:0004,顯示計(jì)算結(jié)果:08 02 CC 。(5)反復(fù)試幾組數(shù),考察程序的正確性。3. 乘法運(yùn)算本實(shí)驗(yàn)實(shí)現(xiàn)十進(jìn)制數(shù)的乘法,被乘數(shù)和乘數(shù)均以BCD碼形式存放于內(nèi)存中,乘積在屏幕上顯示。實(shí)驗(yàn)步驟:(1)輸入程序并檢查無(wú)誤,經(jīng)匯編、連接后裝入系統(tǒng)。(2)用U0000:2000查看MOV AX,XXXX(DATA)語(yǔ)句,得到數(shù)據(jù)段段地址CS:XXXX。用E命令EXXXX:0000給在對(duì)應(yīng)數(shù)據(jù)段填入乘數(shù)與被乘數(shù)。(3)G0000:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《計(jì)算機(jī)公共基礎(chǔ)》課件
- 2025年度南京辦公室裝修項(xiàng)目造價(jià)咨詢合同3篇
- 2025年度燃?xì)庑袠I(yè)員工離職經(jīng)濟(jì)補(bǔ)償及爭(zhēng)議處理合同-@-1
- 課題申報(bào)參考:逆向跨國(guó)并購(gòu)后企業(yè)內(nèi)部控制合規(guī)管理模式構(gòu)建研究
- 二零二五年度國(guó)際能源資源合作合同4篇
- 課題申報(bào)參考:面向社交網(wǎng)絡(luò)大數(shù)據(jù)的沂蒙精神傳播態(tài)勢(shì)及優(yōu)化路徑研究
- 2025版精密機(jī)床購(gòu)置及售后服務(wù)合同2篇
- 二零二五年度醫(yī)療健康商標(biāo)轉(zhuǎn)讓與知識(shí)產(chǎn)權(quán)合同
- 2025年度個(gè)人與公司間技術(shù)秘密保護(hù)協(xié)議
- 2025版內(nèi)衣品牌跨界合作營(yíng)銷合同4篇
- 如何提高售后服務(wù)的快速響應(yīng)能力
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問(wèn)題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語(yǔ)五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語(yǔ)人教版必修第二冊(cè)
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 員工工資條模板
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
評(píng)論
0/150
提交評(píng)論