《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)_第1頁(yè)
《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)_第2頁(yè)
《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)_第3頁(yè)
《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)_第4頁(yè)
《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)_第5頁(yè)
已閱讀5頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案(5篇范例)第一篇:《微機(jī)原理及應(yīng)用》教材課后習(xí)題及答案《微機(jī)原理及應(yīng)用》習(xí)題答案第一章1.11請(qǐng)完成下列數(shù)制轉(zhuǎn)換:(1)將174.66D轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制和十六進(jìn)制形式。(2)將100011101011.01011B轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制和十六進(jìn)制形式。(3)將F18A6.6H轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制和十進(jìn)制形式。答:174.66D=10101110.1010B=AE.AH100011101011.01011B=2283.34375D=8EB.58HF18A6.6H=989350.375D1.12請(qǐng)寫出與數(shù)據(jù)+37和-37對(duì)應(yīng)的8位機(jī)器數(shù)原碼、反碼和補(bǔ)碼,并分別用二進(jìn)制和十六進(jìn)制表示出來。答:-37D=(10100101B)原=(11011010B)反=(11011011B)補(bǔ)1.138位機(jī)器數(shù)46H,若作為無符號(hào)數(shù)和補(bǔ)碼有符號(hào)數(shù),其對(duì)應(yīng)的真值各是什么?若作為BCD碼和ASCII碼,其對(duì)應(yīng)的又是什么?答:無符號(hào)數(shù)46H=70,補(bǔ)碼46H=+70BCD碼46H=46,ASCII碼46H=“F”第二章2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?1MB最多能分成多少個(gè)邏輯段?請(qǐng)將如下邏輯地址用物理地址表達(dá):(1)FFFFH:0H(2)40H:17H(3)2000H:4500H(4)B821H:4567H答:⑴FFFFH:0H=FFFF0H⑵40H:17H=00417H⑶2000H:4500H=24500H⑷B821H:4567H=BC777H2.8已知DS=2000H,BX=0100H,SI=0002,存儲(chǔ)單元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,說明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容以及源操作數(shù)的尋址方式?答:⑴AX=1200H,立即數(shù)尋址;⑵AX=0100H,寄存器尋址;⑶AX=4C2AH,直接尋址;⑷AX=3412H,寄存器間接尋址;⑸AX=4C2AH,寄存器相對(duì)尋址;⑹AX=7865H,基址變址尋址;⑺AX=65B7H,基址變址相對(duì)尋址。2.9說明下面各條指令的具體錯(cuò)誤原因:(1)movcx,dl(2)movip,ax(3)moves,1234h(4)moves,ds(5)moval,300(6)mov[sp],ax(7)movax,bx+di(8)mov20h,ah答:⑴操作數(shù)類型不同;⑵不能手工修改IP;⑶不能將立即數(shù)直接MOV到段寄存器;⑷不能在段寄存器之間直接MOV數(shù)據(jù);⑸300大于AL所能存放的數(shù)據(jù)的范圍;⑹寄存器間接尋址只能用BX/BP/SI/DI之一;⑺MOVAX,[BX+DI];⑻目的操作數(shù)不能是立即數(shù)。2.10已知數(shù)字0~9對(duì)應(yīng)的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請(qǐng)為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。leabx,tablemoval,8xlat答:leabx,table;bx=0200hmoval,8;al=08hxlat;al=12h2.11給出下列各條指令執(zhí)行后的AL值,以及CF,ZF,SF,OF和PF的狀態(tài):moval,89haddal,aladdal,9dhcmpal,0bchsubal,aldecalincal答:⑴al=89h⑵al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1⑶al=afh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0⑷al=afh,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0⑸al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0⑹al=ffh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1⑺al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=12.12請(qǐng)分別用一條匯編語(yǔ)言指令完成如下功能:(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。(2)用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器的一個(gè)字節(jié)與AL寄存器的內(nèi)容相加并把結(jié)果送到AL中。用BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和CX寄存器的內(nèi)容相加,并把結(jié)果送回存儲(chǔ)器中。(4)用位移量為0520H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)3412H相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù)0A0H與AL寄存器的內(nèi)容相加,并把結(jié)果送回AL中。答:⑴adddx,bx;⑵addal,[bx+si];⑶add[bx+00b2h],cx⑷addwordptr[0520h],3412h⑸addal,0a0h2.13設(shè)X,Y,Z,V均為16位帶符號(hào)數(shù),分別裝在X,Y,Z,V存儲(chǔ)器單元中,閱讀如下程序段,得出它的運(yùn)算公式,并說明運(yùn)算結(jié)果存于何處。movax,ximulymovcx,axmoxbx,dxmovax,zcwdaddcx,axadcbx,dxsubcx,540abbbx,0movax,vcwdsubax,cxabbdx,bxidivx答:(V-(X*Y+Z-540))/X2.14給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF的狀態(tài)。movax,1470handax,axorax,axxorax,axnotaxtestax,0f0f0h答:⑴ax=1470h⑵ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑶ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑷ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1⑸ax=0ffffh,CF=0,ZF=0,SF=0,OF=1,PF=1⑹ax=0ffffh,CF=0,ZF=0,SF=1,OF=0,PF=12.16假設(shè)DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執(zhí)行下列段內(nèi)間接尋址的轉(zhuǎn)移指令后,轉(zhuǎn)移的有效地址是什么?答:⑴1256h;⑵3280h2.17判斷下列程序段跳轉(zhuǎn)的條件(1)xorax,lelehjeequal(2)testal,10000001bjnzthere(3)cmpcx,64hjbthere答:⑴ax=1e1eh;⑵al=1******1b;⑶cx<64h2.18如下是一段軟件延時(shí)程序,請(qǐng)問NOP指令執(zhí)行了多少次?xorcx,cxdelay:noploopdelay答:655362.19有一個(gè)首地址為array的20個(gè)字的數(shù)組,說明下列程序段的功能。movcx,20movax,0movsi,axsumlp:addax,array[si]addsi,2loopsumlpmovtotal,ax答:將array數(shù)組的20個(gè)字(無進(jìn)位)累加,其和存入total單元。2.20按照下列要求,編寫相應(yīng)的程序段:(1)由string指示的起始地址的主存單元中存放一個(gè)字符串(長(zhǎng)度大于6),把該字符串的第1個(gè)和第6個(gè)字符(字節(jié)量)傳送給DX寄存器。(2)有兩個(gè)32位數(shù)值,按“小端方式”存放在兩個(gè)緩沖區(qū)buffer1和buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。(3)編寫一個(gè)程序段,在DX高4位全為0時(shí),使AX=0;否則,使AX=-1。(4)把DX.AX中的雙字右移4位。(5)有一個(gè)100個(gè)字節(jié)元素的數(shù)組,其首地址為array,將每個(gè)元素減1(不考慮溢出或借位)存于原處。答:⑴movdl,stringmovdh,string+5⑵movax,wordptrbuffer1subax,wordptrbuffer2movdx,wordptrbuffer1+2sbbdx,buffer2+2⑶testdx,0f0hjet1movax,-1jmpdonet1:movax,0done:…..⑷movax,1234hmovdx,5678hmovcx,4lp1:shrdx,1rcrax,1looplp1⑸leabx,arraymovcx,100lp1:sub[bx],1incbxlooplp12.25編寫一個(gè)程序段:先提示輸入數(shù)字“InputNumber:0~9”,然后在下一行顯示輸入的數(shù)字,結(jié)束;如果不是鍵入了0~9數(shù)字,就提示錯(cuò)誤“Error!”,繼續(xù)等待輸入數(shù)字。答:.modelsmall.stack100h.datamessagedb“InputNumber:0~9”,0dh,0ah,“$”errordb“Error!”,0dh,0ah,“$”.code.startupmovdx,offsetmessagemovah,09hint21hbegin1:movah,01hint21hcmpal,“0”jberr1cmpal,“9”jaerr1movdl,almovah,02hint21h.exiterr1:movoffseterrormovah,09hint21hjmpbegin1end第三章3.11請(qǐng)?jiān)O(shè)置一個(gè)數(shù)據(jù)段,按照如下要求定義變量:(1)my1b為字符串變量,表示字符串“PersonalComputer”。(2)my2b為用十進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(3)my3b為用十六進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(4)my4b為用二進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(5)my5w為20個(gè)未賦值的字變量。(6)my6c為100的符號(hào)常量。(7)my7c為字符串常量,代替字符串“PersonalComputer”。答:my1bdb“PersonalComputer”my2bdb20my3bdb14hmy4bdb00010100bmy5wdw20dup(?)my6cequ100my7cequ<PersonalComputer>3.14設(shè)在某個(gè)程序中有如下片段,請(qǐng)寫出每條傳送指令執(zhí)行后寄存器AX的內(nèi)容:;數(shù)據(jù)段org100hvarwdw1234h,5678hvarbdb3,4varddd12345678hbuffdb10dup(?)messdb?hello?;代碼段movax,offsetmessmovax,typebuff+typemess+typevardmovax,sizeofvarw+sizeofbuff+sizeofmessmovax,lengthofvarw+lengthofvard答:offsetvarb=0104hoffsetmess=0114htypebuff=1;typemess=1;typevard=4sizeofvarw=4;sizeofbuff=10;sizeofmess=5lengthofvarw=2;lengthofvard=13.15假設(shè)myword是一個(gè)字變量,mybyte1和mybyte2是兩個(gè)字節(jié)變量,指出下列語(yǔ)句中的具體錯(cuò)誤原因。⑴movbyteptr[bx],1000(2)movbx,offsetmyword[si](3)cmpmybyte1,mybyte2(4)movmybyte1,al+1(5)subal,myword(6)jnzmyword答:⑴1000大于字節(jié)變量所能表示的范圍movbyteptr[BX],5表示的意思是把5以字節(jié)的形式傳送給DS:BX,1000超過了0ffh,也就是大于1個(gè)字節(jié),所以無法傳送會(huì)出現(xiàn)errorA2050:Valueoutofrange(值超出范圍)數(shù)據(jù)類型不匹配,目的地址單元是字節(jié)單元,1000大于255。無法存放。⑵OFFSET只能用于簡(jiǎn)單變量OFFSET后只能跟標(biāo)識(shí)符。⑶雙操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)CMP的兩個(gè)操作數(shù)不能同時(shí)在存儲(chǔ)器中。⑷數(shù)值表達(dá)式應(yīng)為運(yùn)算符加常量運(yùn)算符只能對(duì)常數(shù)進(jìn)行操作,不能對(duì)變量進(jìn)行操作。⑸兩操作數(shù)類型不一致數(shù)據(jù)類型不匹配,AL是8位的,MYWORD是16位變量。⑹條件跳轉(zhuǎn)只能是短跳轉(zhuǎn)MYWORD是變量,其指的單元中存放的是操作數(shù),不能用做跳轉(zhuǎn)入口。3.17已知用于LED數(shù)碼管的顯示代碼表為:LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示0~9,A~F這16個(gè)數(shù)碼的顯示代碼。現(xiàn)編寫一個(gè)程序?qū)崿F(xiàn)將lednum中的一個(gè)數(shù)字(0~9、A~F)轉(zhuǎn)換成對(duì)應(yīng)的LED顯示代碼。答:stacksegmentstackdb100hdup(?)stackendsdatasegmentledtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8ehlednumdb3dataendscodesegment'code'assumecs:code,ss:stack,ds:datastart:movax,datamovds,axleabx,ledtablemoval,lednumxlatmovax,4c00hint21hcodeendsendstart解析:stack段是缺省的堆棧段時(shí)寫成stacksegmentparastack'stack'比較簡(jiǎn)單省事兒,因?yàn)檫@樣鏈接程序會(huì)自動(dòng)設(shè)置exe可執(zhí)行文件里初始堆棧指針,程序里就不用自己進(jìn)行設(shè)置了。如果沒有最后的那個(gè)'stack'說明項(xiàng),就需要自己設(shè)置ss:sp。'stack'是類別名。把我定義的stacksegment關(guān)聯(lián)到棧,省去了assumess:stack對(duì)么,所以我可以寫成stacksegmentstack.3.18編制一個(gè)程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設(shè)變量存放的是8位有符號(hào)數(shù)。答:datasegmentxdb13ydb-3zdb?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,xmovah,ycmpal,ahjbechangemovz,ahjmpdonechange:movz,aldone:movax,4c00hint21hcodeendsendstart3.19設(shè)變量bufX為有符號(hào)數(shù)16位數(shù),請(qǐng)將它的符號(hào)狀態(tài)保存在signX,即:如果變量值大于等于0,保存0;如果X小于0,保存-1.編寫該程序。答:datasegmentbuffxdw13signxdw?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,buffx;ax=13cmpax,0jbechangemovsignx,0jmpdonechange:movsignx,-1done:movax,4c00hint21hcodeendsendstart3.20bufX、bufY和bufZ是3個(gè)有符號(hào)十六進(jìn)制數(shù),編寫一個(gè)比較相等關(guān)系的程序:(1)如果這3個(gè)數(shù)都不相等,則顯示0。(2)如果這3個(gè)數(shù)中有兩個(gè)數(shù)相等,則顯示1。(3)如果這3個(gè)數(shù)都相等,則顯示2。答:datasegmentbufxdb13bufydb-3bufzdb-3dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,bufxmovbl,bufymovcl,bufzcmpal,bljecaccmpal,cljeview1cmpbl,cljeview1movdl,'0'jmpviewcac:cmpal,cljeview2view1:movdl,'1'jmpviewview2:movdl,'2'view:movah,02hint21hmovax,4c00hint21hcodeendsendstart3.21例3.7中,如果要實(shí)現(xiàn)所有為1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例題中僅執(zhí)行最低為1位的處理程序段),請(qǐng)寫出修改后的代碼段?答:datasegmentnumberdb78haddrsdwoffsetfun0,offsetfun1,offsetfun2,offsetfun3,offsetfun4,offsetfun5,offsetfun6,offsetfun7dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdh,numbermovcx,8movbx,0lp1:shrdh,1jcnextagain:incbxincbxlooplp1jmpdonenext:jmpaddrs[bx]fun0:movdl,'0'jmpviewfun1:movdl,'1'jmpviewfun2:movdl,'2'jmpviewfun3:movdl,'3'jmpviewfun4:movdl,'4'jmpviewfun5:movdl,'5'jmpviewfun6:movdl,'6'jmpviewfun7:movdl,'7'jmpviewview:movah,02hint21hjmpagaindone:movax,4c00hint21hcodeendsendstart3.22編制程序完成12H,45H,F3H,6AH,20H,FEH,90H,C8H,57H和34H共10個(gè)無符號(hào)字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量SUM中(不考慮進(jìn)位)。答:datasegmentnumdb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34hsumdb?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovcx,10leabx,numagain:moval,[bx]addsum,alincbxloopagainmovax,4c00hint21hcodeendsendstart3.23求主存0040H:0開始的一個(gè)64KB物理段中共有多少個(gè)空格?答:stacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movax,0040hmoves,axmovdi,0movcx,0movbx,0moval,''again:scasbjnenextincbxnext:deccxjneagainmovax,4c00hint21hcodeendsendstart3.24編寫計(jì)算100個(gè)正整數(shù)之和的程序。如果和不超過16位字的范圍(65535),則保存其和到wordsum,如超過則顯示?overflow!?。答:datasegmentnumdw100dup(800)sumdw?msgdb'Overflow!',13,10,'$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovcx,100leabx,nummovax,0again:addax,[bx]incbxincbxjcerrloopagainmovsum,axjmpdoneerr:movdx,offsetmsgmovah,09hint21hdone:movax,4c00hint21hcodeendsendstart3.25編制程序完成將一個(gè)16位無符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換成為用8421BCD碼表示的5位十進(jìn)制數(shù)。轉(zhuǎn)換算法可以是:用二進(jìn)制數(shù)除以10000,商為“萬位”,再用余數(shù)除以1000,得到“千位”;一次用余數(shù)除以100、10和1,得到“百位”、“十位”和“個(gè)位”。答:datasegmentbnumdw19982dnumdb5dup(?),'$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,bnumleabx,dnummovdl,0cwdmovcx,10000divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,1000divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,100divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,10divcxaddal,30hmov[bx],alincbxadddl,30hmov[bx],dlmovdx,offsetdnummovah,09hint21hmovax,4c00hint21hcodeendsendstart3.27編寫一個(gè)源程序,在鍵盤上按一個(gè)鍵,將從AL返回的ASCII碼值顯示出來,如果按下ESC鍵則程序退出。答:stacksegmentstackdb100hdup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movah,07hint21hcmpal,1bhjedonepushaxmovdl,almovcl,4shrdl,clcallhtoascmovah,02hint21hpopaxmovdl,alanddl,0fhcallhtoascmovah,02hint21hjmpstartdone:movax,4c00hint21hhtoascprocadddl,30hcmpdl,39hjbehtoendadddl,7htoend:rethtoascendpcodeendsendstart3.28請(qǐng)按如下說明編寫子程序:;子程序功能:把用ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換位對(duì)應(yīng)二進(jìn)制數(shù);入口參數(shù):DH=十位數(shù)的ASCII碼,DL=個(gè)位數(shù)的ASCII碼;出口參數(shù):AL=對(duì)應(yīng)的二進(jìn)制數(shù)答:stacksegmentstackdb100hdup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movdx,3932hcallasctohmovax,4c00hint21hasctohprocpushcxsubdx,3030hmovcl,10moval,dhmulcladdal,dlpopcxretasctohendpcodeendsendstart3.29調(diào)用HTOASC子程序,編寫顯示一個(gè)字節(jié)的16進(jìn)制數(shù)、后跟“H”的子程序。答:stacksegmentstackdb100hdup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movah,07hint21hcmpal,1bhjedonecallhtoahjmpstartdone:movax,4c00hint21hhtoahprocpushaxpushcxpushdxpushaxmovdl,almovcl,4shrdl,clcallhtoascmovah,02hint21hpopaxmovdl,alanddl,0fhcallhtoascmovah,02hint21hmovdl,'H'movah,02hint21hpopdxpopcxpopaxrethtoahendphtoascprocadddl,30hcmpdl,39hjbehtoendadddl,7htoend:rethtoascendpcodeendsendstart3.30寫一個(gè)子程序,根據(jù)入口參數(shù)AL=0、1、2,依次實(shí)現(xiàn)對(duì)大些字母轉(zhuǎn)換成小寫、小寫轉(zhuǎn)換成大寫或大小寫字母互換。欲轉(zhuǎn)換的字符串在string中,用0表示結(jié)束。答:datasegmentstringdb'abcDEfGh','$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,2callchangemovdx,offsetstringmovah,09hint21hmoval,0callchangemovdx,offsetstringmovah,09hint21hmoval,1callchangemovdx,offsetstringmovah,09hint21hmovax,4c00hint21hchangeprocleabx,stringcmpal,0jecg1cmpal,1jecg2cg3:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],5ahjaxtodaddbyteptr[bx],20hjmpcg33xtod:subbyteptr[bx],20hcg33:incbxjmpcg3cg2:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],61hjbcg22subbyteptr[bx],20hcg22:incbxjmpcg2cg1:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],5ahjacg11addbyteptr[bx],20hcg11:incbxjmpcg1done:retchangeendpcodeendsendstart3.34編寫一個(gè)計(jì)算字節(jié)校驗(yàn)和的子程序。所謂“校驗(yàn)和”是指不記進(jìn)位的累加,常用于檢查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個(gè)出口參數(shù)。傳遞參數(shù)方法自定。答:datasegmentcount=10arraydbcountdup(10h)checkdb?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,countpushaxmovax,offsetarraypushaxcallsumcheckmovcheck,almovax,4c00hint21hsumcheckprocpushbpmovbp,sppushbxpushcxmovbx,[bp+4]movcx,[bp+6]moval,0sum1:addal,[bx]incbxloopsum1popcxpopbxpopbpret4sumcheckendpcodeendsendstart第二篇:微機(jī)原理及應(yīng)用習(xí)題答案《微機(jī)原理及應(yīng)用》習(xí)題答案第一章1.11請(qǐng)完成下列數(shù)制轉(zhuǎn)換:(1)將174.66D轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制和十六進(jìn)制形式。(2)將100011101011.01011B轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制和十六進(jìn)制形式。(3)將F18A6.6H轉(zhuǎn)換為對(duì)應(yīng)的二進(jìn)制和十進(jìn)制形式。答:174.66D=10101110.1010B=AE.AH100011101011.01011B=2283.34375D=8EB.58HF18A6.6H=989350.375D1.12請(qǐng)寫出與數(shù)據(jù)+37和-37對(duì)應(yīng)的8位機(jī)器數(shù)原碼、反碼和補(bǔ)碼,并分別用二進(jìn)制和十六進(jìn)制表示出來。答:-37D=(10100101B)原=(11011010B)反=(11011011B)補(bǔ)1.138位機(jī)器數(shù)46H,若作為無符號(hào)數(shù)和補(bǔ)碼有符號(hào)數(shù),其對(duì)應(yīng)的真值各是什么?若作為BCD碼和ASCII碼,其對(duì)應(yīng)的又是什么?答:無符號(hào)數(shù)46H=70,補(bǔ)碼46H=+70BCD碼46H=46,ASCII碼46H=“F”第二章2.5什么是8088中的邏輯地址和物理地址?邏輯地址如何轉(zhuǎn)換成物理地址?1MB最多能分成多少個(gè)邏輯段?請(qǐng)將如下邏輯地址用物理地址表達(dá):(1)FFFFH:0H(2)40H:17H(3)2000H:4500H(4)B821H:4567H答:⑴FFFFH:0H=FFFF0H⑵40H:17H=00417H⑶2000H:4500H=24500H⑷B821H:4567H=BC777H2.8已知DS=2000H,BX=0100H,SI=0002,存儲(chǔ)單元[20100H]~[20103H]依次存放12H,34H,56H,78H,[21200H]~[21203H]依次存放2AH,4CH,87H,65H,說明下列每條指令執(zhí)行完后AX寄存器的內(nèi)容以及源操作數(shù)的尋址方式?答:⑴AX=1200H,立即數(shù)尋址;⑵AX=0100H,寄存器尋址;⑶AX=4C2AH,直接尋址;⑷AX=3412H,寄存器間接尋址;⑸AX=4C2AH,寄存器相對(duì)尋址;⑹AX=7865H,基址變址尋址;⑺AX=65B7H,基址變址相對(duì)尋址。2.9說明下面各條指令的具體錯(cuò)誤原因:(1)movcx,dl(2)movip,ax(3)moves,1234h(4)moves,ds(5)moval,300(6)mov[sp],ax(7)movax,bx+di(8)mov20h,ah答:⑴操作數(shù)類型不同;⑵不能手工修改IP;⑶不能將立即數(shù)直接MOV到段寄存器;⑷不能在段寄存器之間直接MOV數(shù)據(jù);⑸300大于AL所能存放的數(shù)據(jù)的范圍;⑹寄存器間接尋址只能用BX/BP/SI/DI之一;⑺MOVAX,[BX+DI];⑻目的操作數(shù)不能是立即數(shù)。2.10已知數(shù)字0~9對(duì)應(yīng)的格雷碼依次為:18H,34H,05H,06H,09H,0AH,0CH,11H,12H,14H,它存在于以table為首地址(設(shè)為200H)的連續(xù)區(qū)域中。請(qǐng)為如下程序段的每條指令加上注釋,說明每條指令的功能和執(zhí)行結(jié)果。leabx,tablemoval,8xlat答:leabx,table;bx=0200hmoval,8;al=08hxlat;al=12h2.11給出下列各條指令執(zhí)行后的AL值,以及CF,ZF,SF,OF和PF的狀態(tài):moval,89haddal,aladdal,9dhcmpal,0bchsubal,aldecalincal答:⑴al=89h⑵al=12h,CF=1,ZF=0,SF=0,OF=1,PF=1,AF=1⑶al=afh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=0⑷al=afh,CF=1,ZF=0,SF=1,OF=1,PF=1,AF=0⑸al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=0⑹al=ffh,CF=0,ZF=0,SF=1,OF=0,PF=1,AF=1⑺al=00h,CF=0,ZF=1,SF=0,OF=0,PF=1,AF=12.12請(qǐng)分別用一條匯編語(yǔ)言指令完成如下功能:(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器。(2)用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器的一個(gè)字節(jié)與AL寄存器的內(nèi)容相加并把結(jié)果送到AL中。用BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和CX寄存器的內(nèi)容相加,并把結(jié)果送回存儲(chǔ)器中。(4)用位移量為0520H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)3412H相加,并把結(jié)果送回該存儲(chǔ)單元中。(5)把數(shù)0A0H與AL寄存器的內(nèi)容相加,并把結(jié)果送回AL中。答:⑴adddx,bx;⑵addal,[bx+si];⑶add[bx+00b2h],cx⑷addwordptr[0520h],3412h⑸addal,0a0h2.13設(shè)X,Y,Z,V均為16位帶符號(hào)數(shù),分別裝在X,Y,Z,V存儲(chǔ)器單元中,閱讀如下程序段,得出它的運(yùn)算公式,并說明運(yùn)算結(jié)果存于何處。movax,ximulymovcx,axmoxbx,dxmovax,zcwdaddcx,axadcbx,dxsubcx,540abbbx,0movax,vcwdsubax,cxabbdx,bxidivx答:(V-(X*Y+Z-540))/X2.14給出下列各條指令執(zhí)行后的結(jié)果,以及狀態(tài)標(biāo)志CF、OF、SF、ZF、PF的狀態(tài)。movax,1470handax,axorax,axxorax,axnotaxtestax,0f0f0h答:⑴ax=1470h⑵ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑶ax=1470h,CF=0,ZF=0,SF=0,OF=0,PF=0⑷ax=0000h,CF=0,ZF=0,SF=0,OF=1,PF=1⑸ax=0ffffh,CF=0,ZF=0,SF=0,OF=1,PF=1⑹ax=0ffffh,CF=0,ZF=0,SF=1,OF=0,PF=12.16假設(shè)DS=2000H,BX=1256H,TABLE的偏移地址是20A1H,物理地址232F7H處存放3280H,試問執(zhí)行下列段內(nèi)間接尋址的轉(zhuǎn)移指令后,轉(zhuǎn)移的有效地址是什么?答:⑴1256h;⑵3280h2.17判斷下列程序段跳轉(zhuǎn)的條件(1)xorax,lelehjeequal(2)testal,10000001bjnzthere(3)cmpcx,64hjbthere答:⑴ax=1e1eh;⑵al=1******1b;⑶cx<64h2.18如下是一段軟件延時(shí)程序,請(qǐng)問NOP指令執(zhí)行了多少次?xorcx,cxdelay:noploopdelay答:655362.19有一個(gè)首地址為array的20個(gè)字的數(shù)組,說明下列程序段的功能。movcx,20movax,0movsi,axsumlp:addax,array[si]addsi,2loopsumlpmovtotal,ax答:將array數(shù)組的20個(gè)字(無進(jìn)位)累加,其和存入total單元。2.20按照下列要求,編寫相應(yīng)的程序段:(1)由string指示的起始地址的主存單元中存放一個(gè)字符串(長(zhǎng)度大于6),把該字符串的第1個(gè)和第6個(gè)字符(字節(jié)量)傳送給DX寄存器。(2)有兩個(gè)32位數(shù)值,按“小端方式”存放在兩個(gè)緩沖區(qū)buffer1和buffer2中,編寫程序段完成DX.AX←buffer1-buffer2功能。(3)編寫一個(gè)程序段,在DX高4位全為0時(shí),使AX=0;否則,使AX=-1。(4)把DX.AX中的雙字右移4位。(5)有一個(gè)100個(gè)字節(jié)元素的數(shù)組,其首地址為array,將每個(gè)元素減1(不考慮溢出或借位)存于原處。答:⑴movdl,stringmovdh,string+5⑵movax,wordptrbuffer1subax,wordptrbuffer2movdx,wordptrbuffer1+2sbbdx,buffer2+2⑶testdx,0f0hjet1movax,-1jmpdonet1:movax,0done:…..⑷movax,1234hmovdx,5678hmovcx,4lp1:shrdx,1⑸rcrax,1looplp1leabx,arraymovcx,100lp1:sub[bx],1incbxlooplp12.25編寫一個(gè)程序段:先提示輸入數(shù)字“InputNumber:0~9”,然后在下一行顯示輸入的數(shù)字,結(jié)束;如果不是鍵入了0~9數(shù)字,就提示錯(cuò)誤“Error!”,繼續(xù)等待輸入數(shù)字。答:.modelsmall.stack100h.datamessagedb“InputNumber:0~9”,0dh,0ah,“$”errordb“Error!”,0dh,0ah,“$”.code.startupmovdx,offsetmessagemovah,09hint21hbegin1:movah,01hint21hcmpal,“0”jberr1cmpal,“9”jaerr1movdl,almovah,02hint21h.exiterr1:movoffseterrormovah,09hint21hjmpbegin1end第三章3.11請(qǐng)?jiān)O(shè)置一個(gè)數(shù)據(jù)段,按照如下要求定義變量:(1)my1b為字符串變量,表示字符串“PersonalComputer”。(2)my2b為用十進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(3)my3b為用十六進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(4)my4b為用二進(jìn)制數(shù)表示的字節(jié)變量,這個(gè)數(shù)的大小為20。(5)my5w為20個(gè)未賦值的字變量。(6)my6c為100的符號(hào)常量。(7)my7c為字符串常量,代替字符串“PersonalComputer”。答:my1bdb“PersonalComputer”my2bdb20my3bdb14hmy4bdb00010100bmy5wdw20dup(?)my6cequ100my7cequ<PersonalComputer>3.14設(shè)在某個(gè)程序中有如下片段,請(qǐng)寫出每條傳送指令執(zhí)行后寄存器AX的內(nèi)容:;數(shù)據(jù)段org100hvarwdw1234h,5678hvarbdb3,4varddd12345678hbuffdb10dup(?)messdb?hello?;代碼段movax,offsetmessmovax,typebuff+typemess+typevardmovax,sizeofvarw+sizeofbuff+sizeofmessmovax,lengthofvarw+lengthofvard答:offsetvarb=0104hoffsetmess=0114htypebuff=1;typemess=1;typevard=4sizeofvarw=4;sizeofbuff=10;sizeofmess=5lengthofvarw=2;lengthofvard=13.15假設(shè)myword是一個(gè)字變量,mybyte1和mybyte2是兩個(gè)字節(jié)變量,指出下列語(yǔ)句中的具體錯(cuò)誤原因。(1)movbyteptr[bx],1000(2)movbx,offsetmyword[si](3)cmpmybyte1,mybyte2(4)movmybyte1,al+1(5)subal,myword(6)jnzmyword答:⑴1000大于字節(jié)變量所能表示的范圍⑵OFFSET只能用于簡(jiǎn)單變量⑶雙操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)⑷數(shù)值表達(dá)式應(yīng)為運(yùn)算符加常量⑸兩操作數(shù)類型不一致⑹條件跳轉(zhuǎn)只能是短跳轉(zhuǎn)3.17已知用于LED數(shù)碼管的顯示代碼表為:LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示0~9,A~F這16個(gè)數(shù)碼的顯示代碼?,F(xiàn)編寫一個(gè)程序?qū)崿F(xiàn)將lednum中的一個(gè)數(shù)字(0~9、A~F)轉(zhuǎn)換成對(duì)應(yīng)的LED顯示代碼。答:stacksegmentstackdb100hdup(?)stackendsdatasegmentledtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8ehlednumdb3dataendscodesegment'code'assumecs:code,ss:stack,ds:datastart:movax,datamovds,axleabx,ledtablemoval,lednumxlatmovax,4c00hint21hcodeendsendstart3.18編制一個(gè)程序,把變量bufX和bufY中較大者存入bufZ;若兩者相等,則把其中之一存入bufZ中。假設(shè)變量存放的是8位有符號(hào)數(shù)。答:datasegmentxdb13ydb-3zdb?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,xmovah,ycmpal,ahjbechangemovz,ahjmpdonechange:movz,aldone:movax,4c00hint21hcodeendsendstart3.19設(shè)變量bufX為有符號(hào)數(shù)16位數(shù),請(qǐng)將它的符號(hào)狀態(tài)保存在signX,即:如果變量值大于等于0,保存0;如果X小于0,保存-1.編寫該程序。答:datasegmentbuffxdw13signxdw?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,buffxcmpax,0jbechangemovsignx,0jmpdonechange:movsignx,-1done:movax,4c00hint21hcodeendsendstart3.20bufX、bufY和bufZ是3個(gè)有符號(hào)十六進(jìn)制數(shù),編寫一個(gè)比較相等關(guān)系的程序:(1)如果這3個(gè)數(shù)都不相等,則顯示0。(2)如果這3個(gè)數(shù)中有兩個(gè)數(shù)相等,則顯示1。(3)如果這3個(gè)數(shù)都相等,則顯示2。答:datasegmentbufxdbbufydbbufzdbdataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,bufxmovbl,bufymovcl,bufzcmpal,bljecaccmpal,cljeview1cmpbl,cljeview1movdl,'0'jmpview13-3-3cac:cmpal,cljeview2view1:movdl,'1'jmpviewview2:movdl,'2'view:movah,02hint21hmovax,4c00hint21hcodeendsendstart3.21例3.7中,如果要實(shí)現(xiàn)所有為1的位都順序執(zhí)行相應(yīng)的處理程序段(而不是例題中僅執(zhí)行最低為1位的處理程序段),請(qǐng)寫出修改后的代碼段?答:datasegmentnumberdb78haddrsdwoffsetfun0,offsetfun1,offsetfun2,offsetfun3,offsetfun4,offsetfun5,offsetfun6,offsetfun7dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdh,numbermovcx,8movbx,0lp1:shrdh,1jcnextagain:incbxincbxlooplp1jmpdonenext:jmpaddrs[bx]fun0:movdl,'0'jmpviewfun1:movdl,'1'jmpviewfun2:movdl,'2'jmpviewfun3:movdl,'3'jmpviewfun4:movdl,'4'jmpviewfun5:movdl,'5'jmpviewfun6:movdl,'6'jmpviewfun7:movdl,'7'jmpviewview:movah,02hint21hjmpagaindone:movax,4c00hint21hcodeendsendstart3.22編制程序完成12H,45H,F3H,6AH,20H,FEH,90H,C8H,57H和34H共10個(gè)無符號(hào)字節(jié)數(shù)據(jù)之和,并將結(jié)果存入字節(jié)變量SUM中(不考慮進(jìn)位)。答:datasegmentnumdb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34hsumdb?dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovcx,10leabx,numagain:moval,[bx]addsum,alincbxloopagainmovax,4c00hint21hcodeendsendstart3.23求主存0040H:0開始的一個(gè)64KB物理段中共有多少個(gè)空格?答:stacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movax,0040hmoves,axmovdi,0movcx,0movbx,0moval,''again:scasbjnenextincbxnext:deccxjneagainmovax,4c00hint21hcodeendsendstart3.24編寫計(jì)算100個(gè)正整數(shù)之和的程序。如果和不超過16位字的范圍(65535),則保存其和到wordsum,如超過則顯示?overflow!?。答:datasegmentnumdw100dup(800)sumdw?msgdb'Overflow!',13,10,'$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovcx,100leabx,nummovax,0again:addax,[bx]incbxincbxjcerrloopagainmovsum,axjmpdoneerr:movdx,offsetmsgmovah,09hint21hdone:movax,4c00hint21hcodeendsendstart3.25編制程序完成將一個(gè)16位無符號(hào)二進(jìn)制數(shù)轉(zhuǎn)換成為用8421BCD碼表示的5位十進(jìn)制數(shù)。轉(zhuǎn)換算法可以是:用二進(jìn)制數(shù)除以10000,商為“萬位”,再用余數(shù)除以1000,得到“千位”;一次用余數(shù)除以100、10和1,得到“百位”、“十位”和“個(gè)位”。答:datasegmentbnumdw19982dnumdb5dup(?),'$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,bnumleabx,dnummovdl,0cwdmovcx,10000divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,1000divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,100divcxaddal,30hmov[bx],alincbxmovax,dxcwdmovcx,10divcxaddal,30hmov[bx],alincbxadddl,30hmov[bx],dlmovdx,offsetdnummovah,09hint21hmovax,4c00hint21hcodeendsendstart3.27編寫一個(gè)源程序,在鍵盤上按一個(gè)鍵,將從AL返回的ASCII碼值顯示出來,如果按下ESC鍵則程序退出。答:stacksegmentstackdb100hdup(?)stackendscodesegmentstart:movah,07hint21hcmpal,1bhjedonepushaxmovdl,almovcl,4shrdl,clcallhtoascmovah,02hint21hpopaxmovdl,alanddl,0fhcallhtoascmovah,02hint21hjmpstartdone:movax,4c00hint21hhtoascprocadddl,30hcmpdl,39hjbehtoendadddl,7htoend:rethtoascendp'code'assumecs:code,ss:stackcodeendsendstart3.28請(qǐng)按如下說明編寫子程序:;子程序功能:把用ASCII碼表示的兩位十進(jìn)制數(shù)轉(zhuǎn)換位對(duì)應(yīng)二進(jìn)制數(shù);入口參數(shù):DH=十位數(shù)的ASCII碼,DL=個(gè)位數(shù)的ASCII碼;出口參數(shù):AL=對(duì)應(yīng)的二進(jìn)制數(shù)答:stacksegmentstackendscodesegment'code'assumecs:code,ss:stackstart:movdx,3932hcallasctohmovax,4c00hint21hasctohprocpushcxsubdx,3030hmovcl,10moval,dhmulcladdal,dlpopcxretasctohendpstackdb100hdup(?)codeendsendstart3.29調(diào)用HTOASC子程序,編寫顯示一個(gè)字節(jié)的16進(jìn)制數(shù)、后跟“H”的子程序。答:stacksegmentstackdb100hdup(?)stackendscodesegment'code'assumecs:code,ss:stackstart:movah,07hint21hcmpal,1bhjedonecallhtoahjmpstartdone:movax,4c00hint21hhtoahprocpushaxpushcxpushdxpushaxmovdl,almovcl,4shrdl,clcallhtoascmovah,02hint21hpopaxmovdl,alanddl,0fhcallhtoascmovah,02hint21hmovdl,'H'movah,02hint21hpopdxpopcxpopaxrethtoahendphtoascprocadddl,30hcmpdl,39hjbehtoendadddl,7htoend:rethtoasccodeendsendstart3.30寫一個(gè)子程序,根據(jù)入口參數(shù)AL=0、1、2,依次實(shí)現(xiàn)對(duì)大些字母轉(zhuǎn)換成小寫、小寫轉(zhuǎn)換成大寫或大小寫字母互換。欲轉(zhuǎn)換的字符串在string中,用0表示結(jié)束。答:datasegmentstringdb'abcDEfGh','$'dataendsstacksegmentstackdb100dup(?)stackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmoval,2callchangemovdx,offsetstringmovah,09hint21hmoval,0callchangemovdx,offsetstringmovah,09hint21hmoval,1callchangemovdx,offsetstringendpmovah,09hint21hmovax,4c00hint21hchangeprocleabx,stringcmpal,0jecg1cmpal,1jecg2cg3:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],5ahjaxtodaddbyteptr[bx],20hjmpcg33xtod:subbyteptr[bx],20hcg33:incbxjmpcg3cg2:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],61hjbcg22subbyteptr[bx],20hcg22:incbxjmpcg2cg1:cmpbyteptr[bx],'$'jedonecmpbyteptr[bx],5ahjacg11addbyteptr[bx],20hcg11:incbxjmpcg1done:retchangeendpcodeendsendstart3.34編寫一個(gè)計(jì)算字節(jié)校驗(yàn)和的子程序。所謂“校驗(yàn)和”是指不記進(jìn)位的累加,常用于檢查信息的正確性。主程序提供入口參數(shù),有數(shù)據(jù)個(gè)數(shù)和數(shù)據(jù)緩沖區(qū)的首地址。子程序回送求和結(jié)果這個(gè)出口參數(shù)。傳遞參數(shù)方法自定。答:datasegmentcount=10arraydbcountdup(10h)checkdb?dataendsstacksegmentstackendscodesegment'code'assumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovax,countpushaxmovax,offsetarraypushaxcallsumcheckmovcheck,almovax,4c00hint21hsumcheckprocpushbpmovbp,sppushbxpushcxmovbx,[bp+4]stackdb100dup(?)movcx,[bp+6]moval,0sum1:addal,[bx]incbxloopsum1popcxpopbxpopbpret4sumcheckendpcodeendsendstart第三篇:《微機(jī)原理及應(yīng)用》試卷及其答案《微機(jī)原理及應(yīng)用》試卷A一、填空題(每空1分,共15分)1、在計(jì)算機(jī)中,對(duì)帶符號(hào)數(shù)的運(yùn)算均采用補(bǔ)碼。帶符號(hào)負(fù)數(shù)11000011的補(bǔ)碼為__________。2、單片機(jī)通常采用“三總線”的應(yīng)用模式,芯片內(nèi)部設(shè)有單獨(dú)的、_____和控制總線。3、當(dāng)使用80C51單片機(jī)時(shí),需要擴(kuò)展外部程序存儲(chǔ)器,此時(shí)EA應(yīng)為__________。4、若(A)=B3H,(R0)=A8H,執(zhí)行指令XRLA,R0之后,(A)=_______。5、在80C51單片機(jī)中,帶借位減法SUBB指令中,差的D7需借位時(shí),______=1,差的D3需借位時(shí),______=1。6、80C51單片機(jī)中,在調(diào)用子程序前,用_________指令將子程序中所需數(shù)據(jù)壓入堆棧,進(jìn)入執(zhí)行子程序時(shí),再用___________指令從堆棧中彈出數(shù)據(jù)。7、在十六進(jìn)制數(shù)與ASCII碼值的轉(zhuǎn)換過程中,當(dāng)十六進(jìn)制數(shù)在0~9之間時(shí),其對(duì)應(yīng)的ASCII碼值為該十六進(jìn)制數(shù)加_________。8、外部中斷和有兩種觸發(fā)方式:__________________和________________。9、在單片機(jī)串行通信中,依發(fā)送與接收設(shè)備時(shí)鐘的配置情況,串行通信可以分為_________________和_________________。10、若累加器A中的數(shù)據(jù)為01110010B,則PSW中的P=____________。二、選擇題(每題1分,共15分)1、單片機(jī)是在一片集成電路芯片上集成了以下部分,除了()A、微處理器B、存儲(chǔ)器C、I/O接口電路D、串口通信接口2、一個(gè)機(jī)器周期包含多少個(gè)晶振周期()A、2B、6C、8D、123、80C51單片機(jī)有21個(gè)特殊功能寄存器,其中與串行口相關(guān)的有以下幾個(gè),除了()A、SBUFB、TCONC、SCOND、PCON4、80C51系列單片機(jī)具有4個(gè)8位的并行I/O口,其中哪個(gè)口工作時(shí)需要外接上拉電阻()A、P0B、P1C、P2D、P35、寄存器中的內(nèi)容為地址,從該地址去取操作數(shù)的尋址方式稱為()A、寄存器尋址B、直接尋址C、寄存器間接尋址D、變址尋址6、源地址為1005H。目的地址為0F87H。當(dāng)執(zhí)行指令“JCrel”時(shí),rel為()。A、7EHB、80HC、82HD、84H7、若(R0)=30H,(30H)=75H,(75H)=90H,執(zhí)行指令MOVA,@R0后,(A)=______。A、3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論