微機(jī)原理題庫(kù)_第1頁(yè)
微機(jī)原理題庫(kù)_第2頁(yè)
微機(jī)原理題庫(kù)_第3頁(yè)
微機(jī)原理題庫(kù)_第4頁(yè)
微機(jī)原理題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

[鍵入文字] [鍵入文字][鍵入文字]PAGEPAGE48第1章微型計(jì)算機(jī)基礎(chǔ)知識(shí)填空題將10110.10111B的十六進(jìn)制數(shù)是_______________,34.97H的十進(jìn)制數(shù)是_______________,將114.35轉(zhuǎn)換為二進(jìn)制為_(kāi)_____________。解答:10110.10111B的十六進(jìn)制數(shù)是16.B8H,34.97H的十進(jìn)制數(shù)是52.6055,將114.35轉(zhuǎn)換二進(jìn)制為1110010.01011B。100101.11B+(110101.1)BCD+5A.18H=___________D解答:100101.11B+(110101.1)BCD+5A.18H=163.6438D3.每個(gè)漢字的編碼有字節(jié)組成,ASCII的最高位B7=,而漢字的內(nèi)碼的最高位B7=。計(jì)算機(jī)根據(jù)字節(jié)的最高位來(lái)區(qū)分ASCII碼和漢字內(nèi)碼。解答:每個(gè)漢字的編碼有2個(gè)字節(jié)組成,ASCII的最高位B7=0,而漢字的內(nèi)碼的最高位B7=1。計(jì)算機(jī)根據(jù)字節(jié)的最高位來(lái)區(qū)分ASCII碼和漢字內(nèi)碼。[X]補(bǔ)=0A8H,則X=_______D.解答:X=_-88_D5.已知[X]補(bǔ)=00010111B,則[-4X]補(bǔ)=B解答:[-4X]補(bǔ)=10100100B6.若[X]原=[Y]反=[Z]補(bǔ)=90H,試用十進(jìn)制數(shù)分別寫(xiě)出其大小,X=;Y=;Z=。解答:X=-16;Y=-111;Z=-1127.計(jì)算機(jī)的主機(jī)由、控制器、主存儲(chǔ)器組成。解答:計(jì)算機(jī)的主機(jī)由運(yùn)算器、控制器、主存儲(chǔ)器組成。8.__________確定了計(jì)算機(jī)的5個(gè)基本部件:輸入器、_________、運(yùn)算器和__________和控制器,程序和數(shù)據(jù)存放在__________中,并采用了二進(jìn)制。解答:馮·諾依曼結(jié)構(gòu)計(jì)算機(jī)確定了計(jì)算機(jī)的5個(gè)基本部件:輸入器、輸出器、運(yùn)算器和存儲(chǔ)器和控制器。數(shù)據(jù)和程序都是存放在存儲(chǔ)器中,并采用了二進(jìn)制。9.將下列十六進(jìn)制數(shù)的ASCII碼轉(zhuǎn)換為十進(jìn)制數(shù)。(1)313035H(2)374341H(3)32303030H(4)38413543H解答:(1)313035H=105H=100H+5H=256+5=261(2)374341H=7CAH=800H-36H=2048-(40H-10)=2048-(64-10)=1994(3)32303030H=2000H=8192(4)38413543H=8A5CH=8000H+800H+200H+50H+0CH=32768+2048+512+80+12=3542010.一個(gè)8位的二進(jìn)制補(bǔ)碼數(shù),它的十六進(jìn)制表示為A9H,它的十進(jìn)制數(shù)值為_(kāi)________。解答:-87D選擇題1.用BCD碼進(jìn)行相加,結(jié)果為BCD碼,為得到正確的結(jié)果對(duì)高4位和低4為都進(jìn)行加6修正的是。A.38+49B.33+34C.91+66D.87+15答:D2.補(bǔ)碼減法運(yùn)算是指()。A.操作數(shù)用補(bǔ)碼表示,符號(hào)位單獨(dú)處理B.操作數(shù)用補(bǔ)碼表示,連同符號(hào)位一起相加C.操作數(shù)用補(bǔ)碼表示,將減數(shù)變?yōu)闄C(jī)器負(fù)數(shù)然后連同符號(hào)位相加D.操作數(shù)用補(bǔ)碼表示,將被減數(shù)變?yōu)闄C(jī)器負(fù)數(shù)補(bǔ),然后相加答:C3.0A7H表示成二進(jìn)制為_(kāi)__________,如果是無(wú)符號(hào)數(shù)它表示的十進(jìn)制數(shù)為_(kāi)__________;如果為有符號(hào)數(shù)它表示的十進(jìn)制數(shù)是___________。A.10100111B;167;-167B.10100111B;167;-59C.10100111B;167;-89D.10100111B;89;-89答:C4.10位二進(jìn)制補(bǔ)碼表示的十進(jìn)制整數(shù)范圍為:+511—-512,后者補(bǔ)碼為:()A.0000000000B.1000000000C.1111111110D.1111111111答:B5.十六進(jìn)制數(shù)88H,可表示成下面幾種形式,請(qǐng)找出錯(cuò)誤的表示()。A.無(wú)符號(hào)十進(jìn)制136B.帶符號(hào)十進(jìn)制數(shù)-120C.壓縮型BCD碼十進(jìn)制數(shù)88D.8位二進(jìn)制-8的補(bǔ)碼表示答:D6.設(shè)機(jī)器字長(zhǎng)為8位,最高位為符號(hào)位,下述各補(bǔ)碼運(yùn)算可能產(chǎn)生負(fù)溢出的是_______。A.48H+64HB.0B4H-63HC.2AH-53HD.37H+0C7H答:B7.在計(jì)算機(jī)內(nèi)部,一切信息的存取、處理和傳送都是以_______形式進(jìn)行的。A.EBCDIC碼B.ASCII碼C.十六進(jìn)制編碼D.二進(jìn)制編碼答:D8.十進(jìn)制正數(shù)38的八位二進(jìn)制補(bǔ)碼是______。A.00011001B.10100110C.10011001D.00100110答:D三.是非判斷題1、在第三代計(jì)算機(jī)期間出現(xiàn)了操作系統(tǒng)。(√)2、對(duì)于種類不同的計(jì)算機(jī),其機(jī)器指令系統(tǒng)都是相同的。(×)3、在計(jì)算機(jī)中,數(shù)據(jù)單位bit的意思是字節(jié)。(×)4、八進(jìn)制數(shù)的基數(shù)為8,因此在八進(jìn)制數(shù)中可以使用的數(shù)字符號(hào)是0、1、2、3、4、5、6、7、8。(×)5、在漢字國(guó)標(biāo)碼GB2312-80的字符集中,共收集了6763個(gè)常用漢字。(√)四.問(wèn)答題1.微處理器、微機(jī)和微機(jī)系統(tǒng)之間有什么不同?2.設(shè)當(dāng)兩個(gè)正數(shù)相加時(shí),補(bǔ)碼溢出意味著什么??jī)蓚€(gè)負(fù)數(shù)相加能溢出嗎?試舉例說(shuō)明。3.在計(jì)算機(jī)中為什么都采用二進(jìn)制而不采用十進(jìn)制數(shù)?二進(jìn)制數(shù)由哪兩種縮寫(xiě)形式?4.什么是進(jìn)制的基和權(quán)?四種進(jìn)制之間怎樣轉(zhuǎn)換?5.典型的微型計(jì)算機(jī)中有哪幾種總線?它們各自傳送什么類型的信息?

