《微機(jī)原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案_第1頁
《微機(jī)原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案_第2頁
《微機(jī)原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案_第3頁
《微機(jī)原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案_第4頁
《微機(jī)原理與接口技術(shù)》(第四版)周何琴課后習(xí)題答案_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、頁眉內(nèi)容第1章緒論作業(yè)1.將下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。(1) B=202(2) 00111101B=61(3) 01001101B=77(4) B=1643.將下列十進(jìn)制數(shù)分別轉(zhuǎn)換為二進(jìn)制數(shù)和十六進(jìn)制數(shù)。(2) 76= 100 1100B =4CH(4) 134= 1000 0110B =86H4.求下列十進(jìn)制數(shù)的 BCM(1) 327=11 0010 0111 (BCW)(2) 1256=1 0010 0101 0110( BCD)6.求出下列10進(jìn)制數(shù)的原碼、反碼和補(bǔ)碼(2) +85(4) -85解:85=0101 0101B原碼:+85= 0101 0101B -85= 1101 01

2、01B反碼:+85= 0101 0101B -85= 1010 1010B補(bǔ)碼:+85= 0101 0101B -85= 1010 1011B10.畫出微型計(jì)算機(jī)的基本結(jié)構(gòu)框圖,說明各部分的主要功能是什么?解:微型計(jì)算機(jī)的基本結(jié)構(gòu)框圖如下:微處理器CPU控制微處理器與存儲(chǔ)器或 I/O設(shè)備間的數(shù)據(jù)交換;進(jìn)行算術(shù)和邏輯運(yùn)算等操作;判定和控 制程序流向。微處理器主要完成:(1)指令控制:從存儲(chǔ)器中取指令,指令譯碼;(2)數(shù)據(jù)加工:簡(jiǎn)單的算術(shù)邏輯運(yùn)算;(3)操作控制:在微處理器和存儲(chǔ)器或者I/O之間傳送數(shù)據(jù);(4)時(shí)間控制:程序流向控制。存儲(chǔ)器:用來存放數(shù)據(jù)和指令。I/O接口:主機(jī)和外設(shè)間的橋梁,提供

3、數(shù)據(jù)緩沖驅(qū)動(dòng)、信號(hào)電平轉(zhuǎn)換、信息轉(zhuǎn)換、地址譯碼、定時(shí)控制等 各種功能。I/O設(shè)備:輸入原始數(shù)據(jù)和程序,轉(zhuǎn)換成計(jì)算機(jī)能識(shí)別的信息,送入存儲(chǔ)器去等待處理。輸出運(yùn)算結(jié)果。 總線:連接計(jì)算機(jī)系統(tǒng)中各功能部件的信息通道。第2章8086CPU作業(yè)2. 8086CPU內(nèi)部由哪兩部分組成?它們的大致是如何工作的?答:(1) 8086CPU由指令執(zhí)行部件EU和總線接口部件 BIU兩部分組成。 BIU先執(zhí)行讀存儲(chǔ)器操作,從給定地址單元中取出指令,送到先進(jìn)先出的指令隊(duì)列中等待執(zhí)行。存儲(chǔ)器的物理地址=CS 16+IP,在地址加法器 中形成。EU從指令隊(duì)列中取走指令,經(jīng)EU控制器譯碼分析后,向各部件發(fā)控制命令,以完成執(zhí)

4、行指令的操作。BIU與EU是并行工作方式。 當(dāng)指令隊(duì)列已滿,EU在執(zhí)行指令,未向總線接口單元BIU申請(qǐng)讀/寫內(nèi)存或I/O操作時(shí),BIU處于空閑狀態(tài)。指令執(zhí)行過程中,若需對(duì)存儲(chǔ)器或I/O端口存取數(shù)據(jù),EU就要求BIU去完成相應(yīng)的總線周期。5.兩個(gè)帶符號(hào)數(shù)1011 0100B和1100 0111B相加,運(yùn)算后各標(biāo)志位的值等于多少?哪些標(biāo)志位是有意 義的?如果把這兩個(gè)數(shù)當(dāng)成無符號(hào)數(shù),相加后哪些標(biāo)志位是有意義的?解:(1)兩個(gè)帶符號(hào)數(shù): 不考慮CF標(biāo)志1011 0100 + 1100 01111 0111 1011運(yùn)算后各標(biāo)志位狀態(tài)如下:CF=1 ,有進(jìn)位,對(duì)于帶符號(hào)數(shù),無意義。PF=1,結(jié)果有偶數(shù)個(gè)

