欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案

      時(shí)間:2019-05-14 14:17:28下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案》。

      第一篇:微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案

      第1章

      1.1 微處理器、微型計(jì)算機(jī)和微型計(jì)算機(jī)系統(tǒng)三者之間有什么不同?

      解:

      把CPU(運(yùn)算器和控制器)用大規(guī)模集成電路技術(shù)做在一個(gè)芯片上,即為微

      處理器。微處理器加上一定數(shù)量的存儲(chǔ)器和外部設(shè)備(或外部設(shè)備的接口)構(gòu)成了

      微型計(jì)算機(jī)。微型計(jì)算機(jī)與管理、維護(hù)計(jì)算機(jī)硬件以及支持應(yīng)用的軟件相結(jié)合就形

      成了微型計(jì)算機(jī)系統(tǒng)。

      1.2 CPU在內(nèi)部結(jié)構(gòu)上由哪幾部分組成?CPU應(yīng)該具備哪些主要功能? 解:

      CPU主要由起運(yùn)算器作用的算術(shù)邏輯單元、起控制器作用的指令寄存器、指

      令譯碼器、可編程邏輯陣列和標(biāo)志寄存器等一些寄存器組成。其主要功能是進(jìn)行算

      術(shù)和邏輯運(yùn)算以及控制計(jì)算機(jī)按照程序的規(guī)定自動(dòng)運(yùn)行。

      1.3微型計(jì)算機(jī)采用總線結(jié)構(gòu)有什么優(yōu)點(diǎn)? 解:

      采用總線結(jié)構(gòu),擴(kuò)大了數(shù)據(jù)傳送的靈活性、減少了連線。而且總線可以標(biāo)準(zhǔn)

      化,易于兼容和工業(yè)化生產(chǎn)。

      1.4數(shù)據(jù)總線和地址總線在結(jié)構(gòu)上有什么不同之處?如果一個(gè)系統(tǒng)的數(shù)據(jù)和地址合用

      一套總線或者合用部分總線,那么要靠什么來(lái)區(qū)分地址和數(shù)據(jù)? 解:

      數(shù)據(jù)總線是雙向的(數(shù)據(jù)既可以讀也可以寫(xiě)),而地址總線是單向的。

      8086CPU為了減少芯片的引腳數(shù)量,采用數(shù)據(jù)與地址線復(fù)用,既作數(shù)據(jù)總線也作為

      地址總線。它們主要靠信號(hào)的時(shí)序來(lái)區(qū)分。通常在讀寫(xiě)數(shù)據(jù)時(shí),總是先輸出地址

      (指定要讀或?qū)憯?shù)據(jù)的單元),過(guò)一段時(shí)間再讀或?qū)憯?shù)據(jù)。

      1.8在給定的模型中,寫(xiě)出用累加器的辦法實(shí)現(xiàn)15×15的程序。

      DEC H

      JP

      NZ,LOOP

      HALT

      第 2章

      作業(yè) 答案

      2.1 IA-32結(jié)構(gòu)微處理器直至Pentillm4,有哪幾種? 解:80386、30486、Pentium、Pentium Pro、PeruiumII、PentiumIII、Pentium4。

      2.6IA-32結(jié)構(gòu)微處理器有哪幾種操作模式? 解:

      IA一32結(jié)構(gòu)支持3種操作模式:保護(hù)模式、實(shí)地址模式和系統(tǒng)管理模式。操

      作模式確定哪些指令和結(jié)構(gòu)特性是可以訪問(wèn)的。

      2.8IA-32結(jié)構(gòu)微處理器的地址空間如何形成?

      解:

      由段寄存器確定的段基地址與各種尋址方式確定的有效地址相加形成了線性地

      址。若末啟用分頁(yè)機(jī)制,線性地址即為物理地址;若啟用分頁(yè)機(jī)制,則它把線性地

      址轉(zhuǎn)為物理地址。

      2.15 8086微處理器的總線接口部件由哪幾部分組成? 解:

      8086微處理器中的總線接口單元(BIU)負(fù)責(zé)CPU與存儲(chǔ)器之間的信息傳

      送。具體地說(shuō),BIU既負(fù)責(zé)從內(nèi)存的指定部分取出指令,送至指令隊(duì)列中排隊(duì)

      (8086的指令隊(duì)列有6個(gè)字節(jié),而8088的指令隊(duì)列只有4個(gè)字節(jié));也負(fù)責(zé)傳送執(zhí)

      行指令時(shí)所需的操作數(shù)。執(zhí)行單元(EU)負(fù)責(zé)執(zhí)行指令規(guī)定的操作。

      2.16段寄存器CS=120OH,指令指針寄存器IP=FFOOH,此時(shí),指令的物理地址為

      多少? 解:

      指令的物理地址=12000H+FFOOH=21FOOH

      第3章 作 業(yè)答案

      3.1分別指出下列指令中的源操作數(shù)和目的操作數(shù)的尋址方式。

      (1)MOV SI, 30O

      (2)MOV CX, DATA[DI]

      (3)ADD AX, [BX][SI]

      (4)AND AX, CX

      (5)MOV[BP], AX

      (6)PUSHF

      解:

      (l)源操作數(shù)為立即尋址,目的操作數(shù)為寄存器尋址。

      (2)源操作數(shù)為變址寄存器加位移量尋址,目的操作數(shù)為寄存器尋址。

      (3)源操作數(shù)為基址加變址尋址,目的操作數(shù)為寄存器尋址。

      (4)源操作數(shù)和目的操作數(shù)都為寄存器尋址。

      (5)源操作數(shù)為寄存器尋址,目的操作數(shù)為寄存器間接尋址。

      (6)為堆棧操作。

      3.2試述指令MOVAX,2000H和MOV AX,DSz[2000H]的區(qū)別。

      解:前一條指令是立即尋址,即把立即數(shù)2000H傳送至寄存器AX。后一條指令

      是直接尋址,是把數(shù)據(jù)(DS)段中的地址為200OH單元的內(nèi)容傳送至寄存器AX。

      3.3寫(xiě)出以下指令中內(nèi)存操作數(shù)的所在地址。

      (1)MOV AL, [BX+10]

      (2)MOV [BP+10], AX

      (3)INC BYTEPTR[SI十5]

      (4)MOV DL, ES:[BX+SI]

      (5)MOV BX,[BP+DI+2] 解:

      (1)數(shù)據(jù)段BX+10單元。

      (2)堆棧段BP+10單元。

      (3)數(shù)據(jù)段SI+5字節(jié)單元。

      (4)附加段(ES段)BX+SI單元。

      (5)堆棧段BP+DI+2單元。

      3.4判斷下列指令書(shū)寫(xiě)是否正確。

      (1)MOV AL, BX

      (2)MOV AL, CL

      (3)INC [BX]

      (4)MOV 5, AL

      (5)MOV [BX],[SI]

      (6)M0V BL, OF5H

      (7)MOV DX, 2000H

      (8)POP CS

      (9)PUSH CS

      解:

      (l)不正確,AL與BX數(shù)據(jù)寬度不同。

      (2)正確。

      (3)不正確,因?yàn)椴幻鞔_是增量字節(jié)還是字。

      (4)不正確,立即數(shù)不能作為目的操作數(shù)。

      (5)不正確,因?yàn)椴幻鞔_要傳送的是字節(jié)還是字。

      (6)正確。

      (7)正確。

      (8)不正確,CS不能作為:pop指令的操作數(shù)。

      (9)不正確,CS不能作為PUSH指令的操作數(shù)。

      3.5設(shè)堆錢(qián)指針SP的初值為1000H,AX=2000H,BX=3000H,試問(wèn):

      (1)執(zhí)行指令PUSHAX后SP的值是多少?

      (2)再執(zhí)行PUSHBX及POPAX后,SP、AX和BX的值各是多少?

      解:

      (1)SP=OFFEH。

      (2)SP=OFFEH;AX=3000H,BX=3000H。

      3.6要想完成把[3000H]送[2000H]中,用指令:

      MOM[200OH],[300OH]

      是否正確?如果不正確,應(yīng)該用什么方法實(shí)現(xiàn)?

      解:不正確。

      正確的方法是:

      MOV AL, [300OH]

      MOV [2000H],AL

      3.7假如想從200中減去AL中的內(nèi)容,用SUB200,AL是否正確?如果不正確,應(yīng)該

      用什么方法?

      解:不正確。

      正確的方法是:

      MOV BL, 200

      SUB BL,AL

      3.8試用兩種方法寫(xiě)出從8OH端口讀入信息的指令。再用兩種方法寫(xiě)出從4OH口輸

      出10OH的指令。

      解:

      (1)IN AL, 80H

      (2)MOV DX,8OH

      IN AL, DX

      (3)MOV,AL,lOOH

      OUT40H,AL

      4)MOV AL,10OH

      MOV DX,4OH

      OUT DX,AL

      3.9假如:AL=20H,BL=1OH,當(dāng)執(zhí)行CMPAL,BL后,問(wèn):

      (1)AL、BL中的內(nèi)容是兩個(gè)無(wú)符號(hào)數(shù),比較結(jié)果如何?影響哪兒個(gè)標(biāo)志位?

      (2)AL、BL中的內(nèi)容是兩個(gè)有符號(hào)數(shù),結(jié)果又如何,影響哪幾個(gè)標(biāo)志位?

      解:

      (l)AL=2OH,BL=1OH,O=0,S=0,Z=0,A=0,P=0,C=0。

      (2)因?yàn)閮蓚€(gè)都是符號(hào)正數(shù),其結(jié)果與(l)相同。

      3.10若要使AL×10,有哪幾種方法,試編寫(xiě)出各自的程序段?

      解:

      (1)使用乘法指令:

      MOVBL,10

      MULBI,(2)使用移位指令:

      SHLAL,1

      MOVBL,AL

      SHLAL,2

      ADDAL,BL

      (3)使用加法指令:

      ADDAL,AL

      MOVBL,AL

      ADDAL,AL

      ADDAL,AL

      ADDAL,BL

      3.118086匯編語(yǔ)言指令的尋址方式有哪幾類(lèi)?哪種尋址方式的指令執(zhí)行速度最快?

      解:尋址方式分為:立即數(shù)尋址方式、寄存器操作數(shù)尋址方式和存儲(chǔ)器操作數(shù)尋

      址方式。其中,寄存器操作數(shù)尋址方式的指令執(zhí)行速度最快。

      3.12在直接尋址方式中,一般只指出操作數(shù)的偏移地址,那么,段地址如何確定?如

      果要用某個(gè)段寄存器指出段地址,指令中應(yīng)該如何表示?

      解:

      默認(rèn)的數(shù)據(jù)訪問(wèn),操作數(shù)在DS段;堆棧操作在SS段;串操作源操作數(shù)(SI)在DS段, 目的操作數(shù)(DI)在ES段;用BP作為指針在SS段。如果要顯式地指定段地址,則在操

      作數(shù)中規(guī)定段寄存器。例如:

      MOVAX,ES:(BX+10H)

      3.13在寄存器間接尋址方式中,如果指令中沒(méi)有具體指明段寄存器,那么如何確定

      段地址?

      解:

      在寄存器間接尋址方式中,如果指令中沒(méi)有具體指明段寄存器,段地址是

      隱含約定的,也就是隱含地選擇段寄存器。如操作類(lèi)型為指令,則指定代碼段寄

      存器CS,如操作類(lèi)型為堆棧操作,則指定堆找段寄存器SS,…,如表3-1中所示。

      當(dāng)需要超越約定時(shí),通常用段替代前綴加冒號(hào)“:”來(lái)表示段超越,它允許程序設(shè)

      計(jì)者偏離任何約定的段。

      例如:

      MOV ES:〔BX],AX

      這時(shí)數(shù)據(jù)將從寄存器EAX傳送至附加段中由EBX尋址的存儲(chǔ)單元,而不是傳送

      到數(shù)據(jù)段中。

      3.14采用寄存器間接尋址方式時(shí),BX、BP、SI、DI分別針對(duì)什么情況來(lái)使用?這4個(gè)

      寄存器組合間接尋址時(shí),地址是怎樣計(jì)算的?請(qǐng)舉例說(shuō)明。

      解: 在寄存器間接尋址方式下,BX和BP作為間址寄存器使用,而SI、DI作為

      變址寄存器使用。除BP間址默認(rèn)的段為堆棧段,其他的都默認(rèn)為數(shù)據(jù)段。它們

      都可以單獨(dú)使用,或加上偏移量或組合使用。如:

      [BX+n]

      LBP+n]

      [SI+n]

      [DI+n]

      [BX+SI+n]

      [BX+DI+n]

      [BP+SI+n]

      [BP+DI+n]

      3.15設(shè)DS=2100H,SS=5200H,BX=1400H,BP=6200H,說(shuō)明下面兩條指令所進(jìn)行的具體操作:

      MOVBYTEPTR[BP],200

      MOVWORDPTR[BX],2000

      解:前一條指令是把立即數(shù)(應(yīng)是字節(jié))200,傳送至堆棧段(BP的默認(rèn)段〉偏移

      量由BP規(guī)定的字節(jié)單元,地址為:52000H+620OH=58200H

      第二條指令是把立即數(shù).2000,傳送至數(shù)據(jù)段(BX的默認(rèn)段)偏移量由BX規(guī)定的字單元,地址為:21000H+1400H=22400H。

      3.16使用堆錢(qián)操作指令時(shí)要注意什么問(wèn)題?傳送指令和交換指令在涉及內(nèi)存操作數(shù)

      時(shí)應(yīng)該分別要注意什么問(wèn)題?

      解:使用堆棧指令可以把內(nèi)存單元作為一個(gè)操作數(shù)(從內(nèi)存到內(nèi)存)。但堆棧

      固定在堆棧段且只能由SP指向。且堆棧操作要修改堆核指針。MOV指令不能實(shí)

      現(xiàn)內(nèi)存單元間的數(shù)據(jù)傳送。XCHG指令是交換,有一個(gè)操作數(shù)必須是寄存器。

      3.17下面這些指令中哪些是正確的?哪些是錯(cuò)誤的?若是錯(cuò)誤的,請(qǐng)說(shuō)明原因。

      (1)XCHG CS, AX

      (2)MOV[BX], [1000]

      (3)XCHGBX, IP

      (4)PUSHCS

      (5)POP CS

      (6)IN BX, DX

      (7)MOVBYTE[BX],100O

      (8)MOVCS,[1000]

      解:

      (l)錯(cuò)誤,CS不能交換。

      (2)錯(cuò)誤,MOV指令不能在內(nèi)存間傳送。

      (3)錯(cuò)誤,IP不能交換。

      (4)錯(cuò)誤,CS可以作為PUSH指令的操作數(shù)。

      (5)錯(cuò)誤,CS可以作為POP指令的操作數(shù)。

      (6)錯(cuò)誤,IN指令的目的操作數(shù)是累加器。

      (7)錯(cuò)誤,目的操作數(shù)是字節(jié)單元。

      (8〉錯(cuò)誤,CS不能作為MOV指令的目的操作數(shù)。

      3.18 以下是格雷碼的編碼表,O 0000 0001

      0011 0010 0110 0111 0101 0100 1100

      請(qǐng)用換碼指令和其他指令設(shè)計(jì)一個(gè)程序段,以實(shí)現(xiàn)由格雷碼向ASCII碼的轉(zhuǎn)換。

      解:

      MOVBX,TABLE

      MOVSI,ASCII_TAB

      MOVAL,0

      MOVCX,10 TRAN:XLATTABLE

      MOVDL,AL

      ADDDL,30H

      MOV[SI],DL

      INCAL

      LOOPTRAN 3.19使用乘法指令時(shí),特別要注意先判斷是用有符號(hào)數(shù)乘法指令還是用無(wú)符號(hào)數(shù)乘

      法指令,這是為什么?

      解:因?yàn)橛蟹?hào)數(shù)和無(wú)符號(hào)數(shù),其數(shù)的乘法是一樣的。但結(jié)果的符號(hào)取決于兩

      個(gè)操作數(shù)的符號(hào)。

      3.20字節(jié)擴(kuò)展指令和字?jǐn)U展指令一般用在什么場(chǎng)合?舉例說(shuō)明。

      解:主要用于字節(jié)相除和字相除之前,把被除數(shù)擴(kuò)展為兩倍寬度的操作數(shù)。

      3.21 什么叫BCD碼?什么叫組合的BCD碼?什么叫非組合的BCD碼?8086匯編語(yǔ)言在對(duì)

      BCD碼進(jìn)行加、減、乘、除運(yùn)算時(shí),采用什么方法?

      解:BCD碼為十進(jìn)制編碼的二進(jìn)制數(shù)。組合的BCD數(shù)是把兩位BCD加在一個(gè)字節(jié)

      中,高位的在高4位。非組合的BCD碼是把一位BCD數(shù)放在一個(gè)字節(jié)的低4位,高4位

      為0。8086在BCD加、減和乘法運(yùn)算以后用BCD調(diào)整指令把結(jié)果調(diào)整為正確的BCD

      數(shù)。在BCD除法之前先用BCD調(diào)整指令再做除法.3.22用普通運(yùn)算指令執(zhí)行BCD碼運(yùn)算時(shí),為什么要進(jìn)行十進(jìn)制調(diào)整?具體地講,在

      進(jìn)行BCD碼的加、減、乘、除運(yùn)算時(shí),程序段的什么位置必須加上十進(jìn)制調(diào)整

      指令?

      解:因?yàn)?086指令把操作數(shù)作為二進(jìn)制數(shù)進(jìn)行二進(jìn)制運(yùn)算,要得到正確的BCD結(jié)

      果,需要進(jìn)行調(diào)整。在加、減、乘法指令之后加上BCD調(diào)整指令,而在除法指令

      之前先用BCD調(diào)整指令再用除法指令。

      第4章

      作業(yè)答案

      4.1在下列程序運(yùn)行后,給相應(yīng)的寄存器及存儲(chǔ)單元填入運(yùn)行的結(jié)果:

      MOV AL, 1OH

      MOV CX, 100OH

      MOV BX, 2000H

      MOV [CX],AL

      XCHGCX,BX

      MOV DH, [BX]

      MOV DL, 01H

      XCHGCX, BX

      MOV [BX],DL

      HLT

      解:寄存器及存儲(chǔ)單元的內(nèi)容如下:

      AL=1OH

      BL=OOH

      BH=2OH

      CL=OOH

      CH=1OH

      DH=1OH

      (10O0H)=lOH

      (200OH)=0lH 2.要求同題4.1,程序如下:

      MOV AL, 50H

      MOV BP, 100OH

      MOV BX, 200OH

      MOV[BP],AL

      MOV DH, 20H

      MOV[BX],DH

      MOV DL, OlH

      MOV DL, [BX]

      MOV CX, 300OH

      HLT

      解:寄存器及存儲(chǔ)單元的內(nèi)容如下:

      AL=5OH

      BL=OOH

      BH=20H

      CL=OOH

      CH=30H

      DL=20H

      DH=2OH

      BP=100OH

      (10OOH)=5OH

      (20OOH)=20H

      4.3自1000H單元開(kāi)始有一個(gè)100個(gè)數(shù)的數(shù)據(jù)塊,若要把它傳送到自200OH開(kāi)始的存

      儲(chǔ)區(qū)中去,可以采用以下3種方法實(shí)現(xiàn),試分別編制程序以實(shí)現(xiàn)數(shù)據(jù)塊的傳送。

      (l)不用數(shù)據(jù)塊傳送指令

      (2)用單個(gè)傳送的數(shù)據(jù)塊傳送指令

      (3)用數(shù)據(jù)塊成組傳送指令。

      解:

      (1)

      LEA SI, 1OOOH

      LEA DI, 200OH

      MOV CX, 100

      L1: MOV AX, [SI]

      MOV[DI],AX

      LOOPLl

      HLT

      (2)

      LEASI,100OH

      LEADI,2000H

      MOVCX,100

      CLD

      L1: MOVSB

      LOOP L1

      HLT

      (3)

      LEASI, 100OH

      LEADI, 200OH

      MOVCX, 100

      CLD

      REP MOVSB

      HLT

      4.4 利用變址寄存器,編寫(xiě)一個(gè)程序,把自1000H單元開(kāi)始的100個(gè)數(shù)傳送到自1070H

      開(kāi)始的存儲(chǔ)區(qū)中去。

      解:

      LEASI,100OH

      LEADI,1070H

      MOVCX,100

      CLD

      REP MOVSB

      HLT

      4.5要求同題4.4,源地址為2050H,目的地址為2000H,數(shù)據(jù)塊長(zhǎng)度為50.解:

      LEASI,205OH

      LEADI,200OH

      MOVCX,50

      CLD

      REPMOVSB

      HLT

      4.6編寫(xiě)一個(gè)程序,把自100OH單元開(kāi)始的100個(gè)數(shù)傳送'至105OH開(kāi)始的存儲(chǔ)區(qū)中

      (注意:數(shù)據(jù)區(qū)有重疊)。

      解:

      LEASI, 100OH

      LEADI,1050H

      ADDSI, 63H

      ADDDI, 63H

      MOVCX, 100

      STD

      REPMOVSB

      HLT

      4.7在自0500H單元開(kāi)始,存有100個(gè)數(shù)。要求把它傳送到1000H開(kāi)始的存儲(chǔ)區(qū)中,但在傳送過(guò)程中要檢查數(shù)的值,遇到第一個(gè)零就停止傳送。

      解:

      LEA SI, 050OH

      LEA DI, 10OOH

      MOV CX, 100

      N1: MOV AL, [SI]

      CMP AL, 0

      JZ N2

      MOV[DI],AL

      INC SI

      INC DI

      LOOPN1

      N2: HLT

      4.14若在0500H單元中有一個(gè)數(shù)

      (1)利用加法指令把它乘2,且送回原存儲(chǔ)單元(假定X×2后仍為一個(gè)字節(jié));

      (2)X×4;

      (3)X×10(假定X×l0≤255).解:

      (1)LEA BX, 050OH

      MOV AL, [BX]

      ADD AL, AL

      MOV[BX],AL

      (2)LEA BX, 0500H

      MOV AL, [BX]

      ADD AL, AL

      ADD AL, AL

      MOV[BX],AL

      (3)LEABX, 050OH

      MOVAL, [BX]

      ADDAL, AL

      MOVDL, AL

      ADDAL, AL

      ADD AL,AL

      ADDAL, DL

      MOV[BX],AL

      第 5 章

      作業(yè)答案

      5.1 總線周期的含義是什么?8086/8088CPU的基本總線周期由幾個(gè)時(shí)鐘組成?如果

      一個(gè)CPU的時(shí)鐘頻率為8MHz,那么,它的一個(gè)時(shí)鐘周期是多少?一個(gè)基本總線周期是多

      少?如果主頻為5MHz呢?

      解:CPLI訪問(wèn)總線(從內(nèi)存儲(chǔ)器或I/0端口讀/寫(xiě)字節(jié)或字)所需的時(shí)間稱(chēng)為總線周期。8086/8088CPU的基本總線周期由4個(gè)時(shí)鐘組成。若CPU的時(shí)鐘頻率為8(5)MHz,時(shí)

      鐘周期為1/8MHz=125(1/5MHz=2O)ns,基本總線周期為4×125(200)ns=500(800)ns

      5.2在總線周期的TI、T2、T3、T4狀態(tài),CPU分別執(zhí)行什么動(dòng)作?什么情況下需要插入

      等待狀態(tài)Tw?Tw在哪兒插入?怎樣插入?

      解: 下面以存儲(chǔ)器讀為例進(jìn)行說(shuō)明。

      在Tl周期:輸出地址信號(hào)、地址鎖存允許信號(hào)、內(nèi)存或I/O端口訪問(wèn)控制信號(hào);

      在T2周期:CPIJ開(kāi)始執(zhí)行數(shù)據(jù)傳送操作,此時(shí),8086CPU內(nèi)部的多路開(kāi)關(guān)進(jìn)行切換,將

      地址/數(shù)據(jù)線AD15~AD0上的地址撤銷(xiāo),切換為數(shù)據(jù)總線,為讀寫(xiě)數(shù)據(jù)作準(zhǔn)

      備。8288總線控制器發(fā)出數(shù)據(jù)總線允許信號(hào)和數(shù)據(jù)發(fā)送/接收控制信號(hào)

      DT/R允許數(shù)據(jù)收發(fā)器工作,使數(shù)據(jù)總線與8086CPU的數(shù)據(jù)線接通,并控制數(shù)

      據(jù)傳送的方向。同樣,把地址/狀態(tài)線A19/S6~A16/S3切換成與總線周期有

      關(guān)的狀態(tài)信息,指示若干與周期有關(guān)的情況。

      在T3周期:開(kāi)始的時(shí)鐘下降沿上,8086CPU采樣READY線。如果READY信號(hào)有效(高電平),則在T3狀態(tài)結(jié)束后進(jìn)人TA狀態(tài)。在T4狀態(tài)開(kāi)始的時(shí)鐘下降沿,把數(shù)據(jù)總線上的數(shù)據(jù)讀入CPU或?qū)懙降刂愤x中的單元。在T4狀態(tài):結(jié)束總線周期。如果訪問(wèn)的是慢速存儲(chǔ)器或是外設(shè)接口,則應(yīng)該在Tl狀態(tài)輸出的地址,經(jīng)過(guò)譯碼選中某個(gè)單元或設(shè)備后,立即驅(qū)動(dòng)READY信號(hào)到低電平。8086CPU在T3狀態(tài)采樣到READY信號(hào)無(wú)效,就會(huì)插入等待周期Tw,在Tw 狀態(tài)CPU繼續(xù)采樣READY信號(hào);直至其變?yōu)橛行Ш笤龠M(jìn)人T4狀態(tài),完成數(shù)據(jù)傳送,結(jié)束總線周期。在T4狀態(tài),8086CPU完成數(shù)據(jù)傳送,狀態(tài)信號(hào)S2 ~S0。變?yōu)闊o(wú)操作的過(guò)渡狀態(tài)。在此期間,8086CPU結(jié)束總線周期,恢復(fù)各信號(hào)線 的初態(tài),準(zhǔn)備執(zhí)行下一個(gè)總線周期。

      第6章 作 業(yè) 答 案

      6.1 若有一單板機(jī),具有用8片2114構(gòu)成的4KBRAM,連線如圖創(chuàng)所示。

      若以每1KBRAM作為一組,則此4組RAM的基本地址是什么?地址有沒(méi)有重疊區(qū)?每一組的地址范圍為多少?

      解:RAM的基本地址為:

      第一組 OOOOH~03FFH

      第二組 4000H~43FFH

      第三組 8000H~83FFH

      第四組 COOOH~C3FFH

      地址有重疊區(qū)。每一組的地址范圍為OOOH~3FFH(1024個(gè)字節(jié))。

      6.4若要擴(kuò)充1KBRAM(用2114片子),規(guī)定地址為8000H~83FFH,地址線應(yīng)該如何

      連接?

      解:擴(kuò)充lKBRAM至規(guī)定地址8000H~83FFH,其地址線的低10位接芯片,高6位地址

      (Al5~A10=100000)產(chǎn)生組選擇信號(hào)。

      第7 章

      作 業(yè) 答 案

      7.1 外部設(shè)備為什么要通過(guò)接口電路和主機(jī)系統(tǒng)相連?

      解: 因?yàn)橥獠吭O(shè)備種類(lèi)繁多,輸入信息可能是數(shù)字量、模擬量或開(kāi)關(guān)量,而且輸

      入速度、電平、功率與CPU差距很大。所以,通常要通過(guò)接口電路與主機(jī)系統(tǒng)

      相連。

      7.4 CPU和輸入輸出設(shè)備之間傳送的信息有哪幾類(lèi)?

      解:CPU和輸入輸出設(shè)備之間傳送的信息主要有3類(lèi)。

      (l)數(shù)據(jù)

      在微型計(jì)算機(jī)中,數(shù)據(jù)通常為8位、16位或32位。

      (2)狀態(tài)信息

      在輸入時(shí),有輸入設(shè)備的信息是否準(zhǔn)備好;在輸出時(shí)有輸出設(shè)備是否有空,若輸

      出設(shè)備正在輸出信息,則以忙指示等。

      (3)控制信息

      例如,控制輸入輸出設(shè)備啟動(dòng)或停止等。

      7.9設(shè)一個(gè)接口的輸入端口地址為0100H,狀態(tài)端口地址為0104H,狀態(tài)端口中第5位

      為1表示輸入緩沖區(qū)中有一個(gè)字節(jié)準(zhǔn)備好,可以輸入。設(shè)計(jì)具體程序以實(shí)現(xiàn)查詢(xún)式

      輸入。

      解: 查詢(xún)輸入的程序段為:

      POLl: IN AL, 0104H

      ANDAL,20H

      JZ POLl

      IN AL, 0100H

      第 8 章作 業(yè) 答 案

      8.1在中斷響應(yīng)過(guò)程中,8086CPU向8259A發(fā)出的兩個(gè)RT互信號(hào)分別起什么作用?

      解:

      CPU發(fā)出的第一個(gè)INTA脈沖告訴外部電路,其提出的中斷請(qǐng)求已被響應(yīng),應(yīng)準(zhǔn)備將類(lèi)型號(hào)發(fā)給CPU,8259A接到了這個(gè)INTA脈沖時(shí),把中斷的最高優(yōu)先級(jí)

      請(qǐng)求置入中斷狀態(tài)寄存器(ISR)中,同時(shí)把IRR(中斷請(qǐng)求寄存器)中的相應(yīng)位復(fù)

      位。CPU發(fā)出的第二個(gè)INTA脈沖告訴外部電路將中斷的類(lèi)型號(hào)放在數(shù)據(jù)總線

      上。

      8.28086CPU最多可以有多少個(gè)中斷類(lèi)型?按照產(chǎn)生中斷的方法分為哪兩大類(lèi)?

      解:8086CPU最多可以有256個(gè)中斷類(lèi)型。按照產(chǎn)生中斷的方法,可以分為內(nèi)

      部中斷(軟件中斷)和外部(硬件中斷)中斷兩大類(lèi)。

      8.9 在編寫(xiě)中斷處理子程序時(shí),為什么要在子程序中保護(hù)許多寄存器?

      解:因?yàn)樵谟脩?hù)程序運(yùn)行時(shí),會(huì)在寄存器中有中間結(jié)果,當(dāng)在中斷服務(wù)程序中要

      使用這些寄存器前要把這些寄存器的內(nèi)容推至堆棧保存(稱(chēng)為保護(hù)現(xiàn)場(chǎng))。在從

      中斷服務(wù)程序返回至用戶(hù)程序時(shí)把這些內(nèi)容從堆找恢復(fù)至寄存器中(稱(chēng)為恢復(fù)

      現(xiàn)場(chǎng))。

      8.12若在一個(gè)系統(tǒng)中有5個(gè)中斷源,其優(yōu)先權(quán)排列為:1、2、3、4、5,它們的中斷服

      務(wù)程序的入口地址分別為:3000H、302OH、3050H、3080H、30AOH。編寫(xiě)一個(gè)程序, 當(dāng)有中斷請(qǐng)求CPU響應(yīng)時(shí),能用查詢(xún)方式轉(zhuǎn)至申請(qǐng)中斷的優(yōu)先權(quán)最高的源的中斷服

      務(wù)程序。

      解: 若5個(gè)中斷源的中斷請(qǐng)求放在一中斷狀態(tài)寄存器中,按優(yōu)先權(quán)分別放在狀態(tài)的7 位(優(yōu)先權(quán)最高)至位3中。查詢(xún)方法的程序段為:

      IN

      AL,STATUS

      CMP

      AL,80H

      JNE

      N1

      JMP

      3000H

      N1:

      IN

      AL,STATUS

      CMP

      AL,40H

      JNE

      N2

      JMP

      3020H

      N2:

      IN

      AL,STATUS

      CMP

      AL,20H

      JNE N3

      JMP 3050H

      N3:

      IN

      AL,STATUS

      CMP AL,10H

      JNE N4

      JMP 3080H

      N4:

      IN

      AL,STATUS

      CMP AL,08H

      JNE N5

      JMP 30A0H N5:

      RET

      第9章 作 業(yè) 答 案

      9.3在某一應(yīng)用系統(tǒng)中,計(jì)數(shù)器/定時(shí)器8253地址為340H~343H,定時(shí)用作分頻器(N 為分頻系數(shù)),定時(shí)器2用作外部事件計(jì)數(shù)器,如何編制初始化程序?

      解:

      定時(shí)器0用作分頻器,工作方式2,其初始化程序?yàn)椋?/p>

      MOV AL,34H

      OUT 343H,AL

      MOV AL,N1

      OUT 342H,AL

      MOV AL,N2

      OUT 342H,AL

      定時(shí)器2用作外部事件計(jì)數(shù)器,工作在方式0,其初始程序:

      MOV AL,0B0H

      OUT 343H,AL

      MOV AL,N1

      OUT 342H,AL

      MOV AL,N2

      OUT 342H,AL

      9.4若已有一頻率發(fā)生器,其頻率為1MHZ,若要示求通過(guò)計(jì)數(shù)器/定時(shí)器8253,著重

      產(chǎn)生每秒一次的信號(hào),8253應(yīng)如何連接?編寫(xiě)出初始化程序。

      解:

      1MHZ的信號(hào)要變?yōu)槊棵胍淮?,則需經(jīng)過(guò)106分頻。一個(gè)通道的計(jì)數(shù)為16位最

      大為65536。故需要需兩個(gè)通道級(jí)連,則每個(gè)通道計(jì)數(shù)為1000。用通道0和通道1級(jí)連,都工作在方式2,初始化程序?yàn)椋?/p>

      MOV AL,34H

      OUT 343H,AL

      MOV AL,0E8H

      OUT 342H,AL

      MOV AL,03

      OUT 342H,AL

      MOV AL,74H

      OUT 343H,AL

      MOV AL,0E8H

      OUT 342H,AL

      MOV AL,03

      OUT 342H,AL

      9.9編程將計(jì)數(shù)器/定時(shí)器8253計(jì)數(shù)器0設(shè)置為模式1,計(jì)數(shù)初值3000H;計(jì)數(shù)器1設(shè)置

      為模式2初值為2010H;計(jì)數(shù)器2設(shè)置為模式4初值為4030H;

      解:若端口地址為:0F8H~0FBH,初始化程序?yàn)椋?/p>

      MOV AL,32H

      OUT 0FBH,AL

      MOV AL,00H

      OUT 0F8H,AL

      MOV AL,30H

      OUT 0F8H,AL

      MOV AL,74H

      OUT

      0FBH,AL

      MOV AL,10H

      OUT

      0F9H,AL

      MOV

      AL,20H

      OUT

      0F9H,AL

      MOV

      AL,0B8H

      OUT

      0FBH,AL

      MOV

      AL,30H

      OUT

      0FAH,AL

      MOV

      AL,40H

      OUT

      0FAH,AL

      第10 章 作 業(yè) 答 案

      10.4可編程并行接口芯片8255A的3個(gè)端口在使用時(shí)有什么差別?

      解:通常端口A或B作為輸入輸出的數(shù)據(jù)端口(端口A還可以作為雙向數(shù)據(jù)端口), 而端口C作為控制或狀態(tài)信息的端口,它在“方式”字的控制下,可以分成兩個(gè)4位的端

      口。每個(gè)端口包含一個(gè)4位鎖存器。它們分別與端口A和B配合使用,可用以作為控制

      信號(hào)輸出,或作為狀態(tài)信號(hào)輸入。

      10.7 8255A有哪幾種基本工作方式?對(duì)這些工作方式有什么規(guī)定?

      解:8255A有3種基本的工作方式:

      方式0-----基本輸入輸出:

      方式1-----選通輸入輸出;

      方式2-----雙向傳送。

      10.8設(shè)置8255A工作方式,8255A的控制口地址為OOC6H。要求端口A工作在方式1,輸

      入;端口B工作在方式0,輸出;端口C的高4位配合端口A工作;低4位為輸入。

      解:按要求的方式控制字為:10111001B。編程語(yǔ)句為:

      MOVAL,0B9H

      OUTOOC6H, AL;

      10.9設(shè)可編程并行接口芯片8255A的4個(gè)端口地址為OOCOH、00C2H、00C4H、OOC6H,要求用置0/置1方式對(duì)PC6置1,對(duì)PC4置0。

      解:對(duì)端口C的PC6置1的控制字為: 00001101B,對(duì)PC4置O的控制字為:

      0000100OB。

      程序段為:

      MOV AL,DH

      OUT OOC6H, AL

      MOV AL,08H.OUT00C6H, AL

      第二篇:微機(jī)原理與接口技術(shù)習(xí)題答案10章

      第10章 定時(shí)/計(jì)數(shù)器8253應(yīng)用設(shè)計(jì)

      1.試分析 8255A方式0、方式1和方式2的主要區(qū)別,并分別說(shuō)明它們適合于什么應(yīng)用場(chǎng)合。

      答:方式0是基本的輸入/輸出,端口A、B、C都可以作為輸入輸出端口。適用于CPU與非智能I/O設(shè)備的數(shù)據(jù)傳輸;

      方式1是有聯(lián)絡(luò)信號(hào)的輸入/輸出,端口A、B都可以設(shè)定成該方式,此時(shí)三個(gè)端口的信號(hào)線分成了A、B兩組,PC7~PC4用作A組的聯(lián)絡(luò)信號(hào),PC3~PC0用作B組的聯(lián)絡(luò)信號(hào)。適用于高速CPU與低速I(mǎi)/O設(shè)備的數(shù)據(jù)傳輸;

      方式2是雙向傳輸,只有A組端口可以設(shè)定成該方式,PC6~PC7用作輸出的聯(lián)絡(luò)信號(hào),PC4~PC5用作輸入的聯(lián)絡(luò)信號(hào),PC3用作中斷請(qǐng)求信號(hào)。適用于雙機(jī)之間數(shù)據(jù)的并行傳送。

      2.8255A的A組設(shè)置成方式1輸入,與CPU之間采用中斷方式聯(lián)絡(luò),則產(chǎn)生中斷請(qǐng)求信號(hào)INTRA的條件是 STBA=

      ,IBFA=

      ,INTEA=。

      3.如果8255A的端口地址為300H~303H,A組和B組均為方式0,端口A為輸出,端口B為輸入,PC3~PC0為輸入,PC7~PC4為輸出,寫(xiě)出8255A的初始化程序段;編程實(shí)現(xiàn)將從端口C低4位讀入的值從高4位送出。解: MOV DX,303H

      MOV AL,10000011B OUT DX,AL MOV DX,302H IN AL,DX MOV CL,4 SHL AL,CL OUT DX,AL 4.在實(shí)際應(yīng)用中經(jīng)常需要檢測(cè)設(shè)備的狀態(tài),并進(jìn)行指示。在8086最小方式系統(tǒng)下,有一片8255A,其分配的端口地址為8F00H~8F07H中的奇地址,外部設(shè)備產(chǎn)生的狀態(tài)有16個(gè)(K15~K0),要求采用4個(gè)發(fā)光二極管來(lái)指示開(kāi)關(guān)量中“1”的個(gè)數(shù)。(1)畫(huà)出8255A - 0 - 的連接圖;(2)編寫(xiě)程序段實(shí)現(xiàn)連續(xù)檢測(cè)并顯示。解:(1)

      8086D8~D158255D0~D7RDRDWRA2A1M/IOBHEA15A11A10A9A8A0A14A13A12A7A6A5A4A3PA0PA1......WRA1PA716位開(kāi)關(guān)量(K15~K0)A0PB0PB1PB7......VCCCSPC3PC2PC1PC0

      (2)MOV DX,8F07H

      MOV AL,10010010B;端口A、B方式0輸入,端口C方式0輸出 OUT DX,AL NEXT:

      L2:

      MOV DX,8F03H;從端口B讀取高8位開(kāi)關(guān)量 IN AL,DX XCHG AL,AH MOV DX,8F01H;從端口A讀取低8位開(kāi)關(guān)量 IN AL,DX MOV BX,AX XOR AL,AL MOV CX,16 CLC SHL BX,1

      - 1 -

      L1:

      JNC L1 INC AL LOOP L2 MOV DX,8F05H;從端口C送出 OUT DX,AL JMP NEXT;進(jìn)行下一次檢測(cè)

      5.利用IBM PC系統(tǒng)機(jī)的總線槽,開(kāi)發(fā)由一片8255A構(gòu)成的子系統(tǒng),8255A端口地址為260H~263H,編程實(shí)現(xiàn)產(chǎn)生如圖10.20所示的8個(gè)信號(hào)(各個(gè)信號(hào)的節(jié)拍不必嚴(yán)格相等)。

      Y0Y1Y7?

      圖10.20 要求產(chǎn)生的信號(hào)波形

      解:8355A與IBM PC機(jī)總線的連接框圖如下:

      可將8255A的端口A作為要產(chǎn)生的信號(hào)的輸出端口,設(shè)定為方式0輸出,端口B和端口C不做使用,均設(shè)定為方式0輸出。程序段如下:

      MOV

      DX,263H

      ;設(shè)定8255A的工作方式

      - 2 -

      MOV

      AL,10000000B

      OUT

      DX,AL

      MOV

      DX,260H

      ;產(chǎn)生指定信號(hào)

      XOR

      AL,AL

      OUT

      DX,AL REP:

      MOV

      AL,80H

      MOV

      CX,7 REP1:

      OUT

      DX,AL

      SAR

      AL,1

      LOOP REP1

      MOV

      CX,8 REP2:

      SHL

      AL,1

      OUT

      DX,AL

      LOOP REP2

      JMP

      REP

      6.在實(shí)際應(yīng)用中,經(jīng)常會(huì)遇到要求輸入多個(gè)數(shù)據(jù)量,這時(shí)需要用到多路開(kāi)關(guān),如圖10.21表示八選一的邏輯框圖及其真值表?,F(xiàn)有8組16位開(kāi)關(guān)量數(shù)據(jù)(無(wú)符號(hào)數(shù)),要求通過(guò)一片8255A(端口地址為260H~263H)分時(shí)輸入到CPU(8088最小方式系統(tǒng))中,并找出它們中的最大值,并通過(guò)4個(gè)發(fā)光二極管指示其序號(hào)(燈亮表示“1”)。畫(huà)出8255A的連接圖,并編程實(shí)現(xiàn)。

      解:由于開(kāi)關(guān)量是16為數(shù)據(jù),故可以將8255A的PA端與PB端設(shè)定為方式0,分別讀取開(kāi)關(guān)量的低八位和高八位,以PC低三位端口的控制八選一電路的輸出依次從X0到X7,- 3 -

      八選一x0x1x2x3x4x5x6x7ys0s1s2s2s1s00 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1yx0x1x2x3x4x5x6x7圖10.21 八選一邏輯電路使用PC端口的高八位輸出最大開(kāi)關(guān)量的序號(hào)(該序號(hào)為1~8),控制發(fā)光二極管的亮滅以碼指示序號(hào)。連接圖如下:

      程序段如下:

      MOV DX,263H

      MOV AL,10011010B;設(shè)定工作方式,PA,PB均工作于方式0,PA、PB為輸入,PC為輸出

      OUT

      DX,AL

      MOV

      CX,8

      XOR

      BX,BX

      MOV

      SI,0

      ;SI表示輸入開(kāi)關(guān)量的序號(hào) ST1:

      MOV

      DX,262H

      OUT

      DX,SI

      MOV

      DX,260H

      ;將開(kāi)關(guān)量數(shù)據(jù)的低八位寫(xiě)入AL

      IN

      AL,DX

      MOV

      DX,261H

      ;將開(kāi)關(guān)量數(shù)據(jù)的高八位寫(xiě)入AH

      IN

      AH,DX

      - 4 -

      CMP

      BX,AX

      JA

      NEXT

      MOV

      BX,AX

      ;將當(dāng)前最大值保存在BX中

      INC

      SI

      PUSH

      SI

      ;將當(dāng)前最大值的序號(hào)壓棧 NEXT:

      INC

      SI

      LOOP

      ST1

      POP

      SI

      XOR

      AX,AX

      MOV

      AX,SI

      MOV

      CL,4

      ROL

      AL,CL

      MOV

      DX,262H

      OUT

      DX,AL

      ;最大值的序號(hào)出棧

      ;將最大值的序號(hào)(4位)移至AL的高四位 的高四位輸出最大值序號(hào) - 5 -

      ;PC

      第三篇:微機(jī)原理與接口技術(shù)習(xí)題答案2

      第2章 8086 CPU結(jié)構(gòu)與功能

      1.微處理器內(nèi)部結(jié)構(gòu)由哪幾部分組成?闡述各部分的主要功能。解:微處理器內(nèi)部結(jié)構(gòu)由四部分組成:

      (1)算術(shù)邏輯運(yùn)算單元ALU:完成所有的運(yùn)算操作;

      (2)工作寄存器:暫存尋址信息和計(jì)算過(guò)程中的中間結(jié)果;

      (3)控制器:完成指令的讀入、寄存和譯碼,并產(chǎn)生控制信號(hào)序列使ALU完成指定操作;

      (4)I/O控制邏輯:處理I/O操作。

      2.微處理器級(jí)總線有哪幾類(lèi)?各類(lèi)總線有什么作用? 解:微處理器級(jí)總線有三類(lèi):

      (1)數(shù)據(jù)總線:傳送信息;

      (2)地址總線:傳送地址碼;

      (3)控制總線 傳送控制信號(hào)。

      3.為什么地址總線是單向的,而數(shù)據(jù)總線是雙向的?

      解:地址碼只能由CPU生成。而數(shù)據(jù)需要在CPU和存儲(chǔ)器之間傳輸。4.8086/8088微處理器內(nèi)部有哪些寄存器?其主要作用是什么?

      解:8086CPU內(nèi)部有14個(gè)16位寄存器,其中8個(gè)通用寄存器(4數(shù)據(jù)寄存器AX、BX、CX、DX,4地址指針/變址寄存器SI、DI、SP、BP),4個(gè)段寄存器(CS、DS、ES、SS),2個(gè)控制寄存器(指令指針I(yè)P,微處理器狀態(tài)字PSW)。

      應(yīng)該注意的是:可以在指令中用作為地址指針的寄存器有:SI、DI、BP和BX;在微處理器狀態(tài)字PSW中,一共設(shè)定了9個(gè)標(biāo)志位,其中6個(gè)標(biāo)志位用于反映ALU前一次操作的結(jié)果狀態(tài)(CF,PF,AF,ZF,SF,OF),另3個(gè)標(biāo)志位用于控制CPU操作(DF,IF,TF)。

      5.如果某微處理器有20條地址總線和16條數(shù)據(jù)總線:

      (1)假定存儲(chǔ)器地址空間與I/O地址空間是分開(kāi)的,則存儲(chǔ)器地址空間有多大?

      (2)數(shù)據(jù)總線上傳送的有符號(hào)整數(shù)的范圍有多大? 解:(1)存儲(chǔ)器地址空間為:220?1MB

      1(2)有符號(hào)數(shù)范圍為: ?2~2?1,即 -32768~32767 6.將十六進(jìn)制數(shù)62A0H與下列各數(shù)相加,求出其結(jié)果及標(biāo)志位CF、AF、SF、ZF、OF

      15和PF的值:

      (1)

      1234H;(2)

      4321H;(3)

      CFA0H;(4)

      9D60H 解:(1)

      74D4H

      CF=0 AF=0 SF=0 ZF=0 OF=0 PF=1

      (2)

      A5C1H CF=0 AF=0 SF=1 ZF=0 OF=1 PF=0

      (3)

      3240H

      CF=1 AF=0 SF=0 ZF=0 OF=0 PF=0

      (4)

      0000H

      CF=1 AF=0 SF=0 ZF=1 OF=0 PF=1 7.從下列各數(shù)中減去4AE0H,求出其結(jié)果及標(biāo)志位CF、AF、SF、ZF、OF和PF的值:

      (1)1234H;(2)5D90H;(3)9090H;(4)EA04H 解:(1)

      C754H

      CF=1 AF=0 SF=1 ZF=0 OF=0 PF=0(2)

      12B0H

      CF=0 AF=0 SF=0 ZF=0 OF=0 PF=0(3)

      45B0H

      CF=0 AF=0 SF=0 ZF=0 OF=1 PF=0

      (4)

      9F24H

      CF=0 AF=0 SF=1 ZF=0 OF=0 PF=1 9.寫(xiě)出下列存儲(chǔ)器地址的段地址、偏移地址和物理地址:(1)2134:10A0;(2)1FA0:0A1F;(3)267A:B876 解:物理地址=段地址*10H+偏移地址

      (1)段地址:2134H,偏移地址:10A0H,物理地址:223E0H(2)段地址:1FA0H,偏移地址:0A1FH,物理地址:2041FH(3)段地址:267AH,偏移地址:B876H,物理地址:32016H 10.給定一個(gè)數(shù)據(jù)的有效地址為2359H,并且(DS)=490BH,求該數(shù)據(jù)的物理地址。解:物理地址=段地址*10H+偏移地址

      物理地址=490BH +2359H = 4B409H 11.如果在一個(gè)程序段開(kāi)始執(zhí)行之前,(CS)=0A7F0H,(IP)=2B40H,求該程序段的第一個(gè)字的物理地址。

      解:物理地址=段地址*10H+偏移地址

      物理地址=CS*10H+IP = AAA40H 12.IBM PC有哪些寄存器可用來(lái)指示存儲(chǔ)器的地址? 解:變址寄存器SI,DI,堆棧指針SP,BP,另外還有BX。

      第四篇:微機(jī)原理與接口技術(shù)習(xí)題答案4

      第4章 匯編語(yǔ)言程序設(shè)計(jì)

      1.已知在BUF的起始處保存有N個(gè)字符的ASCII碼,編寫(xiě)匯編語(yǔ)言程序?qū)崿F(xiàn),將這組字符串傳送到緩沖區(qū)BUFR中,并且使字符串的順序與原來(lái)的順序相反。解:BUF

      BUFR

      MOV CX, N LEA SI, BUF LEA DI, BUFR ADD DI,CX DEC DI L1: MOV AL,[SI] MOV [DI],AL INC SI DEC DI LOOP L1

      2.利用移位、傳送和相加指令實(shí)現(xiàn)AX的內(nèi)容擴(kuò)大10倍。

      解:將擴(kuò)大后的結(jié)果放在DX:AX中,注意到10×AX=8×AX+2×AX。XOR SHL RCL DX,DX AX, 1 DX, 1 DB “BONJOUR_BELLE” DB 100 DUP(?)MOV BX,AX MOV SHL RCL SHL RCL CX,DX AX, 1 DX, 1 AX, 1 DX, 1 ADD ADC AX, BX DX, CX 3.在緩沖區(qū)VAR中連續(xù)存放著3個(gè)16位的無(wú)符號(hào)數(shù),編寫(xiě)程序?qū)崿F(xiàn)將其按遞增關(guān)系排列;如果VAR中保存的為有符號(hào)數(shù),則再編寫(xiě)程序?qū)崿F(xiàn)將其按遞減關(guān)系排列。解:VAR DW 1236,-432,3900 XOR SI,SI MOV AX,VAR[SI] CMP AX, VAR[SI+2] JAE L1 XCHG AX, VAR[SI+2] L1:

      CMP AX, VAR[SI+4] JAE L2 XCHG AX, VAR[SI+4] L2: MOV VAR[SI], AX MOV AX,VAR[SI+2] CMP AX, VAR[SI+4] JAE L3 XCHG AX, VAR[SI+4] L3:

      MOV VAR[SI+2], AX 4.編寫(xiě)程序段實(shí)現(xiàn)將AL和BL中的每一位依次交叉,得到的16位字保存在DX中,例如(AL)=01100101B,(BL)=11011010B,則得到的(DX)=10110110 10011001B。解:利用移位指令完成。

      L1: SHR AL,1 RCR DX,1 XOR DX,DX MOV CX,8

      SHR BL,1 RCR DX,1 LOOP L1 5.在變量VAR1和VAR2中分別保存有兩個(gè)字節(jié)型的正整數(shù),編寫(xiě)完整的匯編語(yǔ)言程序?qū)崿F(xiàn):

      (1)當(dāng)兩數(shù)中有一個(gè)奇數(shù)時(shí),將奇數(shù)存入VAR1,偶數(shù)存入VAR2;

      (2)當(dāng)兩數(shù)均為奇數(shù)時(shí),兩個(gè)變量的內(nèi)容不變;(3)當(dāng)兩數(shù)均為偶數(shù)時(shí),兩數(shù)縮小一倍后存入原處。

      解:當(dāng)VAR1為奇數(shù)時(shí),不論VAR2的奇偶性,這兩個(gè)單元的內(nèi)容均不變;只有當(dāng)VAR1為偶數(shù)時(shí),如果VAR2為奇數(shù),則VAR1與VAR2內(nèi)容交換;如果VAR2為偶數(shù),則兩數(shù)縮小一倍后存入原處。DATA SEGMENT

      VAR1

      DB 28

      VAR2 DB 36 DATA ENDS CODE SEGMENT

      ASSUME CS:CODE, DS:DATA, ES:DATA START: MOV AX, DATA MOV DS,AX MOV ES, AX MOV AL,VAR1 MOV BL,VAR2 TEST AL,1 JZ EVEN1 JMP OVER

      EVEN1:

      TEST BL,1

      JZ

      EVEN2

      MOV VAR1,BL MOV JMP VAR2,AL OVER EVEN2:

      SHR MOV SHR MOV AL,1 VAR1,AL BL,1 VAR2,BL

      OVER:

      MOV AH,4CH MOV AL,0 INT ENDS END START 21H CODE

      6.已知在字變量VAR1、VAR2和VAR3中保存有3個(gè)相同的代碼,但有一個(gè)錯(cuò)碼,編寫(xiě)程序段找出這個(gè)錯(cuò)碼,并將它送到AX,其地址送SI;如果3個(gè)代碼都相同,則在AX中置-1標(biāo)志。解:在數(shù)據(jù)段中定義:

      VAR1 DW 5A34H VAR2 DW 5A35H VAR3 DW 3A34H

      在代碼段中編寫(xiě)程序段:

      MOV AX,-1 MOV BX,VAR1 CMP BX,VAR2 JZ

      L2 CMP BX,VAR3 JZ

      L1 MOV AX,BX LEA SI,VAR1 JMP OVER L1: MOV AX,VAR2 LEA SI,VAR2 JMP OVER L2: CMP BX,VAR3 JZ

      OVER MOV AX,VAR3 LEA SI,VAR3 OVER: 7.分析下列程序段的功能:

      MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 解:程序段完成DX:AX組成的32位無(wú)符號(hào)數(shù)左移4位,低位補(bǔ)零(也即除以16)。8.下列程序段執(zhí)行后,求BX寄存器的內(nèi)容:

      MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 解:實(shí)際上完成BX內(nèi)容循環(huán)右移2位,因此,BX寄存器的內(nèi)容為C02DH。9.下列程序段執(zhí)行后,求BX寄存器的內(nèi)容:

      MOV CL,5 MOV BX,7D5CH SHR BX,CL 解:完成BX內(nèi)容邏輯右移5位,因此,BX寄存器的內(nèi)容為03EAH。10.將BUFFERS中N個(gè)字按相反順序傳遞到BUFFERT中。解:

      LEA SI,BUFFERS LEA DI,BUFFERT MOV CX,N ADD DI,N ADD DI,N SUB DI,2 L1: MOV AX,[SI] MOV [DI],AX ADD SI,2 SUB DI,2 LOOP L1 11.數(shù)組ARRAY中存放有一組字型數(shù)據(jù),前兩個(gè)字節(jié)存放數(shù)據(jù)長(zhǎng)度(5的倍數(shù))。為給這個(gè)數(shù)組中的數(shù)據(jù)進(jìn)行加密保護(hù),每5個(gè)數(shù)據(jù)取出一個(gè)數(shù)據(jù)進(jìn)行加密處理:奇數(shù)位進(jìn)行取反,偶數(shù)位不變,例如對(duì)數(shù)據(jù)0110 1100 1011 0001B加密后變成1100 0110 0001 1011B,編寫(xiě)加密程序encrpytion 和解密程序 unencrpytion。

      解:約定從第一個(gè)數(shù)據(jù)開(kāi)始,每5個(gè)數(shù)據(jù)為一組,每組中的第一個(gè)數(shù)據(jù)采取加密/解密處理。由于加密算法采用的是取反操作,解密算法也采用取反操作,因此解密和解密算法是同一個(gè)程序。

      ENCRPYTION PROC NEAR LEA SI,ARRAY

      XOR DX,DX

      MOV AX,[SI]

      MOV BX,5

      DIV BX

      MOV CX, AX

      ADD SI, 2 L1:

      MOV AX, [SI]

      XOR AX,0AAAAH

      MOV [SI], AX

      ADD SI,10

      LOOP L1

      RET ENCRPYTION ENDP

      13.設(shè)BUF中存放有N個(gè)無(wú)符號(hào)數(shù)(或有符號(hào)數(shù)),編程實(shí)現(xiàn)求它們的最小值(存入AX)和最大值(存入DX)。

      解:BUF存放有N個(gè)無(wú)符號(hào)數(shù)的程序如下: MOV CX,N-1 LEA SI,BUF MOV AX,[SI] MOV DX,AX ADD SI,2 L1: CMP AX,[SI] JBE NOCHG1 XCHG AX,[SI] NOCHG1: CMP DX,[SI] JAE NOCHG2 XCHG DX,[SI] NOCHG2: ADD SI,2 LOOP L1 如果BUF中存放的是有符號(hào)數(shù),則只需要將程序中的兩行內(nèi)容修改:

      JBE NOCHG1 JAE NOCHG2

      改成:JLE NOCHG1 改成:JGE NOCHG2

      14.設(shè)BUFFER中存放有N個(gè)無(wú)符號(hào)(第1個(gè)字節(jié)存放緩沖區(qū)的長(zhǎng)度),編程實(shí)現(xiàn)將其中的0元素抹去,并更新其長(zhǎng)度。

      解:設(shè)BUFFER中存放的是字節(jié)型數(shù)據(jù)。采用雙指針?lè)椒ǎ篠I為讀指針,DI為寫(xiě)指針,從低地址開(kāi)始,內(nèi)存中讀出一個(gè)字節(jié),如果不為0,則寫(xiě)入內(nèi)存;如果為0,則不進(jìn)行寫(xiě)操作。

      LEA SI, BUFFER XOR CX,CX MOV CL, [SI] INC SI MOV DI, SI XOR BH,BH XOR AL,AL L1: CMP [SI],AL JZ L2 MOV BL,[SI] MOV [DI],BL INC DI INC BH L2: INC SI LOOP L1 MOV BUFFER,BH 16.編寫(xiě)一個(gè)子程序?qū)崿F(xiàn)統(tǒng)計(jì)AL中1的個(gè)數(shù),然后檢測(cè)出字節(jié)型緩沖區(qū)BUF中0和1個(gè)數(shù)相等的元素個(gè)數(shù)。

      解:統(tǒng)計(jì)AL中1的個(gè)數(shù),只需將AL右移,移出的一位內(nèi)容進(jìn)行累加,子程序?yàn)椋?COUNTBYTE PROC NEAR

      PUSH AX

      PUSH CX

      MOV CX,8

      XOR BL,BL COU1:

      SHR AL,1

      ADC BL,0

      LOOP COU1

      POP CX

      POP AX

      RET COUNTBYTE ENDP 在此基礎(chǔ)上,可以檢測(cè)出字節(jié)型緩沖區(qū)BUF中0和1個(gè)數(shù)相等的元素個(gè)數(shù),即一個(gè)字節(jié)中有4個(gè)1。設(shè)BUF中有N個(gè)字節(jié)型數(shù)據(jù),結(jié)果保持在BH中。

      MOV CX,N LEA SI, BUF XOR BH,BH L1: MOV AL,[SI] CALL COUNTBYTE CMP BL,4 JNZ L2 INC BH L2: INC SI LOOP L1

      19.在緩沖區(qū)BUFFER中,第1個(gè)字節(jié)存放數(shù)組的長(zhǎng)度(<256),從第2個(gè)字節(jié)開(kāi)始存放字符的ASCII碼,編寫(xiě)子程序完成在最高位給字符加上偶校驗(yàn)。解:STACK SEGMENT STACK 'STACK'

      DW 100H DUP(?)

      TOP LABEL BYTE STACK ENDS

      DATA SEGMENT BUFFER DB 3

      DB 'ABC'

      DATA ENDS CODE SEGMENT

      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:

      MOV AX,STACK

      MOV SS,AX

      LEA SP,TOP

      MOV AX,DATA

      MOV DS,AX

      MOV ES,AX

      LEA DI,BUFFER

      XOR CX,CX

      MOV CL,[DI]

      INC DI

      CALL SETEVEN

      MOV AH,4CH

      MOV AL,0

      INT 21H SETEVEN

      PROC NEAR

      PUSH AX

      PUSH BX

      PUSH CX

      PUSH DI SETEVEN1:

      MOV AL,[DI]

      CALL COUNTBYTE

      ;加偶校驗(yàn)子程序

      ;返回DOS;首字節(jié)為字符串長(zhǎng)度;字符串

      AND BL,01H

      JZ SETEVEN2

      OR AL,80H

      MOV [DI],AL SETEVEN2:

      INC DI

      LOOP SETEVEN1

      POP DI

      POP CX

      POP BX

      POP AX

      RET SETEVEN

      ENDP COUNTBYTE PROC NEAR

      PUSH AX

      PUSH CX

      MOV CX,8

      XOR BL,BL COU1:

      SHR AL,1

      ADC BL,0

      LOOP COU1

      POP CX

      POP AX

      RET COUNTBYTE ENDP CODE ENDS

      END START 20.編寫(xiě)程序完成求多位數(shù)(N個(gè)字)的絕對(duì)值。21.已知斐波那契數(shù)列的定義為:F1數(shù)列前n項(xiàng)的子程序。

      ?1,F2?1,Fi?Fi?1?Fi?2(i?3),編寫(xiě)求該解:設(shè)獎(jiǎng)斐波那契數(shù)列存放在字變量RESULT中。在數(shù)據(jù)段中定義

      RESULT DW 100H DUP(?)

      在代碼段中編寫(xiě)子程序 FIBONACCI PROC NEAR

      XOR DI,DI

      MOV RESULT[DI],1

      ;前兩個(gè)數(shù)為1

      MOV RESULT[DI+2],1

      ADD DI,4

      MOV CX,N L1:

      MOV AX, RESULT[DI-4]

      ADD AX, RESULT[DI-2]

      MOV RESULT[DI],AX

      ADD DI,2

      LOOP L1

      RET FIBONACCI ENDP

      22.編寫(xiě)程序?qū)崿F(xiàn)循環(huán)顯示10條信息,保存每條信息的變量分別為INFOM1~I(xiàn)NFORM10。解:在數(shù)據(jù)段中定義變量:

      TABLE DW INFORM1, INFORM2, INFORM3, INFORM4, INFORM5

      DW INFORM6, INFORM7, INFORM8, INFORM9, INFORM10 在代碼段中編寫(xiě)程序段:

      MOV XOR MOV MOV CX,10 SI,SI DX,TABLE[SI] AH,9 L1:

      INT ADD CALL LOOP 21H SI,2 WAIT L1 這里,WAIT為延時(shí)子程序,用于在顯示信息之間的停頓。

      23.編寫(xiě)程序?qū)崿F(xiàn)將包含20個(gè)數(shù)據(jù)的數(shù)組ARRAY分成兩個(gè)數(shù)組:正數(shù)數(shù)組ARRAYP和負(fù)數(shù)數(shù)組ARRAYN,并分別將這兩個(gè)數(shù)組中數(shù)據(jù)的個(gè)數(shù)顯示出來(lái)。

      解:先編寫(xiě)一個(gè)子程序DISPALD,完成以3位十進(jìn)制數(shù)形式顯示出AL的內(nèi)容。

      DISPALD PROC NEAR PUSH AX PUSH CX PUSH DX XOR AH,AH MOV CL,100 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV AL,AH XOR AH,AH MOV CL,10 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV DL,30H ADD DL,AH MOV AH,2 INT 21H POP DX POP CX POP AX RET DISPALD ENDP

      在此基礎(chǔ)上,根據(jù)題目要求,需要用到3個(gè)指針:SI指向源數(shù)組ARRAY,DI指向正數(shù)數(shù)組ARRAYP,BX指向負(fù)數(shù)數(shù)組ARRAYN。

      MOV XOR LEA LEA LEA MOV AND JS MOV INC INC JMP MOV INC INC INC CX,20 DX,DX SI,ARRAY DI,ARRAYP BX,ARRAYN AL,[SI] AL,AL L2 [DI],AL DI DL L3 [BX],AL BX DH SI L1:

      L2:

      L3:

      LOOP MOV CALL MOV CALL L1 AL,DL DISPALD AL,DH DISPALD 24.編寫(xiě)程序?qū)崿F(xiàn)求緩沖區(qū)BUFFER的100個(gè)字中的最小偶數(shù)(存入AX)。解:設(shè)BUFFER中存放的是有符號(hào)數(shù)。

      L1:

      L2: MOV CX,100 LEA SI,BUFFER MOV AX, 7FFFH AND WORD PTR [SI],1 JNZ L2 CMP [SI],AX JGE L2 MOV AX,[SI] ADD SI,2 LOOP L1

      225.編寫(xiě)程序?qū)崿F(xiàn)求級(jí)數(shù)1解:BL用于存放項(xiàng)數(shù)。

      ?22???n2??的前n項(xiàng)和剛大于2000的項(xiàng)數(shù)n。

      STACK SEGMENT STACK 'STACK'

      DW 100H DUP(?)TOP LABEL WORD STACK ENDS DATA SEGMENT

      DB 100H DUP(?)DATA ENDS CODE SEGMENT

      ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START:

      MOV AX,DATA

      MOV DS,AX

      MOV ES,AX

      MOV AX,STACK

      MOV SS,AX

      LEA SP,TOP

      MOV BL,1

      MOV CX,0 COUNT:

      MOV AL, BL

      MUL BL

      ADD CX,AX

      CMP CX,2000

      JA EXIT

      INC BL

      JMP COUNT EXIT:

      26.定義一條宏指令,實(shí)現(xiàn)將指定數(shù)據(jù)段的段地址傳送到段寄存器ES或DS的功能。解:

      27.定義一條宏指令,實(shí)現(xiàn)從鍵盤(pán)中輸入一個(gè)字符串(利用INT 21H的09號(hào)功能)。28.定義一條宏指令,實(shí)現(xiàn)在屏幕上輸出回車(chē)、換行。29.利用其它指令完成與下列指令一樣的功能:

      (1)REP MOVSB;

      (3)REP STOSB;

      解:設(shè)DF=0(1)

      L1: MOV AL,[SI]

      MOV ES:[DI],AL INC INC SI DI

      (2)REP LODSB;(4)REP SCASB。

      LOOP L1(2)

      L1: MOV AL,[SI] INC SI LOOP L1(3)

      L1: MOV ES:[DI],AL

      INC DI LOOP L1(4)

      L1: MOV AL,[SI]

      CMP AL,ES:[DI] INC INC SI DI LOOP L1 30.設(shè)在數(shù)據(jù)段中定義了:

      STR1 DB ‘ASSEMBLE LANGUAGE’ STR2 DB 20 DUP(?)利用字符串指令編寫(xiě)程序段實(shí)現(xiàn):

      (1)從左到右將STR1中的字符串傳送到STR2;(2)從右到左將STR1中的字符串傳送到STR2;(3)將STR1中的第6個(gè)和第7個(gè)字節(jié)裝入DX;

      (4)掃描STR1字符串中有無(wú)空格,如有則將第一個(gè)空格符的地址傳送到SI。解: STR1中有17個(gè)字符(含一個(gè)空格),設(shè)DS和ES均指向STR1和STR2所在的段。(1)

      CLD MOV LEA LEA REP MOV LEA LEA CX,17 SI,STR1 DI,STR2 MOVSB CX,17 SI,STR1 DI,STR2(2)

      ADD DEC MOV MOV DEC INC LOOP LEA MOV MOV LEA MOV CMP JZ INC LOOP SI,CX SI AL,[SI] [DI],AL SI DI L1 SI,STR1 DX,[SI+6] CX,17 SI,STR1 AL,20H [SI], AL L2 SI L1 L1:

      (3)

      (4)

      L1:

      L2:

      31.設(shè)在數(shù)據(jù)段中定義了:

      STRING DB ‘Today is Sunday & July 16, 2000’

      編寫(xiě)程序?qū)崿F(xiàn)將STRING中的’&’用’/’代替。解:STRING中保存了30個(gè)字符。

      MOV LEA MOV CMP JNZ MOV INC LOOP CX,30 SI,STRING AL,’&’ [SI],AL L2 BYTE PTR [SI],’/’ SI L1 L1:

      L2:

      32.分析下列程序段完成的功能:

      MOV CX,100 LEA SI,F(xiàn)IRST LEA DI,SECOND REP MOVSB 解:將緩沖區(qū)FIRST中100個(gè)字節(jié)傳送到SECOND中。33.分析下列程序段:

      LEA DI,STRING MOV CX,200 CLD MOV AL,20H REPZ SCASB JNZ FOUND JMP NOT_FOUND 問(wèn):轉(zhuǎn)移到FOUND的條件。

      解:在緩沖區(qū)STRING中搜索非空格字符,如果有非空格則轉(zhuǎn)到FOUND,如果200個(gè)單元中都是空格,則轉(zhuǎn)到NOT_FOUND。

      34.設(shè)在數(shù)據(jù)段的變量OLDS和NEWS中保存有5個(gè)字節(jié)的字符串,如果OLDS字符串不同于NEWS字符串,則執(zhí)行NEW_LESS,否則順序執(zhí)行程序。解:設(shè)DS和ES均指向字符串OLDS和NEWS所在的段。CLD MOV

      35.編程實(shí)現(xiàn)將STRING字符串中的小寫(xiě)字母變換成大寫(xiě)字母。解:設(shè)STRING中的字符個(gè)數(shù)為N。

      LEA LEA REPZ JNZ CX,5 SI,OLDS DI,NEWS CMPSB NEW_LESS

      MOV LEA MOV AND INC CX,N SI,STRING AL,5FH [SI],AL SI L1:

      LOOP L1 36.設(shè)在數(shù)據(jù)段中定義了:

      STUDENT_NAME DB 30 DUP(?)STUDENT_ADDR DB 9 DUP(?)STUDENT_PRINT DB 50 DUP(?)編寫(xiě)程序?qū)崿F(xiàn):

      用空格符清除緩沖區(qū)STUDENT_PRINT; 在STUDENT_ADDR中查找第一個(gè)’_’字符; 在STUDENT_ADDR中查找最后一個(gè)’_’字符;

      如果STUDENT_NAME中全為空格符,則STUDENT_PRINT全存入’*’;

      將STUDENT_NAME傳送到STUDENT_PRINT的前30個(gè)字節(jié)中,將STUDENT_ADDR傳送到STUDENT_PRINT的后9個(gè)字節(jié)中。

      37.(上機(jī)題)編寫(xiě)程序?qū)崿F(xiàn),將緩沖區(qū)BUFFER中的100個(gè)字按遞增排序,并按下列格式順序顯示:

      數(shù)據(jù)1 <原序號(hào)> 數(shù)據(jù)2 <原序號(hào)> ??

      38.(上機(jī)題)按同余法產(chǎn)生一組隨機(jī)數(shù)N(1

      Total <總?cè)藬?shù)> A:

      <人數(shù)1> B:

      <人數(shù)2> C:

      <人數(shù)3> D:

      <人數(shù)4> E:

      <人數(shù)5> F:

      <人數(shù)6>

      39.(上機(jī)題)編寫(xiě)程序?qū)崿F(xiàn)下列5項(xiàng)功能,通過(guò)從鍵盤(pán)輸入1~5進(jìn)行菜單式選擇:

      (1)按數(shù)字鍵“1”,完成將字符串中的小寫(xiě)字母變換成大寫(xiě)字母。用戶(hù)輸入由英文大小寫(xiě)字母或數(shù)字0~9組成的字符串(以回車(chē)結(jié)束),變換后按下列格式在屏幕上顯示:

      <原字符串>例如:abcdgyt0092 <新字符串>

      ABCDGYT0092 按任一鍵重做;按Esc鍵返回主菜單。

      (2)按數(shù)字鍵“2”,完成在字符串中找最大值。用戶(hù)輸入由英文大小寫(xiě)字母或數(shù)字

      0~9組成的字符串(以回車(chē)結(jié)束),找出最大值后按下列格式在屏幕上顯示:

      <原字符串>

      The maximum is <最大值>.

      按任一鍵重做;按Esc鍵返回主菜單。

      (3)按數(shù)字鍵“3”,完成輸入數(shù)據(jù)組的排序。用戶(hù)輸入一組十進(jìn)制數(shù)值(小于255),然后變換成十六進(jìn)制數(shù),并按遞增方式進(jìn)行排序,按下列格式在屏幕上顯示:

      <原數(shù)值串>

      <新數(shù)值串> 按任一鍵重做;按Esc鍵返回主菜單。

      (4)按數(shù)字鍵“4”,完成時(shí)間的顯示。首先提示用戶(hù)對(duì)時(shí),即改變系統(tǒng)的定時(shí)器

      HH:MM:SS(以冒號(hào)間隔,回車(chē)結(jié)束),然后在屏幕的右上角實(shí)時(shí)顯示出時(shí)

      間:HH:MM:SS。

      按任一鍵重新對(duì)時(shí);按Esc鍵返回主菜單。

      (5)按數(shù)字鍵“5”,結(jié)束程序的運(yùn)行,返回操作系統(tǒng)。解:

      ※主程序的編程思路: 此程序共5個(gè)功能,可采用跳轉(zhuǎn)表法來(lái)實(shí)現(xiàn)多路分支結(jié)構(gòu)程序設(shè)計(jì)?,F(xiàn)將這5個(gè)程序段,各程序段的首地址分別標(biāo)號(hào)為G1,G2,G3,G4,G5。將5個(gè)程序段的入口地址做成表TABLE放入數(shù)據(jù)段,程序根據(jù)給定的參數(shù)計(jì)算出欲轉(zhuǎn)入的程序段的首地址在TABLE中的位置后,取出該地址,跳轉(zhuǎn)至該程序段。

      首先,通過(guò)調(diào)用子程序MENU,設(shè)置顯示器,并輸出提示文檔。接著,讀取‘1’-‘5’之間的ASCII表示數(shù)。然后,通過(guò)跳轉(zhuǎn)表TABLE實(shí)現(xiàn)由輸入?yún)?shù)轉(zhuǎn)入相應(yīng)的程序段。由于表中按“字”存放數(shù)據(jù),則每個(gè)數(shù)據(jù)的位移量是:0、2、4、6、8。對(duì)于輸入?yún)?shù)N,計(jì)算位移量的公式是N=(N-1)*2。

      當(dāng)輸入‘1’時(shí),跳轉(zhuǎn)到標(biāo)號(hào)G1。調(diào)用子程序CHGLTR,完成將輸入字符串中的小寫(xiě)字母變換成大寫(xiě)字母。用戶(hù)按鍵,若為ESC,則轉(zhuǎn)到主程序段首調(diào)用MENU,否則,轉(zhuǎn)到標(biāo)號(hào)G1;

      當(dāng)輸入‘2’時(shí),跳轉(zhuǎn)到標(biāo)號(hào)G2。調(diào)用子程序MAXLTR,完成在輸入字符串中找最大值。用戶(hù)按鍵,若為ESC,則轉(zhuǎn)到主程序段首調(diào)用MENU,否則,轉(zhuǎn)到標(biāo)號(hào)G2;

      當(dāng)輸入‘3’時(shí),跳轉(zhuǎn)到標(biāo)號(hào)G3。調(diào)用子程序SORTNUM,完成輸入數(shù)據(jù)組的排序。用戶(hù)按鍵,若為ESC,則轉(zhuǎn)到主程序段首調(diào)用MENU,否則,轉(zhuǎn)到標(biāo)號(hào)G3。

      當(dāng)輸入‘4’時(shí),跳轉(zhuǎn)到標(biāo)號(hào)G4。調(diào)用子程序TIMCHK,完成時(shí)間的顯示。用戶(hù)按鍵,若為ESC,則轉(zhuǎn)到主程序段首調(diào)用MENU,否則,轉(zhuǎn)到標(biāo)號(hào)G4。

      當(dāng)輸入‘5’時(shí),跳轉(zhuǎn)到標(biāo)號(hào)G5。結(jié)束程序的運(yùn)行,返回操作系統(tǒng)。其流程框圖見(jiàn)圖3-1。

      第五篇:微機(jī)原理與接口技術(shù)試題及答案

      一、填空題(每空 1 分,共 15 分)得分 評(píng)閱人

      1.RESET信號(hào)到來(lái)后8088/86的CS和IP 分別為 _FFFF_H 和_0000_H。2.在特殊全嵌套方式下,8259可響應(yīng) 同級(jí)或高級(jí) 中斷請(qǐng)求。3.CPU與外設(shè)接口通過(guò)? 數(shù)據(jù) 總線傳送狀態(tài)信號(hào)與命令信號(hào)。4.8255有3種工作方式, 其中 方式2 只允許A口使用。5.有地址重迭現(xiàn)象的譯碼方式為 部分譯碼 和 線選法。

      6.外設(shè)端口的編址方式有 I/O端口獨(dú).立編址 和 I/O端口與存儲(chǔ)器統(tǒng)一編址。7.INT8253采用BCD碼計(jì)數(shù)時(shí),其最大計(jì)數(shù)值為_(kāi)_10000__,此時(shí)的計(jì)數(shù)初值為_(kāi)_0000__。

      8.8088/8086的AD7-AD0是地址數(shù)據(jù)復(fù)用引腳,在T1時(shí)傳送__地址信號(hào)__。9.8259A作為主片時(shí)其引腳CAS0-CAS2的信息傳送方向是_向外_。

      10.RS-232C是適用于__數(shù)據(jù)終端設(shè)備DTE__和__數(shù)據(jù)通信設(shè)備DCE__間的接口。

      二、單項(xiàng)選擇題(每小題1分,共20分)得分 評(píng)閱人

      1.8086CPU尋址I/O端口最多使用(4)條地址線。(1)8(2)10(3)12(4)16 2.CPU執(zhí)行IN指令時(shí)有效的信號(hào)組合是(1)。(1)=0, =1(2)=0, =0(3)=0, =1(4)=0, =0

      3.某計(jì)算機(jī)的字長(zhǎng)是16位,它的存儲(chǔ)器容量是64KB,若按字編址那么它的最大尋址范圍是(2)。

      (1)64K字(2)32K字(3)64KB(4)32KB 4.某一SRAM芯片的容量是512×8位,除電源和接地線外,該芯片的其他引腳最少應(yīng)為(4)根。

      (1)25(2)23(3)21(4)19 5.8088/8086的基本總線周期由(2)個(gè)時(shí)鐘周期組成。(1)2(2)4(3)5(4)6 6.在8086系統(tǒng)中中斷號(hào)為0AH,則存放中斷向量的內(nèi)存起始地址為(2)。(1)0AH(2)28H(3)4AH(4)2AH 7.采用兩片8259A可編程中斷控制器級(jí)聯(lián)使用,可以使CPU的可屏蔽中斷擴(kuò)大到(1)。

      (1)15級(jí)(2)16級(jí)(3)32級(jí)(4)64級(jí)

      8.當(dāng)IF=0,8088/8086CPU不響應(yīng)(2)中斷請(qǐng)求。(1)INT N(2)INTR(3)NMI(4)INTO 9.8253可編程定時(shí)器/計(jì)數(shù)器中,其二進(jìn)制的最大計(jì)數(shù)初值為(3)。(1)65536(2)7FFFH(3)0000H(4)FFFFH 10.8086/88CPU在響應(yīng)中斷時(shí)要執(zhí)行(2)個(gè)中斷響應(yīng)周期。(1)1個(gè)(2)2個(gè)(3)3個(gè)(4)4個(gè)

      11.中斷向量表是存放(2)的存儲(chǔ)區(qū)域.(1)中斷類(lèi)型號(hào)(2)中斷服務(wù)程序入口處地址(3)中斷斷點(diǎn)地址(4)程序狀態(tài)字

      12.INT8255中可用置位/復(fù)位控制字對(duì)(3)的各位進(jìn)行按位操作以實(shí)現(xiàn)某些控制功能。

      (1)A口(2)B口(3)C口(4)數(shù)據(jù)總線緩沖器

      11.RS-232C標(biāo)準(zhǔn)規(guī)定信號(hào)“0”和“1”的電平是(3)。(1)0V和+3V~+15V(2)-3V~-15V和0V(3)+3V至+15V和-3V~-15V(4)+3V~+15V和-0V 12.對(duì)于開(kāi)關(guān)型設(shè)備的控制,適合采用的I/O傳送方式是(1)。(1)無(wú)條件(2)查詢(xún)(3)中斷(4)DMA 13.傳送數(shù)據(jù)時(shí),占用CPU時(shí)間最長(zhǎng)的傳送方式是(1)。(1)查詢(xún)(2)中斷(3)DMA(4)IOP 14.既然是在數(shù)據(jù)傳輸率相同的情況下,那么,又說(shuō)同步字符傳輸速度要高于 異步字符傳輸其原因是(2)。

      (1)發(fā)生錯(cuò)誤的概率少(2)附加位信息總量少(3)雙方通信同步(4)字符之間無(wú)間隔

      15.巳知DRAM2118芯片容量為16K×1位, 若組成64KB的系統(tǒng)存儲(chǔ)器,則組成的芯片組數(shù)和每個(gè)芯片組的芯片數(shù)為(4).(1)2和8(2)1和16(3)4和16(4)4和8 16.INT 8259中斷屏蔽寄存儲(chǔ)器的作用是(2).(1)禁止CPU響應(yīng)外設(shè)的中斷請(qǐng)求(2)禁止外設(shè)向CPU發(fā)中斷請(qǐng)求(3)禁止軟中斷請(qǐng)求(4)禁止NMI中斷請(qǐng)求

      17.在正常EOI方式下, 中斷結(jié)束命令是清除(2)中的某一位.(1)IRR(2)ISR(3)IMR(4)程序狀態(tài)字

      18.軟中斷INT N的優(yōu)先級(jí)排列原則是(3).(1)N值愈小級(jí)別愈高(2)N值愈大級(jí)別愈高(3)無(wú)優(yōu)先級(jí)別(4)隨應(yīng)用而定

      19.串行異步通信傳輸?shù)闹饕攸c(diǎn)是(2).(1)通信雙方不必同步(2)每個(gè)字符的發(fā)送是獨(dú)立的

      (3)字符之間的傳送時(shí)間長(zhǎng)度應(yīng)相同(4)字符發(fā)送速率由波特率決定 20.8位D/A轉(zhuǎn)換器的分辨率能給出滿量程電壓的(4).(1)1/8(2)1/16(3)1/32(4)1/256

      三、判斷說(shuō)明題(正者在括號(hào)內(nèi)打“√”,誤者在括號(hào)內(nèi)打“×”,均需說(shuō)明理由。每小題2分,共10分)得分 評(píng)閱人

      1.8086CPU在讀/寫(xiě)總線周期的T3狀態(tài)結(jié)束對(duì)READY線采樣,如果READY為低電平,則在T3與T4狀態(tài)之間插入等待狀態(tài)TW。(×)應(yīng)改為:8086CPU在讀/寫(xiě)總線周期的T3狀態(tài)開(kāi)始對(duì)READY線采樣,如果READY為低電平,則在T3與T4狀態(tài)之間插入等待狀態(tài)TW。

      2.在8253的方式控制字中,有一項(xiàng)計(jì)數(shù)鎖存操作,其作用是暫停計(jì)數(shù)器的計(jì)數(shù)。(×)

      應(yīng)改為:鎖存計(jì)數(shù)器的當(dāng)前值到鎖存器,但不影響對(duì)計(jì)數(shù)器的計(jì)數(shù)工作。

      3.8250的溢出錯(cuò)誤指示CPU還未取走前一個(gè)數(shù)據(jù),接收移位寄存器又將接收到的一個(gè)新數(shù)據(jù)送至輸入緩沖器。(√)

      4.在8088系統(tǒng)(最小組態(tài))中,執(zhí)行指令”MOV [2000H],AX”需1個(gè)總線周期。(×)

      應(yīng)改為:需2個(gè)總線周期

      5.DMA控制器8237A現(xiàn)行字節(jié)數(shù)寄存器的值減到0時(shí),終止計(jì)數(shù)。(×)應(yīng)改為:DMA控制器8237A現(xiàn)行字節(jié)數(shù)寄存器的值減到0,再由0減到0FFFFH時(shí),終止計(jì)數(shù)。

      四、簡(jiǎn)答題(每小題5分,共20分)得分 評(píng)閱人

      1.試述8250的數(shù)據(jù)接收時(shí)鐘RCLK使用16倍比特率的時(shí)鐘信號(hào)接收異步通信信號(hào)的原因以及接收過(guò)程。

      答:主要是為了確定起始位避免傳輸線上的干擾。

      其接收過(guò)程為:接收器檢測(cè)到串行數(shù)據(jù)輸入引腳SIN由高電平變低后,連續(xù)測(cè)試8個(gè)RCLK時(shí)鐘周期,若采樣到的都是低電平,則確認(rèn)為起始位;若低電平的保持時(shí)間不足8個(gè)RCLK時(shí)鐘周期,則認(rèn)為是傳輸線上的干擾。

      2.8255A工作于方式2,采用中斷傳送,CPU如何區(qū)分輸入中斷還是輸出中斷? 答:CPU響應(yīng)8255A的中斷請(qǐng)求后,在中斷服務(wù)程序的開(kāi)始可以查詢(xún)8255A的狀態(tài)字,判斷~OBFA(PC7)和IBFA(PC5)位的狀態(tài)來(lái)區(qū)分是輸入中斷還是輸出中斷,并據(jù)此轉(zhuǎn)向相應(yīng)的輸入或輸出操作。

      3.用2K×4位RAM構(gòu)成64KB的存儲(chǔ)系統(tǒng),需要多少RAM芯片?需要多少位地址作為片外地址譯碼?設(shè)系統(tǒng)為20位地址線,采用全譯碼方式。答:64片。

      9位。其中A16~A19固定,A10~A15譯碼形成組選信號(hào)。

      4.請(qǐng)說(shuō)明Intel8253各個(gè)計(jì)數(shù)通道中三個(gè)引腳信號(hào)CLK,OUT和GATE的功能。答:CLK為計(jì)數(shù)時(shí)鐘輸入引腳,為計(jì)數(shù)器提供計(jì)數(shù)脈沖。

      GATE為門(mén)控信號(hào)輸入引腳,用于啟動(dòng)或禁止計(jì)數(shù)器操作,如允許/禁止計(jì)數(shù)、啟

      動(dòng)/停止計(jì)數(shù)等。

      OUT為輸出信號(hào)引腳以相應(yīng)的電平或脈沖波形來(lái)指示計(jì)數(shù)的完成、定時(shí)時(shí)間到。

      五、簡(jiǎn)單應(yīng)用題(每小題5分,共15分)得分 評(píng)閱人

      1.Intel8253的通道0按方式3工作,時(shí)鐘CLK0的頻率為1兆,要求輸出方波的頻率為40KHz,采用BCD碼計(jì)數(shù),設(shè)通道0的地址為PORT0,請(qǐng)對(duì)它寫(xiě)入計(jì)數(shù)值。解:n(計(jì)數(shù)初值)=1MHz/40KHz=25 寫(xiě)入計(jì)數(shù)值的程序段: MOV AL,25H OUT PORT0,AL

      2.若8086系統(tǒng)采用單片8259A,其中斷類(lèi)型碼為46H,則其中斷矢量表的地址指針是多少?這個(gè)中斷源應(yīng)連向8259A的哪一個(gè)IR輸入端? 解:中斷矢量表的地址指針是46H×4=118H 應(yīng)連向8259A的IR6

      下載微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案word格式文檔
      下載微機(jī)原理與接口技術(shù)(第二版)習(xí)題答案.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶(hù)自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        微機(jī)原理及接口技術(shù)試卷及答案

        一、(共30分) 1.(10分) (1)將十進(jìn)制數(shù)+107/128化成二進(jìn)制數(shù)、八進(jìn)制數(shù)和十六進(jìn)制數(shù)(3分) (2)請(qǐng)回答什么是二--十進(jìn)制編碼?什么是有權(quán)碼、什么是無(wú)權(quán)碼、各舉一個(gè)你熟悉的有權(quán)碼......

        微機(jī)原理與接口技術(shù)課后習(xí)題答案(朱紅)(含五篇)

        第一章習(xí)題答案 一、選擇題 1.十進(jìn)制數(shù) 66 轉(zhuǎn)換成二進(jìn)制數(shù)為_(kāi)______。A. 11000010 B.01100110 C.11100110 D.01000010 答案:D 2.十進(jìn)制數(shù) 27.25 轉(zhuǎn)換成十六進(jìn)制數(shù)為_(kāi)_____......

        微機(jī)原理與接口技術(shù)試題答案

        微機(jī)原理與接口技術(shù)試題答案 一、填空題(20*1) 1、微機(jī)系統(tǒng)由(硬件系統(tǒng))和(軟件系統(tǒng))兩部分組成。 2、8086有( 20 )位地址線,存儲(chǔ)器容量為( 1M)B。 3、8086CPU 內(nèi)部組成結(jié)構(gòu)從功能上講,......

        微機(jī)原理與接口技術(shù)小結(jié)范文大全

        微機(jī)原理與接口技術(shù)基礎(chǔ) 1.為什么在流水CPU中,將一條指令從取指到執(zhí)行結(jié)束的任務(wù)分割為一系列子任務(wù),并使各子任務(wù)在流水線的各個(gè)過(guò)程段并發(fā)地執(zhí)行,從而使流水CPU具有更強(qiáng)大的......

        2012年微機(jī)原理與接口技術(shù)試題及答案

        一. 選擇(每題1分) 下列各題四個(gè)選擇項(xiàng)中,只有一個(gè)選項(xiàng)是正確的。請(qǐng)將正確選項(xiàng)號(hào)寫(xiě)在相應(yīng)空位置上。 1.系統(tǒng)總線又稱(chēng)為_(kāi)______,這是指模塊式微處理機(jī)機(jī)箱內(nèi)的底版總線。 1)主板......

        微機(jī)原理與接口技術(shù)考試試題及答案A

        《微機(jī)原理與接口技術(shù)》課程期末考試試卷(A卷,考試) 一、單項(xiàng)選擇(在備選答案中選出一個(gè)正確答案,并將其號(hào)碼填在題干后的括號(hào)內(nèi)。每題2分,共30分) 1 .某微機(jī)最大可尋址的內(nèi)存空間......

        微機(jī)原理與接口技術(shù)考試試題與答案

        一、填空題(每空1 分,共15 分) 1.RESET 信號(hào)到來(lái)后8088/86 的CS 和IP 分別為_(kāi)FFFF_H 和 _0000_H。 2. 在特殊全嵌套方式下,8259 可響應(yīng)同級(jí)或高級(jí)中斷請(qǐng)求。 3. CPU 與外設(shè)接......

        微機(jī)原理與接口技術(shù)第四章 練習(xí)題及答案

        第四章 練習(xí)題及答案 一、 填空題 1、CPU與I/O接口間的信息一般包括______________三種類(lèi)型。 答案:數(shù)據(jù)信息狀態(tài)信息控制信息 2、CPU通過(guò)一個(gè)外設(shè)接口同外設(shè)之間交換的信息包......