第2章微處理器一.填空題1.8086/8088CPU在結(jié)構(gòu)上面由兩個(gè)獨(dú)立的處理單元__________和_________構(gòu)成,這兩個(gè)單元可以____________工作,從而加快了程序的運(yùn)行速度。解答:8086/8088CPU在結(jié)構(gòu)上面由兩個(gè)獨(dú)立的處理單元____BIU______和___EU____構(gòu)成,這兩個(gè)單元可以___并行____工作,從而加快了程序的運(yùn)行速度。2.8086是Intel系列的16位微處理器,從功能上,它分為兩部分即總線接口部件和執(zhí)行部件。其中,總線接口部件由、、、、等寄存器及20位地址加法器和6字節(jié)指令隊(duì)列構(gòu)成。執(zhí)行部件由4個(gè)通用寄存器,即;4個(gè)專用寄存器,即、、、等寄存器和算術(shù)邏輯單元組成。解答:8086是Intel系列的16位微處理器,從功能上,它分為兩部分即總線接口部件和執(zhí)行部件。其中,總線接口部件由代碼段寄存器CS、數(shù)據(jù)段寄存器DS、堆棧段寄存器SS、附加段寄存器ES、指令指針寄存器IP等寄存器及20位地址加法器和6字節(jié)指令隊(duì)列構(gòu)成。執(zhí)行部件由4個(gè)通用寄存器,即AX、BX、CX和DX;4個(gè)專用寄存器,即SP、BP、DI、SI等寄存器和算術(shù)邏輯單元組成。3.8086中的BIU由個(gè)位段寄存器、一個(gè)位指令指針、字節(jié)指令隊(duì)列、位地址加法器和控制電路組成。解答:8088/8086中的BIU由4個(gè)16位段寄存器、一個(gè)16位指令指針、6字節(jié)指令隊(duì)列、20位地址加法器和總線控制電路組成。4.指令隊(duì)列位于,它存放內(nèi)存中取出的,8086的指令隊(duì)列有個(gè)字節(jié),而8088的指令隊(duì)列有個(gè)字節(jié)。解答:指令隊(duì)列位于BIU,它存放內(nèi)存中取出的將被執(zhí)行的下一條或下幾條指令,8086的指令隊(duì)列有6個(gè)字節(jié),而8088的指令隊(duì)列有4個(gè)字節(jié)。5.決定計(jì)算機(jī)指令執(zhí)行順序的寄存器是,它總是指向。解答:決定計(jì)算機(jī)指令執(zhí)行順序的寄存器是IP,它總是指向指向下一條指令所在的內(nèi)存單元的偏移地址。6.用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行的寄存器稱為寄存器。解答:用于反映指令執(zhí)行結(jié)果或控制指令執(zhí)行的寄存器稱為控制寄存器。7.任何CPU都有一個(gè)寄存器存放程序運(yùn)行狀態(tài)標(biāo)志信息,在8086中,該寄存器是。其中,根據(jù)運(yùn)算結(jié)果是否為零決定程序分支走向的位分別是。解答:任何CPU都有一個(gè)寄存器存放程序運(yùn)行狀態(tài)標(biāo)志信息,在8086中,該寄存器是FR。其中,根據(jù)運(yùn)算結(jié)果是否為零決定程序分支走向的位分別是ZF。8.已知[X]補(bǔ)=00010111B,[Y]補(bǔ)=01101101B,則結(jié)果[X-Y]補(bǔ)=B,且運(yùn)算結(jié)果使6個(gè)狀態(tài)標(biāo)志位CF=SF=ZF=AF=PFOF=。解答:[X-Y]補(bǔ)=[X]補(bǔ)-[Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)[Y]補(bǔ)=01101101B[-Y]真值=-1101101B[-Y]原=11101101B[-Y]反=10010010B[-Y]補(bǔ)=10010011B[X-Y]補(bǔ)=[X]補(bǔ)-[Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=00010111B+10010011B運(yùn)算結(jié)果沒(méi)用進(jìn)位CF=0運(yùn)算結(jié)果的最高位為1,結(jié)果為負(fù)數(shù),則SF=1運(yùn)算結(jié)果的各位不全為0,則ZF=0運(yùn)算結(jié)果的低4位沒(méi)用向高位產(chǎn)生進(jìn)位,則AF=0運(yùn)算結(jié)果的這8位中1的個(gè)數(shù)為4個(gè),為偶數(shù)個(gè)PF=1運(yùn)算結(jié)果的最高位和次高位都無(wú)進(jìn)位,D7C=0,D6C=0因此OF=D7CD6C=0,無(wú)溢出。本題的正確答案為:[X]補(bǔ)=00010111B,[Y]補(bǔ)=01101101B,則結(jié)果[X-Y]補(bǔ)=10101010B,且運(yùn)算結(jié)果使6個(gè)狀態(tài)標(biāo)志位CF=0SF=1ZF=0AF=0PF1OF=0。9在8088/8086存儲(chǔ)空間中,要求各個(gè)邏輯段從節(jié)的整數(shù)開(kāi)始,即段首址的低4位必須是。解答:在8088/8086存儲(chǔ)空間中,要求各個(gè)邏輯段從節(jié)的整數(shù)開(kāi)始,即段首址的低4位必須是012.8086/8088CPU的BIU單元中共有4個(gè)段寄存器:CS、DS、ES、SS。其中,用來(lái)存放當(dāng)前代碼段的基地址,用來(lái)存放當(dāng)前數(shù)據(jù)段的基地址。解答:8086/8088CPU的BIU單元中共有4個(gè)段寄存器:CS、DS、ES、SS。其中,CS用來(lái)存放當(dāng)前代碼段的基地址,DS用來(lái)存放當(dāng)前數(shù)據(jù)段的基地址。13只能隱含使用某個(gè)段寄存器,而不能用其它段寄存器代替。操作隱含使用某個(gè)段寄存器,使用其它段寄存器。解答:計(jì)算程序的堆棧只能隱含使用段寄存器CS,而不能用其它段寄存器代替。有堆棧操作隱含使用某個(gè)段寄存器SS,對(duì)數(shù)據(jù)的存取隱含使用DS或ES段寄存器。15.邏輯地址由段基值和組成。將邏輯地址轉(zhuǎn)換為物理地址的公式是。其中的段基值是由存儲(chǔ)。解答:邏輯地址由段基值和偏移量組成。將邏輯地址轉(zhuǎn)換為物理地址的公式是物理地址=段基址×10H+偏移量。其中的段基值是由段寄存器存儲(chǔ)。16.邏輯地址9B50H:2C00H對(duì)應(yīng)的物理地址是H。解答:物理地址=段基址×10H+偏移量9B50H:2C00H對(duì)應(yīng)的物理地址=9B50H×10H+2C00H=9E100H本題的正確答案為:邏輯地址9B50H:2C00H對(duì)應(yīng)的物理地址是9E100H。17.如果一個(gè)30個(gè)字的數(shù)據(jù)區(qū),它的起始地址是2000H:3000H,則這個(gè)數(shù)據(jù)區(qū)的首字單元物理地址是,末字單元物理地址是。解答:該數(shù)據(jù)區(qū)的首字單元物理地址是=2000H×10H+3000H=23000H該數(shù)據(jù)區(qū)的空間是30個(gè)字,末字單元物理地址的偏移量離首字單元物理地址的偏移量是30個(gè)字,那么末字單元物理地址在首字單元物理地址上增加了(30-1=29)個(gè)字,就是58個(gè)字節(jié),因此末字單元物理地址=首字單元物理地址+58D=23000H+3AH=2303AH。本題的正確答案為:如果一個(gè)30個(gè)字的數(shù)據(jù)區(qū),它的起始地址是2000H:3000H,則這個(gè)數(shù)據(jù)區(qū)的首字單元物理地址是23000H,末字單元物理地址是2303AH。19.8088CPU內(nèi)的堆棧是一種特殊的數(shù)據(jù)存儲(chǔ)區(qū),堆棧操作是________操作(字/字節(jié)?)其存取采用________________的原則,它由_______________作地址指針管理。解答:8088CPU內(nèi)的堆棧是一種特殊的數(shù)據(jù)存儲(chǔ)區(qū),堆棧操作是____字____操作(字/字節(jié)?)其存取采用___后進(jìn)先出___的原則,它由____SP_____作地址指針管理。21.若8086系統(tǒng)中SS=1050H,SP=0008H,此時(shí)堆棧頂?shù)奈锢淼刂窞椤?086在執(zhí)行PUSH指令后,操作數(shù)存放的的理地址為,指令執(zhí)行后的堆棧指針寄存器SP的內(nèi)容。解答::若8086系統(tǒng)中SS=1050H,SP=0008H,此時(shí)堆棧頂?shù)奈锢淼刂窞?0508H。8086在執(zhí)行PUSH指令后,操作數(shù)存放的的理地址為10506H,指令執(zhí)行后的堆棧指針寄存器SP的內(nèi)容0006H。22.8086微機(jī)中寄存器中存放的是當(dāng)前棧區(qū)的的基地址。堆棧區(qū)的存取原則為。在8086/8088系統(tǒng)中,棧區(qū)最大容量為。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,則這個(gè)棧區(qū)的物理地址范圍為,CPU執(zhí)行PUSHAX指令后,棧頂?shù)刂窞?,該棧頂單元存放的?nèi)容為。解答:8086微機(jī)中SS寄存器中存放的是當(dāng)前棧區(qū)的的基地址。堆棧區(qū)的存取原則為先進(jìn)后出。在8086/8088系統(tǒng)中,棧區(qū)最大容量為64KB。若CS=2000H,DS=2500H,SS=3000H,ES=3500H,SP=0100H,AX=2FA6H,則這個(gè)棧區(qū)的物理地址范圍為30000H~30100H,CPU執(zhí)行PUSHAX指令后,棧頂?shù)刂窞?00FEH,該棧頂單元存放的內(nèi)容為A6H。23.在8086系統(tǒng)中,已知當(dāng)前(SS)=2360H,(SP)=0800H,該堆棧段在存儲(chǔ)器中的物理地址范圍為_(kāi)_________。若往堆棧中存入20個(gè)字?jǐn)?shù)據(jù),那么SP的內(nèi)容為_(kāi)_________,其物理地址為_(kāi)________。解答:在8086系統(tǒng)中,已知當(dāng)前(SS)=2360H,(SP)=0800H,該堆棧段在存儲(chǔ)器中的物理地址范圍為23600H~23E00H。若往堆棧中存入20個(gè)字?jǐn)?shù)據(jù),那么SP的內(nèi)容為07D8H,其物理地址為23DD8H。24.8086系統(tǒng)中一個(gè)基本的總線周期由個(gè)時(shí)鐘周期組成,主頻若為30MHz,一個(gè)時(shí)鐘周期為,一個(gè)基本的總線周期為秒。解答:8086系統(tǒng)中一個(gè)基本的總線周期由4個(gè)時(shí)鐘周期組成,主頻若為30MHz,一個(gè)時(shí)鐘周期為0.0333s,一個(gè)基本的總線周期為0.1333s。25.當(dāng)存儲(chǔ)器的讀出時(shí)間大于CPU所要求的時(shí)間時(shí),為了保證CPU與存儲(chǔ)器的周期配合,就要利用信號(hào),使CPU插入一個(gè)狀態(tài)。解答:當(dāng)存儲(chǔ)器的讀出時(shí)間大于CPU所要求的時(shí)間時(shí),為了保證CPU與存儲(chǔ)器的周期配合,就要利用READY信號(hào),使CPU插入一個(gè)Tw狀態(tài)。27.8086CPU運(yùn)用其,AD0兩個(gè)引用配合,執(zhí)行讀/寫(xiě)操作,若=1,A0=0,其執(zhí)行相應(yīng)的操作為若=0,A0=1,其執(zhí)行相應(yīng)的操作為。解答::8086CPU運(yùn)用其,AD0兩個(gè)引用配合,執(zhí)行讀/寫(xiě)操作,若=1,A0=0,其執(zhí)行相應(yīng)的操作為從偶地址單元讀/寫(xiě)一個(gè)字節(jié)。若=0,A0=1,其執(zhí)行相應(yīng)的操作為從奇地址單元讀/寫(xiě)一個(gè)字節(jié)。28.8086向內(nèi)存地址1200BH寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)時(shí),需要一個(gè)總線周期,在該總線周期的T1狀態(tài),為,A0為。解答:8086向內(nèi)存地址1200BH寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)時(shí),需要一個(gè)總線周期,在該總線周期的T1狀態(tài),為0,A0為1。29.8086CPU的存儲(chǔ)器分為奇地址庫(kù)和偶地址庫(kù)兩個(gè)存儲(chǔ)體,對(duì)于奇地址庫(kù)選擇信號(hào)是,對(duì)于偶地址庫(kù)的選擇信號(hào)是,對(duì)于每個(gè)存儲(chǔ)體內(nèi)存儲(chǔ)單元的選擇信號(hào)是。解答:8086CPU的存儲(chǔ)器分為奇地址庫(kù)和偶地址庫(kù)兩個(gè)存儲(chǔ)體,對(duì)于奇地址庫(kù)選擇信號(hào)是,對(duì)于偶地址庫(kù)的選擇信號(hào)是A0,對(duì)于每個(gè)存儲(chǔ)體內(nèi)存儲(chǔ)單元的選擇信號(hào)是READY。30.8086向存儲(chǔ)器的奇地址寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)時(shí),需要一個(gè)總線周期,在該總線周期的第一個(gè)時(shí)鐘周期中,為,A0為,將數(shù)據(jù)送到。解答:8086向存儲(chǔ)器的奇地址寫(xiě)一個(gè)字節(jié)的數(shù)據(jù)時(shí),需要一個(gè)總線周期,在該總線周期的第一個(gè)時(shí)鐘周期中,為0,A0為1,將數(shù)據(jù)送到AD15~AD8。31.8086CPU上電復(fù)位后,CS=,IP=,DS=,標(biāo)志寄存器F=。解答:所以本題的正確答案為:8086CPU上電復(fù)位后,CS=0FFFFH,IP=0,DS=0,標(biāo)志寄存器F=0。32.8086/8088CPU復(fù)位后,CS的值為H,IP的值為H。解答:8086/8088CPU在復(fù)位啟動(dòng)后,指令指針寄存器IP=0、代碼段寄存器CS=0FFFFH。33.決定8086/8088CPU工作模式的引腳是。解答:決定8086/8088CPU工作模式的引腳是MN/。選擇題1.為了提高程序的執(zhí)行速度,充分使用總線,8086微處理器被設(shè)計(jì)為兩個(gè)獨(dú)立的功能部件:___C_______。A、運(yùn)算器和控制器B、運(yùn)算器和寄存器組C、總線接口部件BIU和執(zhí)行部件EUD、總線接口部件BIU和控制器2.運(yùn)算器的主要功能是進(jìn)行___C_______。A、邏輯運(yùn)算