5、1AF=0,無半進(jìn)位,非 BCD碼運(yùn)算,無意義。ZF=0,結(jié)果非0SF =0,結(jié)果為正數(shù)OF=1,溢出(兩個(gè)負(fù)數(shù)相加,結(jié)果變成了正數(shù))(2)兩個(gè)無符號(hào)數(shù): 不考慮SF和OF標(biāo)志1011 0100 + 1100 01111 0111 1011運(yùn)算后各標(biāo)志位狀態(tài)如下:CF=1 ,有進(jìn)位PF=1,結(jié)果有偶數(shù)個(gè)1ZF=0,結(jié)果非0AF、SF、 OF無意義。20 .簡(jiǎn)要解釋下列名詞的意義。CPU :中央處理單元 CPU (Control Processing Unit)也稱微處理器,是微型計(jì)算機(jī)的核心部件,由運(yùn) 算器ALU、控制器、寄存器組以及總線接口等部件組成。主要完成各種運(yùn)算,負(fù)責(zé)對(duì)整機(jī)的控制。存儲(chǔ)

6、器:用于存儲(chǔ)程序和數(shù)據(jù)的硬件設(shè)備。堆棧:堆棧是一種數(shù)據(jù)結(jié)構(gòu),是內(nèi)部 RAM的一段區(qū)域。設(shè)置堆棧的目的是用于數(shù)據(jù)的暫存,中斷、 子程序調(diào)用時(shí)斷點(diǎn)和現(xiàn)場(chǎng)的保護(hù)與恢復(fù)。IP:指令指針寄存器,用于控制 CPU的指令執(zhí)行順序(只存放偏移量),只能和代碼段寄存器 CS配 合使用,可以確定當(dāng)前所要取的指令的內(nèi)存地址, 且始終指向代碼段中下一條將要讀取到 CPU指令隊(duì)列的 那條指令。順序執(zhí)行程序時(shí), CPU每取一個(gè)指令字節(jié),IP自動(dòng)加1,指向下一個(gè)要讀取的字節(jié)。SP:堆棧指針寄存器,用于指示堆棧的棧頂?shù)刂菲屏康募拇嫫?,它決定了堆棧在內(nèi)部RAM中的物理位置。只能和SS段寄存器配合使用,且始終指向堆棧的棧頂,在

7、堆棧指令中隱含的使用它來定位棧頂數(shù) 據(jù)。BP:基址指針寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在間接尋址中用于定位堆棧段中的內(nèi)存單元。段寄存器:由于CPU內(nèi)部的寄存器都是16位的,為了能夠提供 20位的物理地址,8086系統(tǒng)中采用 了存儲(chǔ)器分段的方法。規(guī)定存儲(chǔ)器的一個(gè)段為 64KB,由段寄存器來確定存儲(chǔ)單元的段基址, 由指令提供該 單元相對(duì)于相應(yīng)段起始地址的 16位偏移量。狀態(tài)標(biāo)志:表示前一步操作(如加、減等)執(zhí)行以后, ALU所處的狀態(tài),后續(xù)操作可以根據(jù)這些狀態(tài) 標(biāo)志進(jìn)行判斷,實(shí)現(xiàn)轉(zhuǎn)移??刂茦?biāo)志:可以通過指令人為設(shè)置,用以對(duì)某一種特定的功能起控制作用(如中斷屏蔽等),反映了人們對(duì)

8、微機(jī)系統(tǒng)工作方式的可控制性。物理地址:存儲(chǔ)器的實(shí)際地址,它是指 CPU和存儲(chǔ)器進(jìn)行數(shù)據(jù)交換時(shí)所使用的地址。物理地址是由段 地址與偏移地址共同決定的,計(jì)算物理地址的表達(dá)式為:物理地址=段地址 x 16 +偏移地址邏輯地址:是在程序中使用的地址,它由段地址和偏移地址兩部分組成。邏輯地址的表示形式為 段地址:偏移地址頁眉內(nèi)容機(jī)器語言:直接用二進(jìn)制編碼表述的指令系統(tǒng)語言,通常稱為機(jī)器語言,機(jī)器語言指令是計(jì)算機(jī)惟一能直接識(shí)別和執(zhí)行的指令。匯編語言:便于記憶和使用,通常使用匯編語言(符號(hào)指令或指令助記符)來描述計(jì)算機(jī)的指令系統(tǒng)。指令:讓計(jì)算機(jī)完成某種操作的命令稱為指令。指令系統(tǒng):一臺(tái)計(jì)算機(jī)所能識(shí)別、執(zhí)行的

