微機原理與及接口技術(shù)_第1頁
微機原理與及接口技術(shù)_第2頁
微機原理與及接口技術(shù)_第3頁
微機原理與及接口技術(shù)_第4頁
微機原理與及接口技術(shù)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

答案第一章1.將下列十進制數(shù)轉(zhuǎn)換成二進制數(shù)。(1)49(2)49.75(3)100(4)100.8125解:(1)(49)10=(110001)2(2)(49.75)10=(110001.11)2(3)(100)10=(1100100)2(4)(100.8125)10=(1100100.1101)22.將下列十六進制數(shù)轉(zhuǎn)換成二進制數(shù)和十進制數(shù)。(1)FAH(2)78A2H(3)FFFFH(4)3CH解:(1)(FA)16=(11111010)2=(250)10(2)(78A2)16=(111100010100010)2=(30882)10(3)(FFFF)16=(1111111111111111)2=(65535)10(4)(3C)16=(111100)2=(60)10 3.將下列二進制數(shù)轉(zhuǎn)換成十六進制數(shù)和八進制數(shù)。(1)101101.11(2)1111111(3)1101001011.01(4)10111101解:(1)(101101.11)2=(2D.C)16=(55.6)8(2)(1111111)2=(7F)16=(177)8(3)(1101001011.01)2=(34B.4)16=(1513.2)8(4)(10111101)2=(BD)16=(275)84.設(shè)機器字長為8位,寫出下列各二進制數(shù)的原碼、反碼和補碼。(1)+1010101(2)-1000000(3)+1111111(4)-1111111解:(1)原碼:01010101;反碼:01010101;補碼:01010101。(2)原碼:11000000;反碼:10111111;補碼:11000000。(3)原碼:01111111;反碼:01111111;補碼:01111111。(4)原碼:11111111;反碼:10000000;補碼:10000001。5.設(shè)下列四組為8位二進制補碼表示的十六進制數(shù),計算a+b和a-b,并判斷其結(jié)果是否溢出。(1)a=0F6H,b=0D5H(2)a=0B7H,b=0C7H(3)a=37H,b=67H(4)a=73H,b=7BH解:(1)a+b=CBH,沒有發(fā)生溢出;a-b=21H,沒有發(fā)生溢出。(2)a+b=7EH,發(fā)生溢出;a-b=F0H,沒有發(fā)生溢出。(3)a+b=9EH,發(fā)生溢出;a-b=D0H,沒有發(fā)生溢出。(4)a+b=EEH,發(fā)生溢出;a-b=F8H,沒有發(fā)生溢出。6.已知a=00111000B,b=11110011B,計算下列邏輯運算。(1)aANDb(2)aORb(3)aXORb(4)NOTa解:(1)aANDb=00110000B(2)aORb=11111011B(3)aXORb=11001011B(4)NOTa=11000111B7.將下列算式中的十進制數(shù)表示成組合BCD碼進行運算,并根據(jù)需要進行調(diào)整。(1)38+42(2)56+77(3)99+77(4)34+7解:(1)00111000+0100001001111010+011010000000(80)(2)01010110+0111011111001101+01100110000100110011(133)(3)10011001+01110111100010000+01100110000101110110(176)(4)00110111+0000011100111011+011001000001(41)8.將下列字符串表示成相應(yīng)的ASCII碼(用十六進制數(shù)表示)。(1)102(2)ABC(3)ASCII(4)abc解:(1)313032H(2)414243H(3)4153434949H(4)616263H9.已知[X]原=10101100B,計算[(1/2)X]補及[(-1/2)X]補的值。解:∵[X]原=10101100B∴[(1/2)X]原=10010110B,[(-1/2)X]原=00010110B∴[(1/2)X]補=11101010B,[(-1/2)X]補=00010110B10.請將十進制數(shù)7.5表示成二進制浮點規(guī)格化數(shù)(階符1位,階碼2位,數(shù)符1位,尾數(shù)4位)。解:十進制數(shù)7.5用二進制表示為:111.1B111.1B=0.1111×2+3浮點規(guī)格化數(shù)表示成:01101111。第二章1.8086/8088微處理器從邏輯結(jié)構(gòu)上可以分成哪兩部分?試說明每一部分的組成與功能。答:8086/8088微處理器從邏輯結(jié)構(gòu)上可以分成執(zhí)行單元(EU)和總線接口單元(BIU)。執(zhí)行部件(EU)包含一個16位的算術(shù)邏輯單元(ALU)、一個16位反映CPU狀態(tài)和控制標志的狀態(tài)標志寄存器(FLAG)、一組8個16位通用寄存器組、數(shù)據(jù)暫存寄存器和EU的控制電路??偩€接口部件(BIU)包含一組段寄存器(CS,SS,DS和ES)、一個指令指針寄存器(IP)、4或6個字節(jié)的指令隊列、地址形成器件和總線控制邏輯。EU的功能是負責指令的執(zhí)行;BIU的功能是根據(jù)EU的請求,完成CPU與存儲器或I/O接口間的數(shù)據(jù)傳送。2.寫出8086/8088CPU中14個16位寄存器的名稱。答:8086/8088CPU中14個16位寄存器的名稱如下:AX:累加器。BX:基址寄存器。CX:計數(shù)寄存器。DX:數(shù)據(jù)寄存器。SP:堆棧指針寄存器。BP:基地址指針寄存器。SI:源變址寄存器。DI:目的變址寄存器。CS:代碼段寄存器。DS:數(shù)據(jù)段寄存器。SS:堆棧段寄存器。ES:附加段寄存器。IP:指令指針寄存器。FLAG:標志寄存器。3.寫出8086/8088CPU標志寄存器中的6個狀態(tài)標志位和3個控制標志位的定義。答:6個狀態(tài)標志位的定義如下:CF:進位標志;當最高位有進位或借位時,CF=1;否則CF=0;PF:奇偶標志;當運算結(jié)果中低8位中“1”的個數(shù)為偶數(shù)時,PF=1;否則PF=0;AF:輔助進行標志;當D3向D4有進位或借位時,AF=1;否則AF=0;ZF:零標志;運算結(jié)果每位都為0時,ZF=1;否則ZF=0;SF:符號標志;運算結(jié)果的最高位為1時,SF=1;否則SF=0;OF:溢出標志;兩個符號數(shù)進行運算產(chǎn)生溢出時,OF=1;否則OF=0。3個控制標志位的定義如下:TF:陷阱標志;當TF=1時,CPU將進入單步執(zhí)行工作方式;IF:中斷標志;當IF=1時允許CPU響應(yīng)可屏蔽中斷;當IF=0時禁止CPU響應(yīng)可屏蔽中斷;DF:方向標志;當DF=0時,串操作指令時地址朝增加方向;當DF=1時,串操作指令時地址朝減少方向。4.在8086/8088CPU中,十六進制補碼數(shù)8070H與9E85H進行加法運算,請寫出運算結(jié)束后SF、OF、CF、AF、ZF及PF標志位的值?解:8070H1000000001110000+9E85H1001111010000101128F5H+10010100011110101從運算結(jié)果可以看出:SF=0;OF=1;AF=0;CF=1;ZF=0;PF=1。5.寫出8086/8088CPU引腳中ALE、NMI、INTR、及的含義及輸入/輸出方向。答:ALE:地址鎖存輸出信號。NMI:非屏蔽中斷請求輸入信號。INTR:可屏蔽中斷請求輸入信號。:中斷響應(yīng)輸出信號。:數(shù)據(jù)傳送方向輸出信號。6.8088CPU中的RESET、READY信號的作用分別是什么?答:RESET:CPU復(fù)位輸入信號,高電平有效。當此輸入線有效并維持至少4個時鐘周期時完成CPU內(nèi)部復(fù)位操作。復(fù)位后CPU內(nèi)的寄存器及引腳處于初始狀態(tài)。READY:準備就緒輸入信號,高電平有效。用于協(xié)調(diào)CPU與存儲器或I/O端口之間的數(shù)據(jù)傳送。當CPU對存儲器或I/O進行操作時,在T3周期開始采樣READY信號。若其為低電平,表明被訪問的存儲器或I/O還未準備就緒;若其為高電平,表明被訪問的存儲器或I/O已準備就緒。7.寫出段基址、偏移地址、邏輯地址和物理地址的含義,同時寫出它們之間的聯(lián)系。答:段基址:段首地址的高16位地址碼,常存于相應(yīng)的段寄存器中;偏移地址:段內(nèi)的相對地址,也稱有效地址;邏輯地址:由段基址與段內(nèi)偏移地址組合表示存儲單元地址;物理地址:用20位二進制編號表示存儲單元地址;物理地址=段基址×16+段內(nèi)偏移地址。8.試填寫物理地址。(1)CS=1200H,IP=2500H,物理地址為14500H。(2)DS=39A0H,BX=4700H,物理地址為3E100H。(3)ES=6200H,DI=2000H,物理地址為64000H。(4)SS=8200H,BP=1050H,物理地址為83050H。9.請畫出8088CPU一個基本的存儲器寫總線周期時序圖。一個總線周期CLKT1T2T3T4一個總線周期CLKT1T2T3T4A19~A16/S6~S3地址輸出狀態(tài)輸出A15~A8地址輸出AD7~AD0地址輸出數(shù)據(jù)輸出ALEIO/MWRDT/RDEN10.請寫出時鐘周期、總線周期與指令周期的含義。答:時鐘周期是CPU的基本時間計量單位,即計算機主頻的倒數(shù)??偩€周期是指CPU通過總線對存儲器或I/O端口進行一次訪問(讀/寫操作)所需的時間;一個總線周期至少包含4個時鐘周期,即T1、T2、T3、T4。指令周期是指計算機完成一條指令的執(zhí)行所需要的時間。11.在總線周期的T1、T2、T3和T4狀態(tài),CPU分別執(zhí)行什么動作?什么情況下需要插入等待狀態(tài)TW?TW插入的位置?答:在T1狀態(tài),BIU把要訪問的存儲器單元或I/O端口的地址輸出到總線。在T2狀態(tài),地址/數(shù)據(jù)復(fù)用總線停止輸出地址信號。若是讀周期,T2中地址/數(shù)據(jù)復(fù)用總線處于高阻狀態(tài),CPU有足夠的時間使其從輸出方式變?yōu)檩斎敕绞?;若為寫周期,CPU不必轉(zhuǎn)變輸出方式。在T3~T4狀態(tài),CPU與存儲器或I/O接口進行數(shù)據(jù)傳送。CPU若與慢速的存儲器或I/O端口之間的數(shù)據(jù)傳送,READY信號在T3狀態(tài)時仍為低電平,則在T3之后插入等待狀態(tài)TW,加入TW的個數(shù)由外設(shè)的速度與CPU速度匹配決定。12.8088CPU工作在最小模式下,請回答以下問題:(1)CPU訪問存儲器時,需要哪些信號?(2)CPU訪問I/O接口時,需要哪些信號?(3)當HOLD有效并得到響應(yīng)時,CPU的哪些信號置高阻狀態(tài)?答:(1)利用A15~A8,AD7~AD0,ALE,,,,,。(2)利用A15~A8,AD7~AD0,ALE,,,,,。(3)當HOLD有效并得到響應(yīng)時,CPU中呈高阻狀態(tài)的信號有:A15~A8,AD7~AD0,ALE,,,,,。第三章1.按照題目中提出的要求,寫出能達到要求的一條(或幾條)匯編形式的指令。(1)將立即數(shù)1234H送入寄存器BX;(2)將立即數(shù)1234H送入段寄存器DS;(3)將變址寄存器DI的內(nèi)容送入數(shù)據(jù)段中2000H的存儲單元;(4)把數(shù)據(jù)段中2000H存儲單元的內(nèi)容送段寄存器ES;(5)將立即數(shù)0ABH與AL相加,結(jié)果送回AL;(6)把BX與CX寄存器內(nèi)容相加,結(jié)果送入BX;(7)寄存器BX中的低4位內(nèi)容保持不變,其它位按位取反,結(jié)果仍在BX中;(8)實現(xiàn)AX與8位數(shù)-128的乘積運算;(9)實現(xiàn)CX中高、低8位內(nèi)容的交換;(10)將DX中D0、D5、D8位置1,其余位保持不變。解:(1)MOVBX,1234H(2)MOVAX,1234HMOVDS,AX(3)MOV[2000H],DI(4)MOVES,[2000H](5)ADDAL,0ABH(6)ADDBX,CX(7)XORBX,0FFF0H(8)MOVBL,80HIMULBL(9)XCHGCH,CL(10)ORDX,0121H2.順序執(zhí)行下列指令,填寫指令后的空格。MOVAX,2000H;AH=20HMOVDS,AX;AL=00H;DS=2000HMOVBX,2030H;BH=20H;BL=30HMOVSI,BX;SI=2030HPUSHBXPOPCX;BX=2030H;CX=2030HXCHGAX,SI;AX=2030H;SI=2000HADDAX,0F43H;AX=2F73H;CF=0CWD;AX=2F73H;DX=0000HSHLAL,CL;AL=00H;CL=30HORAX,5555H;AX=7F55HANDAX,0AA55H;AX=2A55HMOVBL,0FFHMULBL;AX=54ABHIMULBL;AX=0055H3.指出下列各條指令中源操作數(shù)字段的尋址方式。(1)MOVAX,0ABH;立即尋址方式(2)MOVAX,BX;寄存器尋址方式(3)MOVAX,[1234H];直接尋址方式(4)MOVAX,[BX];寄存器間接尋址方式(5)MOVAX,[BX+10];寄存器相對尋址方式(6)MOVAX,[BX][SI];基址變址尋址方式(7)MOVAX,03H[BX][SI];相對基址變址尋址方式(8)ADDBX,[SI];寄存器間接尋址方式(9)ANDAX,1234H;立即尋址方式(10)XORCX,AX;寄存器尋址方式4.如果TABEL為數(shù)據(jù)段中0032H單元的符號名,其中存放的內(nèi)容為1234H,填寫下列指令執(zhí)行后空格中的內(nèi)容。MOVAX,TABEL;AX=1234HLEAAX,TABEL;AX=0032H5.畫出執(zhí)行下列指令過程中堆棧區(qū)和SP的內(nèi)容變化過程示意圖,并標出存儲單元的物理地址。MOVAX,1000HMOVSS,AXMOVSP,0100H;=1\*GB3①MOVBX,SPPUSHAX;=2\*GB3②PUSHBX;=3\*GB3③POPCX;=4\*GB3④HLT10100H100FEH10100H100FEH100FCH10H00H01H00H最后指令位置=3\*GB3③=2\*GB3②=4\*GB3④=1\*GB3①6.標出下列指令的執(zhí)行順序。(1)MOVAX,1234H(2)CMPAX,8234H(3)JCNEXT1(4)CBW(5)NEXT1:MOVBX,9876H(6)CMPBX,AX(7)JBNEXT2(8)SHRAX,1(9)NEXT2:ANDBX,1010H(10)HLT解:指令的執(zhí)行順序:(1)→(2)→(3)→(5)→(6)→(7)→(8)→(9)→(10)。7.指令REPMOVSB,REPLODSB,REPSTOSB及REPESCASB中,哪一條能替代以下程序段。ABC:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPABC解:指令REPMOVSB能替代上述程序段。8.順序執(zhí)行下列各條指令,填寫空格。MOVBX,6534H;BX=6534HXORBX,0FFFFH;BX=9ACBHANDBX,15A0H;BX=1080HORBX,2379H;BX=33F9HTESTBX,0002H;BX=33F9H9.試寫出執(zhí)行下列3條指令后BX寄存器的內(nèi)容。MOVCL,21HMOVBX,6D16HSHRBX,CL解:BX=0000H10.試分析以下程序段所完成的功能。MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL解:程序段完成由DX和AX共同組成的32位數(shù)向左移動4位。11.假定AX和BX中內(nèi)容為有符號數(shù),CX和DX中的內(nèi)容為無符號數(shù),請用比較指令和條件轉(zhuǎn)移指令實現(xiàn)以下判斷:(1)若DX的內(nèi)容超過CX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EXCEED;(2)若BX的內(nèi)容大于AX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EXCEED;(3)BX的內(nèi)容大于等于AX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EXCEED;(4)若CX的內(nèi)容等于0,則轉(zhuǎn)去執(zhí)行ZERO;(5)若BX與AX的內(nèi)容相等,則轉(zhuǎn)去執(zhí)行EQ;(6)若BX的內(nèi)容小于等于AX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EQSMA;(7)若CX的內(nèi)容等于5678H,則轉(zhuǎn)去執(zhí)行EQ;(8)若DX的內(nèi)容低于CX的內(nèi)容,則轉(zhuǎn)去執(zhí)行EQSM;(9)若AX的內(nèi)容為正,則轉(zhuǎn)去執(zhí)行ABC;(10)若AX的內(nèi)容為負,則轉(zhuǎn)去執(zhí)行ABC1。解:(1)CMPDX,CXJAEXCEED(2)CMPBX,AXJGEXCEED(3)CMPBX,AXJGEEXCEED(4)CMPCX,0JZZERO(5)CMPBX,AXJZEQ(6)CMPBX,AXJLEEQSMA(7)CMPCX,5678HJZEQ(8)CMPDX,CXJBEQSM(9)ADDAX,0JNSABC(10)ADDAX,0JSABC112.編寫程序段,實現(xiàn)十六進制數(shù)12345678H與76543210H相減運算,運算結(jié)果存入DX、AX中,其中DX存放高位。解:參考程序段如下:MOVAX,5678HSUBAX,3210HMOVDX,1234HSBBDX,7654HHLT13.編寫程序段,實現(xiàn)十進制數(shù)12345678與76543210相加運算,運算結(jié)果用BCD碼表示,并存入DX、AX中,其中DX存放高位。解:MOVAL,78HADDAL,10HDAAMOVBL,ALMOVAL,56HADCAL,32HDAAMOVAH,ALMOVAL,34HADCAL,54HDAAMOVDL,ALMOVAL,12HADCAL,76HDAAMOVDH,ALMOVAL,BLHLT14.編寫程序段,將附加段中1000H單元開始的100字節(jié)單元清零。解:參考程序段如下:MOVCX,0064HMOVDI,1000HCLDMOVAL,00HREPSTOSBHLT15.編寫程序段,將數(shù)據(jù)段中1000H單元開始的100字節(jié)單元均存放23H。解:參考程序段如下:MOVCX,0064HMOVAX,DSMOVES,AXMOVDI,1000HCLDMOVAL,23HREPSTOSBHLT第四章匯編語言源程序設(shè)計1.畫出數(shù)據(jù)段匯編后相應(yīng)存儲單元中的內(nèi)容并標出存儲單元的邏輯地址。DATASEGMENTORG0100HABC0EQU78HABCDB09H,-2,45H,2DUP(01H,?),‘AB’ABC1DW-2,34H+ABC0,$ABC2DD12HABC3DWABCDATAENDS解:DS:0100HABC→09HDS:0101HFEHDS:0102H45HDS:0103H01HDS:0104H-DS:0105H01HDS:0106H-DS:0107H41HDS:0108H42HDS:0109HABC1→FEHDS:010AHFFHDS:010BHACHDS:010CH00HDS:010DH0DHDS:010EH01HDS:010FHABC2→12HDS:0110H00HDS:0111H00HDS:0112H00HDS:0113HABC3→00HDS:0114H01H2.設(shè)程序中的數(shù)據(jù)定義如下: PARTNODW? PNAMEDB16DUP(?) COUNTDD? PLENTHEQU$-PARTNO問PLENTH的值為多少?它的含義是什么?解:PLENTH的值為22(16H)。表示當前位置與PARTNO之間有22個字節(jié)空間。3.假設(shè)程序中的數(shù)據(jù)定義如下: LNAMEDB30DUP(?) ADDRESSDB30DUP(?) CITYDB15DUP(?) CODE_LISTDB1,7,8,3,2(1)用一條MOV指令將LNAME的偏移地址放入AX;(2)用一條指令將CODE_LIST的頭兩個字節(jié)的內(nèi)容放入SI:(3)寫一條偽操作使CODE_LENGTH的值等于CODE_LIST域的實際長度。解:(1)MOVAX,OFFSETLNAME(2)MOVSI,WORDCODE_LIST(3)CODE_LENGTHEQU$-CODE_LIST4.執(zhí)行下列程序段后,AX、BX的內(nèi)容各是什么?MOVAX,0001HMOVBX,8000HNEGAXMOVCX,4AA:SHLAX,1RCLBX,1LOOPAAHLT解:AX=0FFF0H,BX=000FH5.閱讀以下程序,回答問題DATASEGMENTABCDB90H,12H,43H,56H,04H,01HCOUNTEQU$-ABCRESULTDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,DATAMOVDS,AXXORAX,AXMOVCX,COUNTLEASI,ABCLEADI,RESULTAA:MOVBL,[SI]INCSICMPBL,80HJCNEXT1NEGBLNEXT1:ADDAL,BLADCAH,00HLOOPAAMOV[DI],AXMOVAH,4CHINT21HCODEENDSENDSTART(1)程序完成什么功能?(2)程序中NEGBL指令的作用是什么?(3)程序執(zhí)行結(jié)束后RESULT字單元的內(nèi)容是什么?(4)能否用MOVSI,OFFSETABC代替程序中LEASI,ABC指令?(5)匯編結(jié)束后符號COUNT的值是什么?解:(1)程序完成求一組有符號字節(jié)數(shù)的絕對值之和。(2)程序中NEGBL指令的作用是求負數(shù)的絕對值。(3)程序執(zhí)行結(jié)束后RESULT字單元的內(nèi)容是0120H。(4)能。(5)匯編結(jié)束后符號COUNT的值是06H。6.閱讀以下程序,回答問題DSEGSEGMENTARRAYDB34H,56H,23H,70H,96HCOUNTEQU$-ARRAYDSEGENDSSSEGSEGMENTPARASTACK‘STACK’DB256DUP(0)SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVSI,OFFSETARRAYMOVCX,COUNTCLDNEXT:LODSBMOVBL,ALANDAL,0F0HPUSHCXMOVCL,4SHRAL,CLORAL,30HCALLDISPMOVAL,BLANDAL,0FHORAL,30HCALLDISPDECCXJCXZDONEMOVAL,2CH;逗號的ASCII碼為2CHCALLDISPJMPNEXTDONE:MOVAH,4CH;終止當前進程,返回調(diào)用進程INT21HDISPPROCNEARMOVAH,14;寫字符到當前光標位置,光標前進一格INT10HRETDISPENDPCSEGENDSENDSTART(1)程序執(zhí)行結(jié)束后,屏幕上顯示的內(nèi)容是什么?(2)程序中帶下劃線的指令可以用什么指令替代(僅一條)?(3)程序中空格處應(yīng)填入什么指令,才能保證程序按要求正常執(zhí)行?解:(1)程序執(zhí)行結(jié)束后,屏幕上顯示的內(nèi)容是34,56,23,70,96。(2)程序中帶下劃線的指令可以用LEASI,ARRAY指令替代。(3)程序中空格處應(yīng)填入POPCX指令,才能保證程序按要求正常執(zhí)行。7.AX寄存器中存有4位壓縮BCD碼,試編寫程序?qū)⑦@4位數(shù)字分開,并分別存入BH、BL、CH和CL寄存器中。解:參考程序段如下:……MOVDX,AXMOVCL,04HROLAX,CLANDDX,0F0FHMOVBL,DHMOVCL,DLANDAX,0F0FHMOVBH,ALMOVCH,AH……8.已知X、Y是字節(jié)型的無符號整數(shù),編寫程序計算。解:參考程序如下:DATASEGMENTXDB?;運行程序時取X分別位于兩個分支YDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,20JNCNEXTMOVCL,03HSHRAL,CLJMPNEXT1NEXT:SUBAL,15NEXT1:MOVY,ALMOVAH,4CHINT21HCODEENDSENDSTART9.編寫程序,統(tǒng)計寄存器BX中二進制位“1”解:參考程序如下:CODESEGMENTASSUMECS:CODESTART:MOVAL,00HMOVDX,BXMOVCX,16AA:CMPDX,0JZNEXTSHLDX,1JNCNEXT1INCALNEXT1:LOOPAANEXT:MOVAH,4CHINT21HCODEENDSENDSTART10.編寫程序段將計算機日期設(shè)置為2009年10月1日。解:參考程序段如下:MOVCX,2009H;設(shè)置年MOVDH,10H;設(shè)置月MOVDL,01H;設(shè)置日MOVAH,2BHINT21HHLT11.編寫程序?qū)崿F(xiàn)接收一個字符的輸入,并在屏幕上用二進制形式(0/1)顯示出它的ASCII碼值。解:參考程序如下:CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAH,01H;鍵盤輸入 INT21H MOVBL,AL MOVCX,0007HSHLBL,1AA:SHLBL,1 JCNEXT1 MOVDL,’0 JMPNEXTNEXT1:MOVDL,’1NEXT:MOVAH,02H;顯示輸出7位ASCII碼值 INT21H LOOPAA MOVAH,4CHINT21HCODEENDSENDSTART12.設(shè)數(shù)據(jù)塊存放在BUFFER開始的50個字節(jié)單元中,試編寫程序統(tǒng)計數(shù)據(jù)塊中正數(shù)(不包括0)的個數(shù),并將統(tǒng)計的結(jié)果存放到NUMBER單元中。解:參考程序如下:DATASEGMENTBUFFERDB23H,00H,56H,89H,09H,30HDB98H,11H,07H,…COUNTEQU$-BUFFERNUMBERDB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,COUNTLEASI,BUFFERAA:MOVAL,[SI]CMPAL,00HJZNEXTJSNEXTINCNUMBERNEXT:INCSILOOPAAMOVAH,4CHINT21HCODEENDSENDSTART13.內(nèi)存的一個區(qū)域中有100個字符是用小寫字母表示的,試編寫一個程序,把它們轉(zhuǎn)換成大寫字母,并送屏幕顯示。解:參考程序如下:DATASEGMENTABCDB61H,65H,62H,63H,…;(100個小寫字母)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,0064HLEASI,ABCAA:MOVDL,[SI]SUBDL,20HMOV[SI],DLMOVAH,02HINT21HINCSILOOPAAMOVAH,4CHINT21HCODEENDSENDSTART14.“9876”是將輸入數(shù)據(jù)字符“3268”通過密碼表“解:參考程序如下:DATASEGMENTABCDB33H,35H,38H,39H,30HDB32H,37H,31H,36H,34HABC1DB4DUP(00H)ABC2DB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,ABC1LEADI,ABC2MOVCX,0004HAA:MOVAH,01HINT21HMOV[SI],ALINCSILOOPAALEASI,ABC1MOVDX,0000HMOVCX,0004HAA0:LEABX,ABCAA1:MOVAL,[SI]CMPAL,[BX]JZNEXTINCBXINCDLJMPAA1NEXT:PUSHCXCMPCX,01HJZNEXT1MOVCL,04HSHLDX,CLNEXT1:POPCXLOOPAA0MOV[DI],AXMOVAH,4CHINT21HCODEENDSENDSTART15.在STRING單元開始存放著一字符串,字符串以“$”結(jié)束,試編制一程序測試該字符串中是否有數(shù)字0~9,如有則將CL中的第5位置1,否則將該位清0。解:參考程序如下:DATASEGMENTABCDB‘ABCDS9KL$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,ABCMOVCL,00HAA:MOVAL,[SI]CMPAL,’$’JZNEXT1CMPAL,30HJCNEXTCMPAL,3AHJNCNEXTORCL,20HJMPNEXT1NEXT:INCSIJMPAANEXT1:MOVAH,4CHINT21HCODEENDSENDSTART16.編寫程序完成把DX中的16進制數(shù)轉(zhuǎn)換為ASCII碼,并將對應(yīng)的ASCII碼依次存入MEM開始的存儲單元中。例如,當DX的內(nèi)容為2A49H時,程序執(zhí)行結(jié)束后,MEM單元開始的4個字節(jié)的內(nèi)容依次為39H,34H,41H,32H。解:DATASEGMENTMEMDB4DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCH,04HMOVBX,OFFSETMEMMOVCL,04HAA1:MOVAX,DX ANDAL,0FH ADDAL,30H CMPAL,3AH JCNEXT ADDAL,07HNEXT:MOV[BX],AL INCBX RORDX,CL DECCH JNZAA1 MOVAH,4CH INT21HCODEENDSENDSTART17.現(xiàn)有一個以“$”結(jié)尾的字符串,編寫程序完成剔除字符串中的空格字符。解:參考程序如下:DATASEGMENTABCDB‘ABCDS9KL$’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,ABCMOVBX,SIAA:MOVAL,[SI]CMPAL,’$’JZNEXTCMPAL,20H;空格的ASCII碼值為20HJZNEXT1MOVAL,[SI]MOV[BX],ALINCSIINCBXJMPAANEXT1:INCSIJMPAANEXT:MOVAH,4CHINT21HCODEENDSENDSTART18.編一程序,在STRING開頭的數(shù)據(jù)區(qū)中查找WE字符串,數(shù)據(jù)區(qū)以$符作為結(jié)束符號。如查到,給出HAVEFOUND提示;如查不到,給出NOTFOUND提示。解:參考程序如下:DATASEGMENTSTRINGDB‘ABCWE5$’REDB‘NOTFOUND$’RE1DB‘HAVEFOUND$’ DATAENDS CODESEGMENT ASSUMECS:CODE,DS:DATA BEGIN:MOVAX,DATA MOVDS,AX LEASI,STRINGAA:MOVAL,[SI]CMPAL,’$’JZNEXT CMPAL,’W’ JNZNEXT1 INCSI MOVAL,[SI] CMPAL,’E’ JNZAA LEADX,RE1 JMPNEXT2 NEXT1:INCSI JMPAA NEXT:LEADX,RE NEXT2:MOVAH,09H INT21H MOVAH,4CH INT21H CODEENDS ENDBEGIN19.設(shè)在A、B和C單元中分別存放著三個數(shù),若三個數(shù)都不是0,則求出三數(shù)之和并存放在D單元中;若三個數(shù)中有一個為0,則把其余兩個單元也清0。試編寫此程序。解:參考程序如下:DATASEGMENTADB?BDB?CDB?;程序運行前修改A、B和C單元的內(nèi)容DDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,ACMPAL,00HJZNEXTMOVAL,BCMPAL,00HJZNEXTMOVAL,CCMPAL,00HJZNEXTMOVAL,AADDAL,BADDAL,CMOVD,ALJMPNEXT1NEXT:MOVA,00H MOVB,00H MOVC,00HNEXT1:MOVAH,4CH INT21HCODEENDSENDSTART20.在以DA1為首地址的內(nèi)存中有50個無符號字節(jié)數(shù),編寫程序統(tǒng)計其中素數(shù)的個數(shù),結(jié)果以十進制形式在屏幕上顯示。要求分別用子程序完成素數(shù)個數(shù)統(tǒng)計及十進制數(shù)顯示。解:分析:素數(shù),又稱質(zhì)數(shù),是這樣的整數(shù):它除了能表示為它自己和1的乘積以外,不能表示為任何其他兩個整數(shù)的乘積。判斷一個整數(shù)是否為素數(shù)的方法:用這個數(shù)除以2到它本身,如果只能被它本身整除則為素數(shù)。參考程序如下:DATASEGMENTttldb'Totalnumberofprimenumber(s):$'tendw10pcountdb0da1dB1,2,3,4,5,6,7,8,9,10dB11,12,13,14,15,16,17,18,19,20dB21,22,23,24,25,26,27,28,29,30dB31,32,33,34,35,36,37,38,39,40dB41,42,43,44,45,46,47,48,49,50DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAmain:movax,datamovds,axleasi,da1movdi,50;用di做主循環(huán)計數(shù)器cldm_1:lodsb;從ds:si取一個無符號整數(shù)到axcallisprimejncm_2incpcountcallprintax;是素數(shù)則輸出ax里的十進制數(shù)movdl,9;用制表符分隔callputcm_2:decdijnzm_1;50個數(shù)完成?movdx,offsetttl;輸出素數(shù)總數(shù)callputsmoval,pcount;輸出素數(shù)總數(shù)xorah,ahcallprintaxmovah,4chint21hisprimeproccbwtestax,1;是否為偶數(shù)jnzip_1;若是偶數(shù)直接返回ip_0:clc;CF=0表示是合數(shù)retip_1:cmpax,1;1或0?jbeip_0;不是素數(shù)cmpax,3jeip_4;3是素數(shù)直接返回movcx,3;從3開始循環(huán)ip_2:movbx,ax;留個副本在bx里xordx,dx;為除法清除dxdivcxmovax,bx;恢復(fù)ax里的數(shù)ordx,dx;余數(shù)為0否jzip_0;為0為合數(shù)addcx,3;本來是除數(shù)加2,只嘗試除數(shù)為奇數(shù)的情況即可,直接加3是為了比較cx是否以及到了ax-1cmpcx,axjbip_3;若cx高于或等于ax,說明除數(shù)已經(jīng)嘗試到了n-1,ax是素數(shù),直接返回,否則繼續(xù)到ip_3ip_4:stc;CF=1表示是素數(shù)retip_3:deccx;cx-1才是真正下個要嘗試的除數(shù)jmpip_2;繼續(xù)試isprimeendpputsprocmovah,9int21hretputsendpputcprocmovah,2int21hretputcendpprintaxprocxordx,dxdivtenmovcx,axorcx,dx;若商與余數(shù)都為0則結(jié)束遞歸jzp_1pushdx;留存DX中的余數(shù)以在遞歸后輸出callprintax;遞歸popdx;從最高位開始恢復(fù)余數(shù)adddl,'0';原來的輸出語句add一下就好了callputcp_1:retprintaxendpCODEENDSendmain第五章1.選擇題(1)關(guān)掉工作電源后,其中存儲的數(shù)據(jù)立即丟失的存儲器是。A.硬盤B.ROMC.光盤D.RAM(2)下面說法正確的是。A.EPROM是不能改寫的存儲器B.EPROM是可以改寫的,因此它也是一種隨機存取存儲器C.EPROM只能改寫一次D.EPROM可以改寫,但它不是隨機存取存儲器(3)某DRAM芯片有8條地址線,因些可以推斷其存儲容量不超過。A.512個存儲單元B.65536個存儲單元C.8192個存儲單元D.256個存儲單元(4)對于地址總線為20位的微處理器來說,其直接尋址的范圍可達。A.16MBB.1MBC.64MBD.1GB(5)在研制某一計算機應(yīng)用系統(tǒng)的過程中,存儲其監(jiān)控程序可選用。A.RAMB.EPROMC.PROMD.ROM(6)下列四條敘述中,正確的一條是。A.硬盤和光盤都屬于外存儲器B.計算機的外存比內(nèi)存存取速度快C.虛擬存儲器屬外存儲器D.計算機系統(tǒng)中的任何存儲器在斷電情況下,所存信息都不會丟失(7)常用的虛擬存儲器尋址系統(tǒng)由兩級存儲器組成。A.Cache-外存B.Cache-CacheC.Cache-主存D.主存-外存(8)下列關(guān)于外存、內(nèi)存以及Cache的不正確的說法是。A.內(nèi)存通常由RAM、ROM芯片組成B.Cache可以在CPU內(nèi)部或外部C.Cache只占用部分內(nèi)存空間D.外存的信息必須調(diào)入內(nèi)存才能被CPU執(zhí)行(9)虛擬存儲器由實現(xiàn)。A.硬件和用戶編程B.硬件和操作系統(tǒng)C.ROM-BIOSD.用戶編程和操作系統(tǒng)(10)不能與CPU總線直接相連的存儲器是。A.內(nèi)存儲器B.ROMC.硬盤D.RAM解:參考答案:題號題號(1)(2)(3)(4)(5)答案DDBBB題號(6)(7)(8)(9)(10)答案ADBBC2.簡答題(1)簡述SRAM芯片與DRAM芯片的共同點與不同點。答:SRAM與DRAM的共同點:都屬于隨機存取存儲器,具有易失性。SRAM與DRAM的不同點:SRAM利用雙穩(wěn)態(tài)觸發(fā)器電路保存信息,集成度比DRAM低,功耗比DRAM大;DRAM利用MOS管柵極和源極之間的極間電容C保存信息,需要刷新電路保證信息較長時間保存。(2)敘述ROM芯片的常見分類,各種ROM芯片的特點及其適用場合。答:ROM的常用分類、特點及應(yīng)用場合:①掩膜ROM:生產(chǎn)完成的芯片已保存了信息,保存的信息無法修改,適用于大批量的定型產(chǎn)品中。②PROM:PROM可以一次寫入信息,一旦寫入無法更改,適用于小批量的定型產(chǎn)品中。③EPROM:紫外線擦除可多次編程的存儲器,適用于新產(chǎn)品的開發(fā)。④EEPROM:電擦除可多次編程的存儲器,適用于需要在線修改的場合。(3)主存儲器的地址譯碼方式有哪幾種?各有什么特點?答:主存儲器的地址譯碼方式分為全部譯碼與部分譯碼。全部譯碼:把剩余的高位地址線全部作為譯碼器的輸入,用譯碼器輸出來作為片選信號的方法就是全部譯碼。采用全譯碼時各芯片(組)的地址范圍是唯一的,即每個存儲單元的地址唯一,沒有地址重疊,地址空間可以得到充分利用。部分譯碼:用剩余高位地址線的一部分作為譯碼器的輸入,用譯碼器的輸出來作為片選信號的方法就是部分譯碼。采用部分譯碼時,存儲器單元的地址不唯一,存在地址重疊。沒有參加譯碼的地址線越多,地址重疊就越嚴重。(4)利用4片6116(2K×8位)芯片設(shè)計存儲器系統(tǒng)時,采用全譯碼法并且保證存儲器地址的連續(xù),若起始地址為60000H,則存儲器系統(tǒng)的最后一個單元地址是什么?答:存儲器系統(tǒng)的最后一個單元地址是61FFFH。(5)某微機系統(tǒng)中ROM區(qū)有首地址為90000H,末地址為FFFFFH,求其ROM區(qū)域的存儲容量。答:其ROM區(qū)域的存儲容量為448K。(6)對于下列芯片,它們的片內(nèi)地址線各有多少根?若分別用以下芯片組成容量為64KB的模塊,請指出分別需要多少片芯片?①Intel2114(1K×4位的SRAM)②Intel6116(2K×8位的SRAM)③Intel2764(8K×8位的EPROM)答:①Intel2114的片內(nèi)地址線為10根,組成容量為64KB的存儲器模塊需要128片。②Intel6116的片內(nèi)地址線為11根,組成容量為64KB的存儲器模塊需要32片。③Intel2764的片內(nèi)地址線為13根,組成容量為64KB的存儲器模塊需要8片。(7)簡述高速緩沖存儲器Cache的基本工作原理以及它與主存的關(guān)系。答:在某一時間間隔內(nèi),CPU對局部范圍的存儲器訪問較頻繁,而對其它地址的訪問較少。使用高性能的SRAM芯片組成容量較小的Cache,存放當前常用的代碼,保證CPU讀取Cache中數(shù)據(jù)的命中率較高,縮短相應(yīng)的存取時間。(8)采用虛擬存儲技術(shù)能解決什么問題?虛擬存儲器的管理方式有哪幾種?答:使用虛擬存儲器可以保證計算機在不提高成本的前提下,提高有效的存儲空間。虛擬存儲器的管理方式有:段式、頁式、段頁式。3.設(shè)計題(1)在8088CPU的系統(tǒng)中擴展32K字節(jié)的RAM,其擴充存儲空間的起始地址為80000H。設(shè)系統(tǒng)的地址總線為A19~A0,數(shù)據(jù)總線為D7~D0,存儲器芯片選用6264。采用74LS138譯碼器設(shè)計譯碼電路,畫出擴展的存儲器系統(tǒng)的連線圖。D0D0~D7MEMWMEMRA0~A12A19A18A17A16A15A14A13R/WD0~D762641#OEA0~A12R/WD0~D762642#OEA0~A12G1G2AG2B74LS138CBAY0Y1CSCSA0~A12D0~D7R/WD0~D762643#OEA0~A12R/WD0~D762644#OEA0~A12CSCSY2Y3圖5.7習題3(1)連接 根據(jù)要求存儲器系統(tǒng)的連接如圖5.7所示。(2)某微機系統(tǒng)的CPU為8088,且工作于最小方式,原有系統(tǒng)RAM存儲器模塊的容量為128KB,其首地址為40000H,現(xiàn)用6264RAM芯片(8K×8位)擴展一個容量為16KB的存儲器模塊,地址緊接原有RAM模塊,試完成該擴展RAM模塊設(shè)計(可選用譯碼器、與門、或門及非門等)。A1A12~A0D7~D0A13A14A15M/IOA16A17A18Y1Y7Y0…74LS138G2BG2AG1CBA圖5.8習題3(2)連接A19Y2Y36264(1)D7~D0A12~A0CSOEWE6264(2)D7~D0A12~A0CSOEWEMEMRMEMW8088系統(tǒng)總線第六章填空題(1)I/O數(shù)據(jù)緩沖器主要用于協(xié)調(diào)CPU與外部設(shè)備在速度上的差異。(2)一般I/O接口的編址方式可以分成存儲器映像方式和I/O映像方式兩種。(3)在微機系統(tǒng)中使用地址來區(qū)分不同的外部設(shè)備。(4)CPU與I/O設(shè)備之間的數(shù)據(jù)傳送方式有無條件傳送方式、程序查詢傳送方式、中斷控制方式和DMA方式。(5)一片Intel8255A一般占用4個端口地址。(6)Intel8255A的端口C的按位置位/復(fù)位功能的控制字寫入控制寄存器端口。(7)Intel8255A工作在方式0時,端口A、B和C的輸入/輸出可以有16種組合。(8)在DMA傳送過程中完成數(shù)據(jù)傳送功能是由DMA控制器硬件直接控制。(9)在DMA方式下,DMA控制器控制總線。(10)在DMA數(shù)據(jù)傳送方式中,實現(xiàn)地址的修改與傳送字節(jié)數(shù)計數(shù)的主要功能部件是DMA控制器。畫出程序查詢數(shù)據(jù)傳送方式的流程圖。讀取狀態(tài)信息準備就緒嗎?讀取狀態(tài)信息準備就緒嗎?否是傳送數(shù)據(jù)圖6.6查詢方式程序流程3.假設(shè)某一計算機系統(tǒng)中有一片Intel8255A接口芯片,初始化時將它的A口、B口均設(shè)置成方式1輸出,請寫出這時Intel8255A與外設(shè)的聯(lián)絡(luò)信號名稱與信號方向。答:A口設(shè)置成方式1輸出時的聯(lián)絡(luò)信號有::輸出緩沖器緩信號,8255A輸出給外設(shè);:應(yīng)答信號,外設(shè)給8255A;INTRA:中斷請求信號,8255A輸出給CPU。B口設(shè)置成方式1輸出時的聯(lián)絡(luò)信號有::輸出緩沖器緩信號,8255A輸出給外設(shè);:應(yīng)答信號,外設(shè)給8255A;IN

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論