B、算術(shù)運(yùn)算C、邏輯運(yùn)算和算術(shù)運(yùn)算

D、以上均不對(duì)3.指令寄存器是___A_______A、IPB、SPC、BPD、PSW4.CPU內(nèi)的指令指針寄存器IP的作用是:CA、用于存放某特定程序的地址指針。B、用于存放某條指令的地址。C、總是跟蹤記憶當(dāng)前要執(zhí)行的指令的地址。D、CPU總是根據(jù)IP所指明的物理地址中取指令執(zhí)行,與CS無(wú)關(guān)。5.8086/8088CPU內(nèi)部有一個(gè)始終指示下條指令偏移地址的部件是(C)A、SPB、CSC、IPD、BP6.在補(bǔ)碼運(yùn)算時(shí),如果運(yùn)算結(jié)果為負(fù),則標(biāo)志寄存器中為1的標(biāo)志位是(B)。A、CFB、SFC、PFD、IF7.控制字符串操作指令步進(jìn)方向的標(biāo)志是(B)。A、CFB、DFC、ZFD、OF8.微型計(jì)算機(jī)中各部件之間是用(D)連接起來(lái)的.A.ABB.CDC.DBD.系統(tǒng)總線9.8086CPU外部的地址總線和數(shù)據(jù)總線分別為(B)位。A、16,16;B、20,16;C、16,8;D、20,2010.I/O設(shè)備與CPU之間交換信息,其狀態(tài)信息是通過(guò)(C)總線傳送給CPU的A.地址B.?dāng)?shù)據(jù)C.控制D.三者均可11.用8088CPU組成的PC機(jī)數(shù)據(jù)線是(C)A.8條單向線B.16條單向線C.8條雙向線D.16條雙向線12.若總線地址為26位,則最大地址空間為(C)A、6MB、24MC、64MD、128M13.下列哪種表述正確(B)A、有效地址確定內(nèi)存單元在整個(gè)尋址范圍內(nèi)的位置。B、物理地址確定內(nèi)存單元在整個(gè)尋址范圍內(nèi)的位置。C、偏移地址確定內(nèi)存單元在整個(gè)尋址范圍內(nèi)的位置。D、有效地址就是物理地址。14.DS=3000H,SS=3100H,CS==3500H,IP==0100H,SP=0050H,BX=0300H,則當(dāng)前代碼段的物理地址為(D)。A、30300HB、31050HC、35300HD、35100H15.當(dāng)8086CPU采樣到READY=0,則CPU將(B)。A.執(zhí)行停機(jī)指令B.插入等待周期C.執(zhí)行空操作D.重新發(fā)送地址16.8086總線周期是在(C)之后插入Tw。A、T1B、T2C、T3D、T417.因?yàn)?086CPU的字?jǐn)?shù)據(jù)既可以存放在內(nèi)存的偶地址,也可以安排在奇地址單元,所以其堆棧指針SP(C)。A、最好是指向偶地址單元;B、可以指向任何地址單元;C、只能指向偶地址單元;D、只能指向奇地址單元。18.8088CPU在進(jìn)行對(duì)外設(shè)輸出操作時(shí),控制信號(hào)/IO和DT/必須是D。A、0,0B、0,1C、1,0D、1,119.8086CPU響應(yīng)HOLD請(qǐng)求是在(D)A、每一指令周期后B、每一個(gè)機(jī)器周期后C、可以響應(yīng)HOLD請(qǐng)求的每一機(jī)器周期后D、在總線周期的T4狀態(tài)或空閑狀態(tài)TI之后的下一個(gè)時(shí)鐘周期20.當(dāng)8086/8088CPU響應(yīng)DMA設(shè)備的HOLD請(qǐng)求后,CPU將(D)。A、轉(zhuǎn)入特殊中斷服務(wù)程序B、進(jìn)入等待周期C、接受外部數(shù)據(jù)D、放棄對(duì)總線的控制權(quán)21.選擇題:請(qǐng)將下列左邊的項(xiàng)與右邊的解釋聯(lián)系起來(lái)。(1)CPU()A、保存當(dāng)前的棧頂?shù)刂返募拇嫫?。?)存儲(chǔ)器()B、指示下一條要執(zhí)行的指令的地址。(3)堆棧()C、存儲(chǔ)程序、數(shù)據(jù)等信息的記憶裝置,PC機(jī)有ROM和RAM兩種。(4)IP()D、以后進(jìn)先出方式工作的存儲(chǔ)空間。(5)SP()E、惟一代表存儲(chǔ)空間中每個(gè)字節(jié)單元的地址。(6)狀態(tài)標(biāo)志()F、保存各邏輯段起始地址的寄存器,PC機(jī)有四個(gè):CS、DS、SS、ES。(7)控制標(biāo)志()G、控制操作的標(biāo)志,PC機(jī)有三位:DF、IF、TF。(8)段寄存器()H、記錄指令操作結(jié)果的標(biāo)志,PC機(jī)有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并執(zhí)行指令的部件,由ALU和寄存器組組成。解答:本題的正確答案為:(1)CPU()A、保存當(dāng)前的棧頂?shù)刂返募拇嫫鳌#?)存儲(chǔ)器()B、指示下一條要執(zhí)行的指令的地址。(3)堆棧()C、存儲(chǔ)程序、數(shù)據(jù)等信息的記憶裝置,PC機(jī)有ROM和RAM兩種。(4)IP()D、以后進(jìn)先出方式工作的存儲(chǔ)空間。(5)SP()E、惟一代表存儲(chǔ)空間中每個(gè)字節(jié)單元的地址。(6)狀態(tài)標(biāo)志()F、保存各邏輯段起始地址的寄存器,PC機(jī)有四個(gè):CS、DS、SS、ES。(7)控制標(biāo)志()G、控制操作的標(biāo)志,PC機(jī)有三位:DF、IF、TF。(8)段寄存器()H、記錄指令操作結(jié)果的標(biāo)志,PC機(jī)有6位:OF、SF、ZF、AF、CF、PF。(9)物理地址()I、分析、控制并執(zhí)行指令的部件,由ALU和寄存器組組成。三.問(wèn)答題8086/8088CPU的地址總線有多少位?其尋址范圍是多少?答:8086/8088CPU的地址總線共20位,最大可尋址1MB空間。什么是總線?一般微計(jì)算機(jī)中有哪些總線?答:總線是微機(jī)系統(tǒng)之間、系統(tǒng)各模塊之間或模塊內(nèi)部以及芯片內(nèi)部各部分之間用來(lái)傳送信息的公共信息通路,是計(jì)算機(jī)傳送信息的一組導(dǎo)線,它將各部件連接成一個(gè)整體??偩€有多種分類方法,按總線在微機(jī)中所處位置的不同(或按總線上信息傳送范圍的不同)來(lái)看,微機(jī)中包括片內(nèi)總線、片間總線、系統(tǒng)內(nèi)總線和系統(tǒng)外總線四級(jí)總線。8086/8088CPU分為哪兩個(gè)部分?各部分主要由什么組成?答:8086/8088CPU分為總線接口部件(BIU)和執(zhí)行部件(EU)兩個(gè)部分。其中:BIU包括:4個(gè)16位的段地址寄存器(CS、DS、SS、ES);1個(gè)16位的指令指針寄存器IP;1個(gè)20位的地址加法器;指令隊(duì)列寄存器;內(nèi)部寄存器;輸入輸出總線控制邏輯;EU包括:4個(gè)16位的通用數(shù)據(jù)寄存器(AX、BX、CX、DX);4個(gè)16位的專用寄存器(BP、SP、SI、DI);1個(gè)16位的標(biāo)志寄存器FR;什么叫指令隊(duì)列?8086/8088CPU中指令隊(duì)列有什么作用?其長(zhǎng)度分別是多少字節(jié)?答:指令隊(duì)列是用來(lái)暫存指令的一組寄存器,按“先進(jìn)先出”原則讀寫(xiě)。在8086/8088CPU中,只要指令隊(duì)列未填滿,BIU就從外部存儲(chǔ)器取指令并放入指令隊(duì)列中;另一方面,只要指令隊(duì)列中不空,EU就可將指令隊(duì)列中已有的指令取出執(zhí)行,這樣BIU和EU按并行方式重疊操作,大大提高了CPU的利用率,也降低了CPU對(duì)存儲(chǔ)器、I/O端口存取速度的要求。8086CPU中的指令隊(duì)列緩沖器長(zhǎng)度為6個(gè)字節(jié),而8088CPU只有4個(gè)字節(jié)。8086/8088CPU中有幾個(gè)通用寄存器?有幾個(gè)變址寄存器?有幾個(gè)指針寄存器?通常哪幾個(gè)寄存器亦可作為地址寄存器使用?答:8086/8088CPU中共有:8個(gè)16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI;2個(gè)變址寄存器SI、DI;2個(gè)指針寄存器BP、SP;其中BX、BP、SI、DI亦可作地址寄存器。8086/8088CPU中有哪些標(biāo)志位?它們的含義和作用如何?答:8086/8088CPU中共有9個(gè)標(biāo)志位,其中DF、IF和TF為控制標(biāo)志位,其余6個(gè)為狀態(tài)標(biāo)志位。它們的含義和作用如下所示:CF(CarryFlag)進(jìn)位標(biāo)志:若算術(shù)運(yùn)算的結(jié)果產(chǎn)生了進(jìn)位或借位(對(duì)字節(jié)操作最高位是D7位;對(duì)字操作最高位是D15位),則CF=1,否則CF=0。PF(Parity/EvenFlag)奇偶標(biāo)志:如果運(yùn)算結(jié)果中含有偶數(shù)個(gè)1,則PF=1,否則PF=0。此標(biāo)志位主要用于數(shù)據(jù)通信中,檢測(cè)數(shù)據(jù)傳送有無(wú)出錯(cuò)。AF(AuxiliaryCarryFlag)輔助進(jìn)位標(biāo)志:用于反映一個(gè)字節(jié)(字的低字節(jié))的低4位向高4位有無(wú)進(jìn)位(借位)的情況,有進(jìn)(借)位時(shí),AF=1,否則AF=0。這個(gè)標(biāo)志位主要用于實(shí)現(xiàn)BCD碼算術(shù)運(yùn)算所需的二-十進(jìn)制調(diào)整之用。ZF(ZeroFlag)零標(biāo)志:若運(yùn)算結(jié)果為0,此標(biāo)志為1;否則ZF=0。SF(SignFlag)符號(hào)標(biāo)志:因?yàn)檠a(bǔ)碼運(yùn)算的最高位是符號(hào)位,所以它和運(yùn)算結(jié)果的最高位(字節(jié)操作是D7位,字操作是D15位)狀態(tài)相同。當(dāng)運(yùn)算結(jié)果為負(fù)時(shí),SF=1;否則SF=0。OF(OverflowFlag)溢出標(biāo)志:在帶符號(hào)數(shù)的加或減運(yùn)算中結(jié)果超出8位或16位符號(hào)數(shù)所能表示的數(shù)值范圍(-128~127或-32768~+32767)時(shí),產(chǎn)生溢出使OF=1,否則OF=0。DF(DirectionFlag)方向標(biāo)志位:此標(biāo)志位用以控制串操作指令地址指針的步進(jìn)方向。每執(zhí)行一條串操作指令,對(duì)地址要進(jìn)行一次調(diào)整(對(duì)字節(jié)操作為加1或減1,對(duì)字操作為加2或減2)。方向標(biāo)志DF決定地址是增量還是減量。若DF=1,串地址為減量;DF=0,則為增量。IF(InterruptEnableFlag)中斷允許標(biāo)志位:也稱為開(kāi)中斷標(biāo)志位。若使IF=1,則CPU允許接受外部來(lái)的可屏蔽中斷源發(fā)出的中斷請(qǐng)求;若使IF=0,則表示CPU不響應(yīng)此中所請(qǐng)求。IF對(duì)非屏蔽中斷及CPU內(nèi)部中斷請(qǐng)求均不起作用。TF(TrapFlag)陷阱標(biāo)志位:也稱為跟蹤標(biāo)志位。若TF=1,則CPU處于單步執(zhí)行指令的工作方式。在這種工作方式下,CPU每執(zhí)行完一條指令就自動(dòng)地產(chǎn)生一次類型為1的內(nèi)部中斷,可以借此檢查這條指令的執(zhí)行情況。例1:1278H+3469H答:CF=0AF=1ZF=0SF=0OF=0PF=1例2:54E3H-27A0H答:CF=0AF=0ZF=0SF=0OF=0PF=0例3:3881H+3597H答:CF=0AF=0ZF=0SF=0OF=0PF=1例4:01E3H-01E3H答:CF=0AF=0ZF=1SF=0 OF=0PF=1什么是堆棧?它有什么用途?堆棧指針的作用是什么?舉例說(shuō)明堆棧的操作。答:堆棧是一個(gè)按照后進(jìn)先出(LIFO)的原則存取數(shù)據(jù)的存儲(chǔ)區(qū)域。堆棧的作用是為了在調(diào)用子程序(或轉(zhuǎn)向中斷服務(wù)程序)時(shí),把斷點(diǎn)及有關(guān)的寄存器、標(biāo)志位及時(shí)正確地保存下來(lái),并保證逐次正確返回。利用堆棧指針SP可以實(shí)現(xiàn)對(duì)棧區(qū)的自動(dòng)管理。例如:要把AX寄存器中的內(nèi)容壓入堆棧,用入棧指令PUSHAX(設(shè)SP原值為1000H),其操作過(guò)程如下所示:第一步:先把SP-l→SP,然后把AH(高位字節(jié))送入SP所指單元(即SP=1FFFH);第二步:再次使SP-1→SP,把AL(低位字節(jié))送至SP所指單元(此時(shí)SP=1FFEH);數(shù)據(jù)出棧操作與入棧過(guò)程正相反:彈出時(shí),先把AL內(nèi)容彈出,然后修改SP+1→SP;再把AH內(nèi)容彈出,再修改SP+1→SP。對(duì)于由8086/8088CPU組成的系統(tǒng),堆棧的位置如何確立?堆棧的首址(即SS中的值)是不是棧底?為什么?答:8086/8088系統(tǒng)中堆棧的位置由SS和SP初始化后確立:其中(SS)*16決定了堆棧段起始單元的地址,即堆棧段首址;(SS)*16+(SP初值)決定了堆棧段最后一個(gè)單元的地址,即棧底;(SS)*16+(SP現(xiàn)值)決定了堆棧段當(dāng)前可用單元的地址,即棧頂。顯然,堆棧首址并不是棧低。一般來(lái)說(shuō),在堆棧所在的內(nèi)存區(qū)內(nèi),棧底為高地址端。堆棧初始化后,未壓入數(shù)據(jù)時(shí),棧底與棧頂是重合的。當(dāng)堆棧壓入數(shù)據(jù)后,棧頂?shù)刂房偸切∮跅5椎刂?,位于低地址端。Intel8086與8088有何區(qū)別?答:8086與8088的區(qū)別主要表現(xiàn)在以下幾個(gè)方面:第一、8086的指令隊(duì)列可以容納6個(gè)字節(jié),每個(gè)總線周期在存儲(chǔ)器中取出2個(gè)字節(jié)指令代碼填入隊(duì)列。而8088只能容納4個(gè)字節(jié),且每個(gè)總線周期只能取出1個(gè)字節(jié)指令代碼。第二、8086外部數(shù)據(jù)總線寬度為16位,8088外部數(shù)據(jù)總線寬度只有8位。注意:8086和8088外部數(shù)據(jù)總線的寬度不同將導(dǎo)致擴(kuò)展主存儲(chǔ)器及輸入/輸出接口時(shí)系統(tǒng)地址線和數(shù)據(jù)線連接方式的不同。第三、其他不同的引腳定義:(1)AD15~AD0,在8086中為地址/數(shù)據(jù)復(fù)用,而在8088中AD15~AD8改為A15~A8只作地址線用;(2)34、28號(hào)引腳定義不同。試指出下列運(yùn)算后的各個(gè)狀態(tài)標(biāo)志,并說(shuō)明進(jìn)位標(biāo)志和溢出標(biāo)志的區(qū)別:其中,進(jìn)位標(biāo)志CF用于判別無(wú)符號(hào)數(shù)運(yùn)算是否超出數(shù)的表示范圍,而溢出標(biāo)志OF用于判別帶符號(hào)數(shù)運(yùn)算是否超出數(shù)的表示范圍。奇偶標(biāo)志PF只能判斷結(jié)果低8位中“1”的個(gè)數(shù)為奇數(shù)還是偶數(shù)。什么是邏輯地址?什么是物理地址?它們之間有什么聯(lián)系?各用在何處?答:邏輯地址由兩個(gè)16位的部分即段基址和偏移量組成,一般在程序中出現(xiàn)的地址都表示為邏輯地址形式;物理地址是一個(gè)20位的地址,它是唯一能代表存儲(chǔ)空間每個(gè)字節(jié)單元的地址,一般只出現(xiàn)在地址總線上。由于8086/8088CPU中的寄存器只有16位長(zhǎng),所以程序不能直接存放20位的物理地址,而必須借助邏輯地址,即用兩個(gè)16位的寄存器來(lái)表示物理地址。他們之間的關(guān)系是:物理地址=段基址*16+偏移量;另外,一個(gè)物理地址可對(duì)應(yīng)多個(gè)邏輯地址。什么是段基值?什么是位移量?它們之間有何聯(lián)系?答:段基址即段起始地址,它的高16位地址存放在段寄存器中,稱之為段基值(低4位一般為0)。存儲(chǔ)器單元所在的位置距離段起始地址的偏移量稱之為位移量。程序中一個(gè)存儲(chǔ)單元的實(shí)際地址(即物理地址)是由這兩部分共同表示的。若CS為0A000H,試說(shuō)明現(xiàn)行代碼段可尋址物理空間的范圍。答:因?yàn)?086系統(tǒng)中可尋址的最大邏輯段長(zhǎng)度為64K,所以當(dāng)CS為0A000H,即段基址為CS*16=0A0000H時(shí),現(xiàn)行代碼段可尋址物理空間的范圍為:0A0000H~0AFFFFH。設(shè)現(xiàn)行數(shù)據(jù)段位于存儲(chǔ)器0B0000H~0BFFFFH單元,DS段寄存器內(nèi)容為多少?答:DS段寄存器內(nèi)容為0B000H。8086/8088CPU使用的存儲(chǔ)器為什么要分段?怎么分段?答:在8086/8088CPU中,ALU的運(yùn)算是16位的,有關(guān)的地址寄存器如SP、IP以及BP、SI、DI等都是16位的,因而對(duì)地址的運(yùn)算也只能是16位。也就是說(shuō)對(duì)8086/8088而言,各種尋址方式下尋找操作數(shù)的范圍被限制在64KB以內(nèi)。而8086/8088有20條地址線,它的直接尋址能力為1MB。這就產(chǎn)生了一個(gè)矛盾,即16位的地址寄存器如何去尋址20位的存儲(chǔ)器物理地址。解決這個(gè)問(wèn)題是靠存儲(chǔ)器分段實(shí)現(xiàn)的:將整個(gè)1MB的內(nèi)存儲(chǔ)器以64KB為單位分為若干段。尋址一個(gè)具體物理地址時(shí),必須要由一個(gè)段地址(基地址)左移4位(即乘16)再加上由SP(或IP、BP、SI、DI)等寄存器之值表示的、可由CPU處理的16位偏移量來(lái)形成實(shí)際的20位物理地址;其中段地址(或基地址)是由8086/8088中的段寄存器形成的。