9、指令的集合就是它的指令系統(tǒng)??偩€:連接計(jì)算機(jī)系統(tǒng)中其他主要功能部件的橋梁,是計(jì)算機(jī)系統(tǒng)中信息輸送的樞紐,只有通過總線,計(jì)算機(jī)系統(tǒng)的各部件才能實(shí)現(xiàn)相互通信。內(nèi)部總線:微處理器內(nèi)部各個(gè)器件之間傳送信息的通路。系統(tǒng)總線:微處理機(jī)機(jī)箱內(nèi)的底板總線??煞譃椋篒SA、 EISA、 VESA 局部總線、PCI 局部總線等。時(shí)鐘周期:CPU 時(shí)鐘頻率的倒數(shù)稱為時(shí)鐘周期,也稱T 狀態(tài)??偩€周期:BIU 完成一次訪問存儲(chǔ)器或I/O 端口操作所需要的時(shí)間稱為總線周期。一個(gè)基本的總線周期是由 4 個(gè)(或 4 個(gè)以上)時(shí)鐘周期組成的。指令周期:執(zhí)行一條指令所需要的時(shí)間稱為指令周期,不同指令的指令周期的長(zhǎng)短是不同的。一個(gè)

10、指令周期是由幾個(gè)總線周期組成的。21 . 要完成下列運(yùn)算和控制,用什么標(biāo)志判別?其值是什么?( 1 )比較兩數(shù)是否相等?( 2)兩數(shù)運(yùn)算后結(jié)果是正數(shù)還是負(fù)數(shù)?( 3)兩數(shù)相加后是否溢出?( 4)奇偶校驗(yàn)判斷。( 5)兩數(shù)相減后比較大小。( 6)中斷信號(hào)能否允許?答:( 1 )比較兩數(shù)是否相等:兩數(shù)相減后用零標(biāo)志ZF 判斷, ZF=1 ,則相等。( 2)兩數(shù)運(yùn)算后結(jié)果是正數(shù)還是負(fù)數(shù):用符號(hào)標(biāo)志SF判斷,SF=1,則結(jié)果為負(fù)數(shù)。( 3)兩數(shù)相加后是否溢出:用溢出標(biāo)志OF判斷,OF=1,則有溢出。( 4)奇偶校驗(yàn)判斷:采用偶校驗(yàn)方式,判定是否要補(bǔ)“ 1”?用奇偶標(biāo)志 PF 判斷,若數(shù)據(jù)結(jié)果低8 位中

11、含有偶數(shù)個(gè)“1",則PF=1;不用補(bǔ)“俏(5)兩數(shù)相減后比較大?。篫F=1,兩數(shù)相等。對(duì)于無符號(hào)數(shù), CF=1 ,則被減數(shù)小于減數(shù);CF=0,則 被減數(shù)大于減數(shù);ZF=1,則兩數(shù)相等。對(duì)于帶符號(hào)數(shù), SF® OF=1 ,則被減數(shù)小于減數(shù);SF® OF=0,則被 減數(shù)大于減數(shù)。( 6)中斷信號(hào)能否允許:用中斷允許標(biāo)志IF 判斷, IF=1 ,則能允許可屏蔽中斷。22. 說明8086 系統(tǒng)中“最小模式”和 “最大模式”兩種工作方式的主要區(qū)別。最小模式(最小工作方式) :?jiǎn)挝⑻幚砥飨到y(tǒng)(系統(tǒng)中只有一個(gè)8086 微處理器),所有的總線控制信號(hào),都是直接由8086CPU 產(chǎn)

12、生的,適用于規(guī)模較小的微機(jī)應(yīng)用系統(tǒng)。當(dāng)把 8086 的 33 腳 MN/MX 接 +5V 時(shí), 8086 CPU 就處于最小工作方式。最大模式 (最大工作方式) : 多微處理器系統(tǒng)(包含有兩個(gè)或多個(gè)微處理器,一個(gè)主處理器8086CPU,其他的處理器稱為協(xié)處理器它們是協(xié)助主處理器工作的。) ,主要用在中等或大規(guī)模的8086 系統(tǒng)中。當(dāng)把 8086 的 33 腳 MN/MX 接地時(shí),8086 CPU 就處于最大模式。第 3 章 作業(yè)1分別說明下列指令的源操作數(shù)和目的操作數(shù)各采用什么尋址方式。源目的(1)MOV AX, 2048H立即尋址寄存器尋址(2) MOV CL, 0FFH立即尋址寄存器尋址(

13、3) MOV BX, SI寄存器間接尋址寄存器尋址(4) MOV 5BX, BL寄存器尋址寄存器相對(duì)尋址(5) MOV BP+100H, AX寄存器尋址寄存器相對(duì)尋址(6) MOV BX+DI, $立即尋址基址變址尋址(7) MOV DX, ES:BX+SI基址變址尋址寄存器尋址(8) MOV V ALBP+DI, DX寄存器尋址相對(duì)基址加變址尋址(9) IN AL, 05HI/O 端口尋址(或直接尋址)寄存器尋址(10) MOV DS, AX寄存器尋址寄存器尋址2 已知: DS=1000H, BX=0200H, SI=02H, 內(nèi)存 10200H10205H 單元的內(nèi)容分別為10H, 2AH

14、, 3CH, 46H,59H, 6BH 。下列每條指令執(zhí)行完后(1)MOV AX, 0200H ;(2) MOV AX, 200H ;(3) MOV AX, BX ;(4) MOV AX, 3BX;(5) MOV AX, BX+SI ;(6) MOV AX, 2BX+SI ;6指出下列指令中哪些是錯(cuò)誤的,錯(cuò)在什么地方( 1 ) MOV DL, AX( 2) MOV 8650H, AX( 3) MOV DS, 0200H( 4) MOV BX, 1200H( 5) MOV IP, 0FFH( 6) MOV BX+SI+3, IP( 7) MOV AX, BXBP( 8) MOV AL, ES:B

15、P( 9) MOV DL, SIDI( 10) MOV AX, OFFSET 0A20H( 11) MOV AL, OFFSET TABLE( 12) XCHG AL, 50H( 13) IN BL, 05H( 14) OUT AL, 0FFEH10. 已知 AX=2508H , BX=0F36H位 CF 等于什么?( 1 ) AND AH , CL(2) OR BL , 30H(3) NOTAX(4) XORCX,0FFF0H(5) TEST DH , 0FH(6) CMPCX,00H(7) SHR DX, CL(8) SARAL ,1(9) SHLBH ,CL( 10 ) SAL AX ,

16、 1( 11) RCL BX, 1( 12) ROR DX, CL11. 假設(shè)數(shù)據(jù)定義如下:DATA SEGMENTAX 寄存器的內(nèi)容各是什么?AX 內(nèi)容(AX)=0200H(AX)=2A10H(AX)=0200H(AX)=5946H(AX)=463CH(AX)=6B59H錯(cuò)在什么地方錯(cuò)誤,源和目的操作數(shù)類型不匹配,DL 是 8 位寄存器,AX 是 16 位寄存器。錯(cuò)誤,立即數(shù)不能作為目的操作數(shù)。錯(cuò)誤,不能用立即數(shù)直接給段寄存器賦值。錯(cuò)誤,不能在兩個(gè)存儲(chǔ)單元之間直接傳送數(shù)據(jù)錯(cuò)誤, IP 不能作目的操作數(shù)或不能用立即數(shù)直接給IP 寄存器賦值。錯(cuò)誤, IP 不能作源操作數(shù)。錯(cuò)誤,基址變址尋址方式必

17、須是一個(gè)基址寄存器與一個(gè)變址寄存器,不能兩個(gè)同時(shí)為基址寄存器(BX 、 BP 均為基址寄存器)。正確。錯(cuò)誤,基址變址尋址方式必須是一個(gè)基址寄存器與一個(gè)變址寄存器,不能兩個(gè)同時(shí)為變址寄存器(SI、 DI 均為變址寄存器)。錯(cuò)誤, OFFSET 后必須是存儲(chǔ)單元標(biāo)號(hào)地址,不能是立即數(shù)。錯(cuò)誤,操作數(shù)類型不匹配,AL 為 8 位, TABLE 為 16 位。錯(cuò)誤,交換指令XCHG的操作數(shù)不能是立即數(shù)。錯(cuò)誤, IN 指令的目的操作數(shù)必須是累加器錯(cuò)誤, OUT 指令的源操作數(shù)必須是累加器,目的操作數(shù)為8 位 I/O 端口地址或用DX做橋梁的16 位I/O 端口地址。CX=0004H ,DX=1864H ,

18、求下列每條指令執(zhí)行后的結(jié)果是什么?標(biāo)志(AH )=04HCF=0(BL )=36HCF=0(AX )=0DAF7HCF 不變(不影響( CX) =0FFF4H CF=0(DH )=18HCF=0(CX )=0004HCF=0DX) =0186H CF=0( AL ) =04H CF=0BH ) =0F0H CF=0AX ) =4A10H CF=0CF=0, ( BX) =1E6CHCF=1, ( BX) =1E6DH, ( DX) =4186H CF=0CF )CF=0STRING DB The Personal Computer & TVDATA ENDS試用字符串操作指令編程完成以

19、下功能:( 1 )把該字符串傳送到附加段中偏移地址為GET_CHAR 開始的內(nèi)存單元中。解:程序段如下:LEASI, STRING;置源串偏移地址;置目的串偏移地址;置串長(zhǎng)度;方向標(biāo)志復(fù)位;字符串傳送LEA DI , GET_CHARMOV CX, 26CLDREP MOVSB12編程將AX 寄存器中的內(nèi)容以相反的次序傳送到DX 寄存器中,并要求AX 中的內(nèi)容不被破壞,然后統(tǒng)計(jì) DX 寄存器中1 的個(gè)數(shù)是多少。解:將 AX 的內(nèi)容用ROR 循環(huán)右移,16 次之后 AX 的內(nèi)容不變(如果用算術(shù)/邏輯右移SHL/SAL ,則 AX的內(nèi)容破壞,需要用堆棧PUSHU AX/POP AX 保護(hù)) ,其最