第3章匯編語(yǔ)言一.填空題1.指令MOV[BX+SI],AL中的目的操作數(shù)使用______段寄存器,屬于______尋址方式。解答:指令MOV[BX+SI],AL中的目的操作數(shù)使用___DS___段寄存器,屬于__基址變址____尋址方式。2.指令MOVBX,NUM[SI]的源操作數(shù)使用的是______尋址方式,SUBAX,[BX+SI]使用的是______尋址方式。解答:指令MOVBX,NUM[SI]源操作數(shù)使用了變址寄存器和一個(gè)位移量,因此是變址尋址方式。指令SUBAX,[BX+SI]中源操作數(shù)指定的一個(gè)基址寄存器BX和一變址寄存器SI,因此屬于基址變址尋址方式。3.指令LEABX,[BP+SI]的源操作數(shù)位于,執(zhí)行后BX的內(nèi)容是。解答:指令LEABX,[BP+SI]的源操作數(shù)位于堆棧段,執(zhí)行后BX的內(nèi)容是BP和SI的內(nèi)容之和。4.堆棧指針SP的初值為2000H,AX=3000H,BX=5000H,CX=1000H,問(wèn)(1)執(zhí)行PUSHAX,PUSHBX后,SP=。(2)再執(zhí)行PUSHCX,POPBX,POPAX后,……③1FFAH00H10H②1FFCH④00H50H①1FFEH⑤00H30H2000H……SP=AX=,BX=AXBX解答:(1)執(zhí)行AXBXSP-2=1FFEH→SP,指針在位置1處,棧頂為AX的內(nèi)容執(zhí)行PUSHBXSP-2=1FFCH→SP,指針在位置2處,棧頂為BX的內(nèi)容(2)再執(zhí)行PUSHCX,POPBX,POPAX后,執(zhí)行PUSHCXSP-2=1FFAH→SP,指針在位置3處,棧頂為CX的內(nèi)容執(zhí)行POPBX將棧頂內(nèi)容1000H彈出到BX中,SP+2=1FFCH→SP,指針在位置4處,BX=1000H執(zhí)行POPAX將棧頂內(nèi)容5000H彈出到AX中,SP+2=1FFEH→SP,指針在位置5處,AX=5000H本題的正確答案為:(1)執(zhí)行PUSHAX,PUSHBX后,SP=1FFCH。(2)再執(zhí)行PUSHCX,POPBX,POPAX后,SP=1FFEHAX=5000H,BX=1000H5.若(AX)=7531H,(BX)=42DAH,則下列指令段SAHFPUSHBXPOPF指令執(zhí)行完畢后(AX)=,(SF,ZF,CF,OF)=(,,,)。解答:指令執(zhí)行完畢后(AX)=7531H,(SF,ZF,CF,OF)=(1,1,0,0)6.已知AL=2EH,BL=6CH,執(zhí)行指令A(yù)DDAL,BL之后,AL=,BL=,ZF=AF=OF=PF=CF=。解答:已知AL=2EH,BL=6CH,執(zhí)行指令A(yù)DDAL,BL之后,AL=9AH,BL=6CH,ZF=0AF=1OF=1PF=1CF=0。7.對(duì)兩個(gè)無(wú)符號(hào)8位二進(jìn)制數(shù)進(jìn)行加法運(yùn)算后,結(jié)果為0EH,且標(biāo)志位CF=1,OF=1,SF=0,其結(jié)果應(yīng)為十進(jìn)制數(shù)。解答:CPU對(duì)兩個(gè)無(wú)符號(hào)8位二進(jìn)制數(shù)進(jìn)行加法運(yùn)算后,結(jié)果為0EH,且標(biāo)志位CF=1,OF=1,SF=0,其結(jié)果應(yīng)為十進(jìn)制數(shù)270。8.設(shè)(AL)=10100000B,則執(zhí)行NEGAL后,(AL)=,設(shè)(AL)=10000000B,則執(zhí)行NEGAL后,(AL)=。解答:基址變址尋址在計(jì)算機(jī)中的減法運(yùn)算可以將減數(shù)求補(bǔ),(AL)=10100000B是一個(gè)負(fù)數(shù),求它的真值,就對(duì)其求補(bǔ)(AL)=10100000B=-1100000B=-60H執(zhí)行NEGAL后,(AL)=01100000B=60H9.已知:(AL)=7AH,題(1),(2)相互獨(dú)立,求AL的值。(1)SUBAL,20H(AL)=()(2)CMPAL,20H(AL)=()解答:(1)SUBAL,20H這條是減法指令,7AH-20H=5AH,將結(jié)果回送到AL中因此(AL)=5AH(2)CMPAL,20H這是比較指令,將目的操作數(shù)與源操作數(shù)相減,但不送回結(jié)果,只根據(jù)結(jié)果置標(biāo)志位,即(DST)-(SRC)。指令執(zhí)行后,兩個(gè)操作數(shù)均不發(fā)生變化。因此(AL)=7AH10.設(shè)DS=1000H、ES=2000H、SS=3000H、SI=00C0H、DI=0170H、BX=01B0H、AX=5657H,(10370H)=3AH,(10371H)=67H數(shù)據(jù)段中的變量NUM的偏移地址值為0050H。①求下條指令源操作數(shù)的物理地址為ADDAX,NUM[BX][DI]②指令執(zhí)行完成后OF=,CF=解答:①ADDAX,NUM[BX][DI]的源操作數(shù)是相對(duì)的基址變址尋址,處于數(shù)據(jù)段中,有效地址為:EA=0050H+01B0H+0170H=0370HPA=DS×10H+EA=10370H源操作數(shù)為10370H單元和10371H單元的內(nèi)容=673AH②指令執(zhí)行完成后,AX=673AH+5657H=0BD91H,OF=1(有溢出),CF=0(無(wú)進(jìn)位)11.將DL中的內(nèi)容循環(huán)右移,已知移位前CL=9,要使其移位前后內(nèi)容保持不變,應(yīng)選用的指令是。解答:將DL中的內(nèi)容循環(huán)右移,已知移位前CL=9,要使其移位前后內(nèi)容保持不變,應(yīng)選用的指令是RCL或RCR。12.串操作指令的兩個(gè)隱含的指針寄存器是。解答:串操作指令的兩個(gè)隱含的指針寄存器是SI和DI寄存器。13.指令REPMOVSB重復(fù)執(zhí)行的條件為。解答:指令REPMOVSB重復(fù)執(zhí)行的條件為CX≠0。14.串操作指令在內(nèi)存中可以實(shí)現(xiàn)信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆蓋,應(yīng)設(shè)置。解答:串操作指令在內(nèi)存中可以實(shí)現(xiàn)信息串的搬家,如果DS=ES且SI>DI,不能引起信息串的覆蓋,應(yīng)設(shè)置DF=0。15.將下列程序補(bǔ)充完整:程序的功能是在數(shù)據(jù)段ADDR1地址處有200個(gè)字節(jié),要傳送到數(shù)據(jù)段地址ADDR2處。MOVAX,SEGADDR1MOVDS,AXMOVES,MOVSI,MOVDI,OFFSETADDR2MOV,200CLDREP解答:在存儲(chǔ)器中實(shí)現(xiàn)信息塊的搬家,使用重復(fù)前綴,必須先給CX賦值重復(fù)的次數(shù)。如果信息塊的長(zhǎng)度是多少個(gè)字節(jié),用MOVSB傳送時(shí),則將此字節(jié)數(shù)賦給CX作重復(fù)次數(shù);若用MOVSW傳送時(shí),則將此字節(jié)數(shù)÷2賦給CX作重復(fù)次數(shù)。程序要求200個(gè)字節(jié)搬移,指令中使用的重復(fù)次數(shù)為200,由此使用REPMOVSB指令,完整的程序如下:MOVAX,SEGADDR1MOVDS,AXMOVES,AXMOVSI,OFFSETADDR1MOVDI,OFFSETADDR2MOVCX,200CLDREPMOVSB16.若指令JMPADDR1的機(jī)器碼為E93512H,此指令的CS=1500H,IP=2400H,則目標(biāo)ADDR1與本指令之間的位移量為,執(zhí)行本指令時(shí),IP的當(dāng)前值為,本指令執(zhí)行后,CPU轉(zhuǎn)移至CS:IP為。解答:JMP指令是無(wú)條件轉(zhuǎn)移指令,JMPADDR1的機(jī)器碼為E93512H,這是三字節(jié)指令,E9H表示操作碼,8086系統(tǒng)中,高地址存放的是高字節(jié),低地址則是低字節(jié),因此1235H是操作數(shù),表示本指令與ADDR1之間的位移量為1235H。該指令是三字節(jié)指令,執(zhí)行指令時(shí),當(dāng)前IP=2400H+3=2403H。由目標(biāo)偏移地址=當(dāng)前IP值+指令中的位移量=2403H+1235H=3638H。因此,執(zhí)行該指令后,CPU轉(zhuǎn)移至1500H:3638H處。本題的正確答案為:若指令JMPADDR1的機(jī)器碼為E93512H,此指令的CS=1500H,IP=2400H,則目標(biāo)ADDR1與本指令之間的位移量為1235H,執(zhí)行本指令時(shí),IP的當(dāng)前值為2403H,本指令執(zhí)行后,CPU轉(zhuǎn)移至CS:IP為1500H:3638H。17.閱讀程序并補(bǔ)充完整:以TAB為首地址的100個(gè)ASCII碼字符添加奇偶校驗(yàn)位(bit7),使每個(gè)字節(jié)中的“1”的個(gè)數(shù)為偶數(shù),再順序輸出到10H號(hào)端口。MOVSI,OFFSETTABMOVCX,①L2:MOVAL,[SI]ANDAL,②③L1ORAL,④L1:OUT10H,ALINC⑤LOOPL2解答:傳送類指令不影響標(biāo)志位,可以使用ANDAL,AL或ANDAL,0FFH指令,它對(duì)AL的內(nèi)容無(wú)影響,但影響標(biāo)志位。為使每個(gè)字節(jié)中的“1”的個(gè)數(shù)為偶數(shù),,用使用進(jìn)行JP條件判斷,如果PF=1,則轉(zhuǎn)到L2出,否則在最高位加1,可湊成偶數(shù)。完整的程序如下:MOVSI,OFFSETTABMOVCX,100L2:MOVAL,[SI]ANDAL,0FFH或ALJPL1ORAL,80HL1:OUT10,HALINCSILOOPL218.設(shè)AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后,寫(xiě)出兩條能引起轉(zhuǎn)移的條件轉(zhuǎn)移指令①、②。解答:AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后CF=1(有借位),OF=0(沒(méi)有溢出),ZF=0(結(jié)果不為0),SF=1(結(jié)果為負(fù)數(shù),最高位為1),PF=0(第8位有1個(gè)1)。因此能引起只要的條件指令有JC、JNO、JNZ等。本題的正確答案為:設(shè)AX=8000H,BX=0FFFFH,執(zhí)行CMPAX,BX后,寫(xiě)出兩條能引起轉(zhuǎn)移的條件轉(zhuǎn)移指令JC、JNZ。19.匯編語(yǔ)言的調(diào)試過(guò)程如下:建立______以為擴(kuò)展名的源文件;生成以______為擴(kuò)展名的目標(biāo)文件;生成以______為擴(kuò)展名的可執(zhí)行文件;使用DYBUG調(diào)試程序,調(diào)試可執(zhí)行目標(biāo)程序。解答:匯編語(yǔ)言的調(diào)試過(guò)程如下:建立.ASM以為擴(kuò)展名的源文件;生成以.OBJ為擴(kuò)展名的目標(biāo)文件;生成以.EXE為擴(kuò)展名的可執(zhí)行文件;使用DYBUG調(diào)試程序,調(diào)試可執(zhí)行目標(biāo)程序。20.宏匯編語(yǔ)言程序被匯編時(shí),_____語(yǔ)句產(chǎn)生代碼指令,______語(yǔ)句不產(chǎn)生代碼指令,______語(yǔ)句可能產(chǎn)生也可能不產(chǎn)生代碼指令。解答:宏匯編語(yǔ)言程序被匯編時(shí),指令性語(yǔ)句產(chǎn)生代碼指令,偽指令語(yǔ)句不產(chǎn)生代碼指令,宏指令語(yǔ)句可能產(chǎn)生也可能不產(chǎn)生代碼指令。21.已知VAR1是字變量,指令MOVAX,VAR1的功能是將送到AX中;指令MOVAX,OFFSETVAR1的是將送到AX,其功能和指令A(yù)X,VAR1是相同的。解答:已知VAR1是字變量,指令MOVAX,VAR1的功能是將VAR1的內(nèi)容送到AX中;指令MOVAX,OFFSETVAR1的是將VAR1的偏移量送到AX,其功能和指令LEAAX,VAR1是相同的。22.假設(shè)VDT1和VDT2為字變量,TAL1和TAL2為標(biāo)號(hào),說(shuō)明下列指令是否正確,說(shuō)明其尋址方式;若有錯(cuò)誤指出錯(cuò)誤所在。(1)JMPVDT1(2)JMPNEARTAL1(3)JNZVDT2(4)JETAL2(5)JMPFARPTRTAL1(6)JMPFAL1[SI]解答:(1)JMPVDT1非法指令,跳轉(zhuǎn)指令應(yīng)為標(biāo)號(hào)不能是變量,VDT1是變量(2)JMPNEARTAL1非法指令,標(biāo)號(hào)的類型屬性指在轉(zhuǎn)移指令中標(biāo)號(hào)可轉(zhuǎn)移的距離,也稱距離屬性。類型NEAR,表示此標(biāo)號(hào)只能實(shí)現(xiàn)本代碼段內(nèi)轉(zhuǎn)移或調(diào)用;類型FAR,表示可以作為其它代碼段中的目標(biāo)地址,實(shí)現(xiàn)段間轉(zhuǎn)移或調(diào)用。使用時(shí),在屬性后加PTR,應(yīng)該改為:JMPNEARPTRTAL1(3)JNZVDT2非法指令,跳轉(zhuǎn)指令應(yīng)為標(biāo)號(hào)不能是變量,VDT2是變量(4)JETAL2合法指令。(5)JMPFARPTRTAL1合法指令(6)JMPFAL1[SI]非法指令,F(xiàn)AL1為標(biāo)號(hào),表示指令語(yǔ)言的符號(hào)地址,SI是源變址寄存器,它存放的是地址。這條指令的錯(cuò)誤之處在于兩個(gè)地址表達(dá)式不能相加。二.選擇題1.尋址方式指出了操作數(shù)的位置,一般來(lái)說(shuō)(D)。A、立即尋址給出了操作數(shù)地址;B、寄存器直接尋址的操作數(shù)在寄存器內(nèi),而指令給出了存儲(chǔ)器;C、直接尋址直接給出了操作數(shù)本身;D、寄存器直接尋址的操作數(shù)包含在寄存器內(nèi)中,由指令指定寄存器的名稱。2.寄存器尋址方式中,操作數(shù)在(A)中。A、通用寄存器B、堆棧C、內(nèi)存單元D、段寄存器3.寄存器間接尋址方式中,操作數(shù)在(C)中。A、通用寄存器B、代碼段C、內(nèi)存單元D、段寄存器4.8088變址尋址方式中,操作數(shù)的物理地址等于(B)A、段寄存器左移四位加上變址寄存器的內(nèi)容;B、段寄存器左移四位加上變址寄存器的內(nèi)容再加給定的偏移量;C、段寄存器左移四位加上變址寄存器的內(nèi)容再加基址寄存器內(nèi)容;D、段寄存器左移四位加上基址寄存器的內(nèi)容再加給定的偏移量;5.下列指令中非法指令是(B)A.MOV[SI+BX],AXB.MOVCL,280C.MOV[0260H],2346HD.MOVBX,[BX]6.下列指令中,正確的是(D)A、MOVAL,1000B、MOV100,ALC、MOVAL,100HD、MOVAL,1007.在指令A(yù)DDAX,00H執(zhí)行后,CPU狀態(tài)標(biāo)志位ZF的取值為(C)a.為0b.為1c.不確定d.沒(méi)有影響8..8086CPU在進(jìn)行無(wú)符號(hào)數(shù)比較時(shí),是根據(jù)(C)標(biāo)志來(lái)判別大小的。A.CF和OFB.CF和SF C.CF和ZFD.OF和ZF9.設(shè)AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分別執(zhí)行后OF,CF的值為(B)。A、OF=1,CF=0B、OF=1,CF=1C、OF=0,CF=0D、OF=0,CF=110.下面指令中影響狀態(tài)標(biāo)志位CF的指令是(D)。A、INCAX;B、DECAX;C、NOTAX;D、NEGAX11.已知AL=A8H,BL=62H,執(zhí)行ANDAL,BL指令后,AL中的數(shù)為(B)A.32B.20HC.00HD.+2012.AX中有一負(fù)數(shù),欲求其絕對(duì)值,若該數(shù)為補(bǔ)碼,則用指令;若該數(shù)為原碼,則用指令。解答:AX中有一負(fù)數(shù),欲求其絕對(duì)值,若該數(shù)為補(bǔ)碼,則用指令NEGAX;若該數(shù)為原碼,則用指令A(yù)NDAX,7FFFH。13.以下可以使寄存器AX和CF同時(shí)清零的指令為(A)A.SUBAX,AXB.XCHGAX,BXC.PUSHAXD.XORAX,BX14.完成將累加器AL清零,并將進(jìn)位標(biāo)志CF清零,下面錯(cuò)誤的指令是(A)。A、MOVAL,00HB、ANDAL,00HC、XORAL,ALD、SUBAL,AL15.假設(shè)AL=3,要使得AL=0CH,應(yīng)執(zhí)行的指令是(C)A、NOTALB、ANDAL,0FHC、XORAL,0FHD、ORAL,0FH16.測(cè)試BL寄存器內(nèi)容是否與數(shù)據(jù)4FH相等,若相等則轉(zhuǎn)NEXT處執(zhí)行,可實(shí)現(xiàn)的方法是(B)。A、TESTBL,4FHJZNEXTB、XORBL,4FHJZNEXTC、ANDBL,4FHJZNEXTD、ORBL,4FHJZNEXT17.下面指令序列測(cè)試BH中的數(shù)是否為奇數(shù),若為奇數(shù)則轉(zhuǎn)移至K1處,橫線處的指令應(yīng)為()。TESTBH,01HK1A、JNEB、JZC、JNPD、JC解答:TESTBH,01H指令執(zhí)行結(jié)束后,如果BH為奇數(shù),其“與”后的結(jié)果都為最低位為1,則ZF=0,那么ZF=0則轉(zhuǎn)移到K1處,使用的指令應(yīng)該為JNZ/JNE。正確答案為A。18.執(zhí)行INTn指令或響應(yīng)中斷時(shí),CPU完成的操作次序是(A)A、FLAGS寄存器(FR)先入棧,其次CS,最后IPB、CS在先,其次IP,最后FR入棧C、FR在先,其后依次是IP,CSD、IP在先,其次CS,最后FR19.用匯編語(yǔ)言編寫(xiě)的源程序,其后綴名為();其可執(zhí)行程序的后綴名為()。A、exeB、objC、asmD、c解答:用匯編語(yǔ)言編寫(xiě)的源程序,其后綴名為(.asm);其可執(zhí)行程序的后綴名為(.exe),選擇C、A。20.下列描述正確的是B。A.匯編語(yǔ)言源程序可發(fā)直接運(yùn)行B.匯編語(yǔ)言屬低級(jí)語(yǔ)言C.匯編語(yǔ)言是匯編語(yǔ)言編寫(xiě)的程序,運(yùn)行速度高,閱讀方便,屬于面向用戶的程序語(yǔ)言D.匯編語(yǔ)言可以在可以移植。21.列偽指令哪些是正確的:CERR1:DW99ERR2DB25×60COUNTEQU20ONEDBONE三.判斷題1.是非判定題:立即數(shù)尋址方式的操作數(shù)是在代碼段中的,因此在執(zhí)行指令的過(guò)程中也要執(zhí)行總線周期。(f)2.8086指令系統(tǒng)尋址方式中,直接尋址直接給出了操作數(shù)本身。(f)3.立即尋址方式的操作數(shù)一定放在代碼段中,而直接尋址方式的操作數(shù)一定放在數(shù)據(jù)段中。(f)4.判斷下列指令是否正確?(1)ADDAL,BL(2)ADDDS,CX(3)ADD〔SI〕,〔BP+100H〕(4)ADD〔BX〕,AX(5)ADDAX,CL解答:(1)ADDAL,BL;合法指令,源操作數(shù)和目的操作數(shù)都是8位寄存器(2)ADDDS,CX;非法指令,目的操作數(shù)不能是段寄存器(3)ADD〔SI〕,〔BP+100H〕;非法指令,源操作數(shù)和目的操作數(shù)都是存儲(chǔ)區(qū)操作數(shù)(4)ADD〔BX〕,AX;合法指令,源操作數(shù)是寄存器,目的操作數(shù)是存儲(chǔ)器操作數(shù)(5)ADDAX,CL;非法指令,源操作數(shù)和目的操作數(shù)類型不匹配5.CPU用指令SUBAX,AX可以是零標(biāo)志位置位,進(jìn)位標(biāo)志清零。(t)6.x與Y進(jìn)行異或運(yùn)算后再與Y的反進(jìn)行異或運(yùn)算,結(jié)果是求x的反。(t)四.編程題1.對(duì)數(shù)據(jù)段中4300H單元內(nèi)的8位帶符號(hào)數(shù)判斷,若為正數(shù),加1放回原單元;為負(fù)數(shù),則減1放回原單元,編寫(xiě)程序。解答:MOVAL,[4300H]ADDAL,0JNSPOSIINCALMOV[4300H],ALJMPEXITPOSI:DECALMOV[4300H],ALEXIT:HLT2.編寫(xiě)程序:給1A000H開(kāi)始的256個(gè)內(nèi)存單元均減去1,若發(fā)現(xiàn)某個(gè)單元減為0則立即退出循環(huán),其后的單元不再減1。解答:1A000H是物理地址,我們可以設(shè)DS=1A00H,偏移地址則為0。程序如下:MOVAX,1A00HMOVDS,AX;給段寄存器DS賦值1A00HMOVDI,0;DI指向內(nèi)存數(shù)據(jù)區(qū)MOVCX,256;共循環(huán)256次GOON:DECBYTEPTR[DI];由DI指向的內(nèi)存單元的內(nèi)容減1INCDI;指針加1,指向下一個(gè)單元CMPBYTEPTR[DI-1],0;上一個(gè)單元的內(nèi)容和0進(jìn)行比較LOOPNZGOON;不為0,則繼續(xù)轉(zhuǎn)向GOON處,同時(shí)CX內(nèi)容自動(dòng)減1HLT;為0,退出循環(huán)3.編程實(shí)現(xiàn)將存儲(chǔ)單元BLOCK中的N個(gè)字節(jié)的數(shù)據(jù)按正數(shù)、負(fù)數(shù)分開(kāi),分別送到兩個(gè)緩沖區(qū)PLUS_DATA和MINUS_DATA。解答:設(shè)置三個(gè)指針,SI指向BLOCK存儲(chǔ)單元,DI指向PLUS_DATA存儲(chǔ)區(qū),BX指向MINUS_DATA存儲(chǔ)區(qū)。在程序中使用串操作指令,設(shè)置傳送方向從低到高即CLD。先從BLOCK中取一個(gè)字節(jié),用測(cè)試指令TESTAL,80H指令測(cè)試其最高位,再用JZ判斷正負(fù),正數(shù)轉(zhuǎn)到PLUS_DATA數(shù)據(jù)區(qū),負(fù)數(shù)轉(zhuǎn)到MINUS_DATA數(shù)據(jù)區(qū)。程序如下:LEASI,BLOCK;S指向內(nèi)存數(shù)據(jù)區(qū)LEADI,PLUS_DATA;DI指向存放正數(shù)的緩沖區(qū)LEABX,MINUS_DATA;BX指向存放負(fù)數(shù)的緩沖區(qū)CLD;由低到高M(jìn)OVCX,N;置循環(huán)次數(shù)AGAIN:LODSB;從DS:SI(內(nèi)存數(shù)據(jù)區(qū))取一個(gè)字節(jié)到AL中TESTAL,80H;測(cè)試AL中的最高位JNZMIUS;若ZF=0,表示最高位為1是負(fù)數(shù),轉(zhuǎn)移到MIUS處理STOSB;為正數(shù),將AL中的內(nèi)容存到ES:DI處,修改指針DIJMPNEXT_N;轉(zhuǎn)下一個(gè)MIUS:XCHGBX,DI;BX與DI交換,是DI指向存負(fù)數(shù)的緩沖區(qū)STOSB;存負(fù)數(shù),同時(shí)修改指針DIXCHGBX,DI;將修改后的指針與BX交換NEXT_N:LOOPAGAIN;未完成,繼續(xù)4.在8000H開(kāi)始的長(zhǎng)度為1000字節(jié)的字符串中查找‘S’,若找到,把其偏移地址記錄在ADDR中,否則ADDR單元置為0FFFFH。分析:考查8086的指令系統(tǒng)解答:在8000H開(kāi)始的長(zhǎng)度為1000字節(jié)的字符串中查找‘S’,可以使用信息串的掃描指令SCASB,將字符‘S’放在AL中,將DI設(shè)置為8000H。MOVDI,8000HMOVCX,1000MOVAL,‘S’MOVADDR,0FFFFHGOON:SCASBLOOPNZGOONJNZDONEDECDIMOVADDR,DIDONE:HLT也可使用帶條件重復(fù)前綴REP指令,前四條指令相同,后續(xù)指令如下:CLDREPNESCASB;CX≠0(沒(méi)查完)和ZF=0(不相等)重復(fù)JNZDONE;若ZF=0,表示沒(méi)有找到,轉(zhuǎn)出DECDI;若ZF=1,則DI指向上個(gè)單元即字符‘S’的偏移地址MOVADDR,DI;將偏移地址送到ADDR單元中DONE:HLT5.編程將BUF單元中的一個(gè)8位數(shù)乘以10,乘積放在ANS單元及其下的一個(gè)單元中(至少用3種方法)。解答:(1)利用乘法指令,這是最直接的方法MOVAL,BUFMOVBL,10MULBLMOVANS,AXHLT(2)一個(gè)數(shù)乘以10就是對(duì)該數(shù)連續(xù)加10次,因此可以利用連續(xù)加法實(shí)現(xiàn)。MOVAL,BUFMOVCX,10MOVAH,0MOVDX,0GOON:ADDDX,AXDECCXJNZGOONMOVANS,DXHLT(3)用左移指令來(lái)實(shí)現(xiàn),因?yàn)樽笠?次就是是乘以2,左移3次是乘以8,那么2+2=10,所以可用移位實(shí)現(xiàn)乘10操作。MOVAL,BUFMOVCL,3SALAL,1;左移1位就是乘以2MOVAH,AL;將乘以2的結(jié)果存放在AH中SALAL,1;再左移1位是乘以4SALAL,1;ADDAL,AH,;HLT6.將內(nèi)存中DATA單元起始的100個(gè)單元中的字節(jié)數(shù)據(jù)排序。解答:100個(gè)單元中的字節(jié)數(shù)據(jù)由大到小排序,有多種方法,常用的方法為“冒泡法”排序。首先,所有相鄰兩單元的數(shù)依次兩兩比較,若下面的數(shù)大則不交換;若下面的數(shù)打,則兩數(shù)交換位置??梢钥闯觯谝惠喒策M(jìn)行100-1=99次比較,最小的數(shù)排到了最后面。第二輪在前99個(gè)數(shù)中比較交換,共進(jìn)行100-2=98次比較,次小的數(shù)排到了倒數(shù)第二位。如此進(jìn)行,經(jīng)過(guò)100-1=99輪比較,已經(jīng)排好了次序。程序如下:MOVBX,OFFSETDATAMOVCX,100DECCXLOOP1:MOVDI,CXLOOP2:MOVAX,[BX]CMPAX,[BX+1]JGENEXTXCHGAX,[BX+2]MOV[BX],AXNEXT:INCBXLOOPLOOP2MOVCX,DILOOPLOOP1INT7.若在內(nèi)存某一緩沖區(qū)中存放著若干個(gè)單元的用BCD碼表示的十進(jìn)制數(shù)。每—個(gè)單元中放兩位BCD碼,要求把它們分別轉(zhuǎn)換為ASCII碼。高位的BCD碼轉(zhuǎn)換完后放在地址較高的單元。解答:轉(zhuǎn)換公式:ASCII=BCD+30H,其算法是將源串和目的串的表首分別設(shè)兩個(gè)指針。取BCD轉(zhuǎn)ASCII后存入(先低位,后高位)MOV SI,OFFSETBCDBUFF;設(shè)置源地址指針MOV CX,COUNT;設(shè)計(jì)數(shù)初值MOV DI,OFFSETASCBUF;設(shè)置目的地址指針AGAIN:MOV AL,[SI]MOV BL,ALAND AL,0FH;取低位BCD碼OR AL,30H;轉(zhuǎn)換成ASCII碼MOV [DI],AL;存入INC DI;修改指針MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30H;高位轉(zhuǎn)換成ASCII碼MOV [DI],AL;存入POP CXINC DIINC SI

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論