20、低位移入CF 中, 再使用 RCL 循環(huán)左移將CF 中的值移入DX 中。并且,如果CF 的值為1,則將BL 加 1 。MOV CX, 16XOR BL, BLLP1:ROR AX, 1JNC LP2INC BLLP2:RCL DX,1LOOP LP1HLT調(diào)試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTBUF DW 12BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,

21、AXMOV AX,1234HMOV CX, 16XOR BL, BLLP1:ROR AX, 1JNC LP2INC BLLP2:RCL DX,1LOOP LP1HLTCODE ENDS END START15. 某班有七個(gè)同學(xué)的英語成績(jī)低于80 分,分?jǐn)?shù)存在ARRAY 數(shù)組中,試編程完成以下工作:給每人加5分,結(jié)果存到NEW 數(shù)組中 .解:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB 7 DUP(?)NEWDB 7 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,S

22、S:STACKSTART:MOV CX, 7MOV BX, 0LP1:MOV AL, ARRAYBXADD AL, 05HDAAMOV NEWBXI, ALINC BXLOOP LP1HLTCODE ENDSEND START調(diào)試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB65H,76H,78H,54H,90H,85H,68HNEWDB7 DUP(?)BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUS

23、H DSMOV AX,DA TAMOV DS,AXMOV CX, 7MOV BX, 0LP1:MOV AL, ARRAYBXADD AL, 05HDAAMOV NEWBXI, ALINC BXLOOP LP1HLTCODE ENDSEND START某班有七個(gè)同學(xué)的英語成績(jī)低于80 分,分?jǐn)?shù)存在ARRAY 數(shù)組中,試編程完成以下工作:( 1)給每人加5 分,結(jié)果存到NEW 數(shù)組中( 2)把總分存到SUM 單元中( 3)把平均分存到AVERAGE 單元中解:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB 7 DUP(?)

24、NEWDB 7 DUP(?)SUMDW 0AVGDB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV CX,7MOV SI,0MOV SUM, 0MOV AH, 0LP1:MOV AL,ARRAYSIADD AL, 05HDAAMOV NEWSI, ALADD AL ,SUMDAAMOV SUM,ALADC AH, 0DAAMOV SUM+1, AHINC SILOOP LP1MOV AX, SUMMOV BL,07HDIV BLMOV AVG, ALHLTCODE ENDSEND START 調(diào)試程序:STACK

25、SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTARRAYDB65H,76H,78H,54H,90H,85H,68HNEWDB7 DUP(?)SUMDB00H,00HAVGDB 0BUF1 DW 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,AXMOV CX, 7MOV SI, 0MOV SUM, 0MOV AH, 0LP1:MOV AL, ARRAYSIADD AL, 05H DAAMOV NEWSI

26、, ALADD AL , SUM DAAMOV SUM,ALADC AH, 0MOV SUM+1, AHINC SILOOP LP1MOV AL, SUMMOV AH,SUM+1MOV BL,07H DIV BLMOV AVG, AL HLTCODE ENDS END START13. 設(shè) CS=1200H, IP=0100H, SS=5000H, SP=0400H, DS=2000H, SI=3000H, BX=0300H, (20300H)=4800H, (20302H)=00FFH, TABLE=0500H, PROG_N 標(biāo) 號(hào)的 地址為1200:0278 H , PROG_F 標(biāo) 號(hào)

27、的 地址為3400:0ABCH 。說明下列每條指令執(zhí)行完后,程序分別轉(zhuǎn)移到何處執(zhí)行?JMP 指令(1)JMP PROG_N段內(nèi)直接近轉(zhuǎn)移,目的地址為1200H:0278H( 或 12278H)(2)JMP BX段內(nèi)寄存器間接轉(zhuǎn)移,目的地址為1200H:0300H( 或 12300H)(3)JMP BX物理地址=DSX 10H+BX=2000H X 10H+0300H=20300H(20300H)=4800H f IP段內(nèi)存儲(chǔ)器間接轉(zhuǎn)移,目的地址為1200H:4800H( 或 16800H)(4)JMP FAR PROG_F段間直接轉(zhuǎn)移,目的地址為3400H:0ABCH( 或 34ABCH)(5

28、)JMP DWORD PTRBX物理地址=DSX 10H+BX=2000H X 10H+0300H=20300H(20300H)=4800H f IP, (20302H)=00FFH f CS段間存儲(chǔ)器間接轉(zhuǎn)移,目的地址為00FFH:4800H( 或 057F0H)JMP 改為 CALL 后,目的地址與JMP 相同。(1)CALL PROG_N段內(nèi)直接調(diào)用,3字節(jié)指令,目的地址為1200H:0278H( 或 12278H), 0103H 入棧, SP=03FEH(2)CALL BX段內(nèi)寄存器間接調(diào)用,2 字節(jié)指令,目的地址為1200H:0300H( 或 12300H) , 0102H 入棧,S

29、P=03FEH(3)CALL BX段內(nèi)存儲(chǔ)器間接調(diào)用,2字節(jié)指令,目的地址為1200H:4800H( 或 16800H), 0102H 入棧,SP=03FEH(4)CALL FAR PROG_F段間直接調(diào)用,5 字節(jié)指令,目的地址為3400H:0ABCH( 或 34ABCH) , 1200H 和 0105H 分別入棧,SP=03FCH(5)CALL DWORD PTRBX段間間接調(diào)用,2 字節(jié)指令,目的地址為00FFH:4800H( 或 057F0H), 1200H 和 0102H 分別入棧,SP=03FCH部分調(diào)試程序:STACK SEGMENT STACKDB 100 DUP(?)STAC

30、K ENDSDATA SEGMENTBUF DW 12BUF1 DW 100 DUP (?)ORG 300HDB 00H,48H,0FFH,00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV AX,DA TAMOV DS,AXMOV BX,0300HCALL PROG_N頁眉內(nèi)容CALL BXCALL BXORG 0278PROG_N:RETORG 0300HRETORG 4800HRETHLTCODE ENDSEND START14. 如在下列程序段的括號(hào)中分別填入以下指令:( 1) LOOP NE

31、XT(2) LOOPE NEXT(3) LOOPNE NEXTAX, BX, CX, DX 寄存器的內(nèi)容分別是什么試說明在這三種情況下,程序段執(zhí)行完后,START: MOV AX, 01HMOV BX, 02HMOV DX, 03HMOV CX, 04HNEXT:INC AXADD BX, AX SHR DX, 1DELAY5 : MOV CX, N4解:()LOOP 過程:AXBXCX初始值01H02H循環(huán)1 次02H04H循環(huán)2 次03H07H循環(huán)3 次04H0BH結(jié)果:循環(huán)4 次05H10HAXBXCX(1)05H10H00H(2)02H執(zhí)行一次,ZF=0,04H退出循環(huán)。03H(3)0

32、3H執(zhí)行兩次,ZF=1 ,退出循環(huán)。07H退出循環(huán)。02HDX04H03 H03H 01H02H00H01H00H00H00HDX00H01H00H5ms 的子程序。20.設(shè)8086CPU的時(shí)鐘頻率為5MHz ,請(qǐng)編寫延時(shí)解:微機(jī)的主頻率為5MHz則:時(shí)鐘周期=主頻率的倒數(shù)=1/ (5X10-6) =0.2 s 延時(shí)5ms需要的時(shí)鐘周期數(shù) =5ms/ 0.2 s=25000延時(shí)子程序如下:頁眉內(nèi)容DLY1 : NOPLOOP DLY1RET應(yīng)該有 25000=4+ 3 XN+ 17N=1250=04E2H延時(shí)子程為:DELAY5 : MOV CX , 04E2HDLY1 : NOPLOOP D

33、LY1RET3 X N17 X ( N-1) + 516X (N-1) + 5+16,才能實(shí)現(xiàn)要求的延時(shí)。則第4章作業(yè)P1535 .閱讀下列程序,說明每條指令執(zhí)行后的結(jié)果是什么?X1 DB 65H,78HX2 DW 06FFH, 5200HX3 DD ?GO: MOV AL, TYPE X1MOV BL, TYPE X2MOV CL, TYPE X3MOV AH, TYPE GOMOV BH, SIZE X2MOV CH, LENGTH X3解:(1)前三條語句的功能是設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。變量偏移地址X10000H0001HX20002H0003H0004H

34、0005HX30006H0007H0008H0009H程序匯編后結(jié)果如下:六條程序執(zhí)行結(jié)果如下:(AL) =01H;設(shè)置變量類型屬性,字節(jié)數(shù)(BL) =02H;設(shè)置變量類型屬性,字節(jié)數(shù)(CL) =04H;設(shè)置變量類型屬性,字節(jié)數(shù)(AH) =0FFH ;設(shè)置GO顯示類型,近標(biāo)號(hào),為-1,補(bǔ)碼表示(BH) =02H;設(shè)置數(shù)據(jù)類型,無 DUP時(shí),返回?cái)?shù)據(jù)類型的字節(jié)數(shù)(CH) =01H;無 DUP 時(shí),返回 1。程序執(zhí)行后結(jié)果如下:HU13CF:000013CF:0000IEPUSHDSL3CF;O001B0GE13EOU»XF13GE1JCF:0004QEDDMOWDG,AN物1(拓TW1

35、nonAU HI13CF:0000日地MOVBL, 0213CF:030AB104MDUCL. 0413GF;aaacH4FFEWftH.FF13Cr:000ED7B2nonDIL 02nCF:0AlHBEffinnutlH.fll13CF:n012IFPOPDS13CF:0013F4HLTisct.yun02B8FFFFADDBH,IBX+S1*FFFF113CF:0I318GWPU&H13CF:fiF119MDU13CF:001C50PJSH由X1丸上MIDLEAftX, LBP+FE/fi JHG-13CF;0000 13CF2O013lfiX=FFP11BX=fRP2CX=R1

36、DS=0OB0SP0664BP =0009 SI =ffl«0 DI=QeS0|Dt>=lJB7ES =±5E7s«=13C7CS=13CFIP =0613 NU UP EI PL NZ NA P0 NCE3CF:Uk113 F4HLT調(diào)試程序如下:STACK SEGMENT STACKDB100 DUPSTACK ENDSDATA SEGMENTX1 DB 65H,78HX2 DW 06FFH, 5200HX3 DD ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSMOV

37、 AX,DA TAMOV DS,AXGO: MOV AL, TYPE X1MOV BL, TYPE X2MOV CL, TYPE X3MOV AH, TYPE GOMOV BH, SIZE X2MOV CH, LENGTH X3POP DSHLTCODE ENDSEND START6 .畫出示意圖,說明下列變量在內(nèi)存中如何讓存放?A1 DB 12H,34HA2 DB Right.'A3 DW 5678HA4 DB 3 DUP(1)設(shè)置數(shù)據(jù)于數(shù)據(jù)段中,從數(shù)據(jù)段偏移地址0000H開始存放。變量偏移地址數(shù)據(jù)A10000H12H12.編程實(shí)現(xiàn),從鍵盤輸入一個(gè)十進(jìn)制數(shù)09,查表求鍵入數(shù)字的七段代

38、碼(共陽極LED顯示器的段碼),存入DL中,并在鍵入數(shù)字之前,顯示提示信息“Please input a number(09):解:STACK SEGMENT STACKDB 100 DUPSTACK ENDSDATA SEGMENTTABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90HBUF DB 'Please input one number(0 9):',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES

39、:DATA頁眉內(nèi)容START: PUSHMOVMOVMOVMOVDSAX,DA TADS,AXDX,OFFSET BUFAH,09HMOVSI, ALINT 21HMOV AH,1INT 21HAND AL,0FHMOV BX,OFFSET TABLEXLATMOV DL,ALPOP DSHLTCODE ENDSEND START調(diào)試結(jié)果:數(shù)字5 的共陽極LED 七段碼為92H 。15. 已知:在內(nèi)存BUF 開始的單元中,存在一串?dāng)?shù)據(jù):58, 75, 36, 42, 89。編程找出其中的最小值存入MIN 單元中,并將這個(gè)數(shù)顯示在屏幕上。解:STACK SEGMENT STACKDB 100 D

40、UP(?)STACK ENDSDATA SEGMENTBUF DB 58H, 75H, 36H, 42H, 89HMIN DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV CX, 4MOV BX, OFFSET BUFMOV AL, BXST1: INC BXCMP AL, BXJBE NEXTMOV AL, BXNEXT:LOOP ST1MOV MIN, ALAND AL, 0F0HROR AL, CLADD AL, 30HMOV DL, ALM

41、OV AH, 02HINT 21HMOV AL, MINAND AL, 0FHADD AL, 30HMOV DL, ALMOV AH, 02HINT 21HPOP DSMOV AH, 4CHINT 21HHLTCODE ENDSEND START18. 某班有 20 個(gè)同學(xué)的微機(jī)原理成績(jī)存放在LIST 開始的單元中,要求編程先從高到低的次序排列好,再求出總分和平均值,分別存放在SUM 和 AVER 開始的單元中。解:STACK ENDSDATA SEGMENTLIST DB 65H,76H,78H,54H,90H,85H,68H,66H,77H,88HDB 99H, 89H, 79H, 69H

42、,75H,85H,63H,73H,83H,93HSUM DW 0AVER DB 0BUF DB 100 DUP (?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSHMOVMOVMOVMOVLP0: MOVMOVLP1: MOVINCCMPJNCMOVMOVDSAX,DA TADS,AXDI, OFFSET LISTBX, 19SI, DICX, BXAL, SISIAL, SILP2DL, SISI-1, DL頁眉內(nèi)容LP2:LOOPLP1DECBXJNZLP0LP3:MOVCX, 20MOVBX, OFFSET

43、LISTMOVSUM, 0XORAX, AXLP4: ADDAL, BXDAAADCAH, 0INCBXLOOP LP4MOV SUM, AXMOV BL, 20HDIV BLADD AL,0DAAMOV AVER ALPOP DSHLTCODE ENDSEND START20. 編程將存放在AL 中的無符號(hào)二進(jìn)制數(shù),轉(zhuǎn)化成十六進(jìn)制數(shù),再轉(zhuǎn)換成ASII 碼并顯示在屏幕上。解:程序如下:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS

44、:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV DH, ALMOV CH, 02HST1: MOV CL, 4ROR DH, CLMOV AL, DHAND AL, 0FHADD AL, 30HCMP AL, 39H頁眉內(nèi)容JBE DISPADD AL, 07HDISP: MOV DL, ALMOV AH, 02HINT 21HDEC CHJNZ ST1POP DSMOV AH, 4CHINT 21HHLTCODE ENDSEND START調(diào)試程序如下:STACK SEGMENT STACKBUF DB 01111000BDB

45、100 DUP(?)STACK ENDSDATA SEGMENTDB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART: PUSH DSMOV AX, DA TAMOV DS, AXMOV AL, BUFMOV DH, ALMOV CH, 02HST1: MOV CL, 4ROR DH, CLMOV AL, DHAND AL, 0FHADD AL, 30HCMP AL, 39HJBE DISPADD AL, 07HDISP: MOV DL, ALMOV AH, 02HINT 21HDEC CHJNZ ST

46、1POP DSMOV AH, 4CH頁眉內(nèi)容INT 21HHLTCODE ENDSEND START21. 編寫程序,使用三種以上的方法,將存儲(chǔ)器中2000H 開始的地址單元中的100 字節(jié)數(shù)據(jù)復(fù)制到3000H 開始的存儲(chǔ)器地址單元中。解:( 1 )利用通用傳送指令MOVMOV SI , 2000H注意這里如果是標(biāo)號(hào)地址,則必須用OFFSETMOV DI , 3000HMOV CX , 100LP1 : MOV AL , SIMOV DI , ALINC SIINC DILOOP LP1HLTMOV CX , 100MOV BX , 0LP0: MOV AL , 2000BXMOV 3000B

47、X , ALINC BXLOOP LP0 HLT ( 2)利用交換指令XCHGMOV SI , 2000H MOV DI , 3000H MOV CX , 100 LP2:MOV AL , SIXCHG DI , AL INC SI INC DI LOOP LP2 HLT ( 3)利用換碼指令XLATMOV BX , 2000HMOV DI , 3000HMOV CX , 100LP3: XOR AL , ALXLATMOV DI, ALINC BXINC DILOOP LP3 HLT ( 4)利用堆棧實(shí)現(xiàn)數(shù)據(jù)傳送MOV SI , 2000HMOV DI , 3000HMOV CX , 50L

48、P4:PUSH SIPOP DIINC SIINC SIINC DIINC DILOOP LP4 HLT( 5)利用串操作指令REP MOVSBMOV SI , 2000HMOV DI , 3000HMOV CX , 100CLD; DF=0, SI、 DI 自動(dòng) +1REP MOVSBHLT調(diào)試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTORG 2000HDB 11H,22H,33H,44H,55H.66H,77H,88H,99HDB 100 DUP(?)ORG 3000HDB 100 DUP(?)DATA ENDSCOD

49、E SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:PUSH DSMOV AX,DA TAMOV DS,AXMOV SI,2000HMOV DI,3000HMOV CX,100LP1: MOV AL,SIMOV DI,ALINC SIINC DILOOP LP1POP DSHLTCODE ENDSEND START22. 在 DATA 開始的4 個(gè)單元中存放著一個(gè)32 位數(shù), 求出其中的“ 1的個(gè)數(shù),”并存入 COUNT 單元中。解:DATA SEGMENTDATA1 DBCOUNTDATA ENDS0FEH, 86H, 7CH, 35HDB 00HST

50、ACKSTACKCODESEGMENTDB 100 DUP(?)ENDSSEGMENTCS: CODE , DS: DATA, SS: STACK DSMOVAX, DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSI,OFFSETMOVBX,SIMOVDX,SI+2MOVCX,32XOR AL , ALLP1 : RCRDX,1RCRBX,1JNCLP2INCALLP2: LOOPLP1MOVCOUNT, ALPOPDSDATA1ASSUMESTART: PUSHMOV AH , 4CHINT 21HHLTCODE ENDSEND START1. 下列變量各占多少字節(jié)?A1DW23H ,5876H4 字節(jié)A2DB3 DUP(?) , 0AH , 0DH , $6 字節(jié)A3DD5 DUP (1234H , 567890H )4X 2X5=40 字節(jié)A4DB4 DUP(3 DUP ( 1 , 2, ABC ) )5X3X4=60 字節(jié)調(diào)試程序:STACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTDA1DW 23H,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論