微計算機原理第二版潘名蓮習題答案1—6章_第1頁
微計算機原理第二版潘名蓮習題答案1—6章_第2頁
微計算機原理第二版潘名蓮習題答案1—6章_第3頁
微計算機原理第二版潘名蓮習題答案1—6章_第4頁
微計算機原理第二版潘名蓮習題答案1—6章_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、一習題答案11解釋和區(qū)別下列名詞術(shù)語。(1). 微處理器P,微計算機C,微處理器系統(tǒng)PS。(5). 位、字節(jié)、字和雙字。(7). RAM和ROM(8). I/O接口和I/O設備。(9). 芯片總線、片總線、內(nèi)總線和外總線。答:(1). 把CPU的復雜電路,包括運算器和控制器作在一片或幾片大規(guī)模集成電路的半導體芯片上,這種集成電路叫微處理器P。 微處理器為核心,配上RAM、ROM,I/O接口及有關(guān)輔助電路組成的微型化的主計算機裝置稱為微計算機C。 微處理器為核心構(gòu)成的專用系統(tǒng)稱為微處理器系統(tǒng)PS。(5)一個二進制的位稱作位、8個相鄰二進制位稱作字節(jié)、2個字節(jié)稱作字,2個字(4個字節(jié))稱作雙字。(

2、7)能進行隨即讀寫操作的存儲器稱作RAM。只讀存儲器叫ROM。(8)輸入/輸出接口電路稱作I/O接口,通過I/O接口接入的外部設備如監(jiān)視器,鍵盤、鼠標稱作I/O設備。(9)位于CPU芯片內(nèi)部,用來實現(xiàn)CPU內(nèi)部各功能單元電路之間的相互連接和信號的傳遞的總線叫芯片總線。 片總線是微計算機主板或單板微計算機上以CPU芯片為核心,芯片與芯片間連接的總線。 內(nèi)總線指微計算機系統(tǒng)中實現(xiàn)插件板之間的連接的總線。如IBM PC 的PC總線,PCXT總線,PCI、ISA總線等等。 外總線用于系統(tǒng)之間的連接,完成系統(tǒng)與系統(tǒng)之間通信的總線。如RS232,IEE488、USB等等。 16 將下列十進制數(shù)轉(zhuǎn)換為二進制

3、數(shù)、十六進制數(shù)和BCD數(shù)(1)124625(6)268875解:(1)12401111100B7CH,0.625×1610,所以0.6250.AH=0.1010B124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD(2)26825612100001100B10CH,0.875×1614,0.8750.EH=0.1110B.268.875=10C.EH=100001100.111B=001001101000.100001110101BCD17 用16位二進制數(shù)表示出下列十進制數(shù)的原碼、反碼和補碼。(1)128(4)

4、5解:(1)+128 的原碼和補碼反碼均為0000000100000000B (4)5的原碼為1000000000000101B,反碼為1111111111111010B,補碼為1111111111111011B。19 寫出系列字母、符號的ASCII碼(1)B (2)H (3)SP(空格) (4)5 (5)$ (6)CR(回車符) (7)LF(換行)解:(1)42H、(2)48H、(3)20H、(4)35H、(5)24H、(6)0DH、(7)0AH110 試繪出以下十六進制數(shù)在內(nèi)存中存放的示意圖。設存放地址均為00H。解:(1)F7H (2)03BAH (3)C804326BH (4)1122

5、334455667788H11H07H22H06H33H05H44H04H55H03H66H02H77H01H88H00H內(nèi)容地址C8H03H04H02H32H01H6BH00H內(nèi)容地址03H01HBAH00H內(nèi)容地址F7H00H內(nèi)容地址21 請將左邊的術(shù)語和右邊的含義聯(lián)系起來,在括號中填入你選擇的代號字母: 1. 字長 (i)a. 指由8個二進制位組成的通用基本單元。 2. 字節(jié) (a)b. 是CPU執(zhí)行指令的時間刻度。 3. 指令 (h)c. PS所能訪問的存儲單元數(shù),與CPU地址總線條數(shù)有關(guān)。 4. 基本指令執(zhí)行周期(g)d. 唯一能代表存儲空間每個字節(jié)單元的地址,用5位十六進制數(shù)表示。

6、 5. 指令執(zhí)行時間 (j)e. CPU 訪問1次存儲器或I/O操作所花的時間。 6. 時鐘周期 (b)f. 由段基址和偏移地址兩部分組成,均用4位十六進制數(shù)表示。 7. 總線周期 (e)g. 指寄存器加法指令執(zhí)行所花時間。 8. Cache (k)h. 完成操作的命令。 9. 虛擬存儲器 (l)i. 指P在交換,加工,存放信息時信息的基本長度。 10. 訪存空間 (c)j. 各條指令執(zhí)行所花的時間不同,不同指令,該值不一。 11. 實際地址 (d)k. 為緩解CPU與主存儲器間交換數(shù)據(jù)的速度瓶頸而建立的高速存儲器。 12. 邏輯地址 (f)l. CPU執(zhí)行程序時看到的一個速度接近內(nèi)存卻具有外

7、存容量的假想存儲器。22 下面列出計算機中常用的一些單位,試指出其用途和含義。(1) MIPS (2)KB (3)MB (4)GB (5) TB解:(1)MIPS 用來表示計算機運行的速度。1MIPS1百萬條指令/秒。 (2)KB 用來表示計算機訪存空間大小。1KB1024(210)B(字節(jié)) (3)MB用來表示計算機訪存空間大小。1MB1048576(220)B(字節(jié)) (4)GB用來表示計算機訪存空間大小。1GB1024M(230)B(字節(jié))(5)TB用來表示計算機訪存空間大小。1TB1024G(240)B(字節(jié))24 試將左邊的標志和右邊的功能聯(lián)系起來。要求:(1) 在括號中填入右邊功能

8、的代號;(2) 填寫其類型(屬狀態(tài)標志者填S:屬控制標志者填C)。(3) 寫出各標志為0時表示的狀態(tài)。標 志類 型為0時表示的狀態(tài)1.SF( b ) a. 陷阱標志2.CF( d ) b. 符號標志3.AF( h ) C. 溢出標志4.DF( i ) d. 進位標志5.TF( a ) e. 零標志6.OF( c ) f. 奇偶標志7.PF( f ) g. 中斷標志8.IF( g ) h. 輔助進位標志9.ZF( e ) i . 方向標志 S S S C C S S C S帶符號數(shù)為正數(shù)結(jié)果最高位無進位(借位)低4位無進位(借位)串操作步進方向為地址遞增8086正常執(zhí)行程序帶符號數(shù)運算未產(chǎn)生溢出

9、運算結(jié)構(gòu)由奇數(shù)個1CPU關(guān)閉中斷運算結(jié)果不為026 試畫出8086/8088的寄存器結(jié)構(gòu),并說出它們的主要用途。解:AX、BX、CX、DX用作數(shù)據(jù)寄存器,用作存放操作數(shù)、中間結(jié)果。 SP堆棧指針、BP基址指針、SI源變趾、DI目的變趾。 IP 指令指針,F(xiàn)H 控制標志、FL 狀態(tài)標志。 CS 存儲代碼段首趾、DS存儲數(shù)據(jù)段首趾、SS 存儲堆棧段首趾、ES 附加數(shù)據(jù)段首趾。AHALAXBHBLBXCHCLCXDHDLDX SP BP SI DI IP FH FL CS DS SS ES28 若一個程序段開始執(zhí)行之前,(CS)97F0H,(IP)1B40H,試問該程序段啟動執(zhí)行指令的實際地址是什么

10、?解:啟動執(zhí)行指令的實際地址PA97F0H×10H1B40H99A40H29 若堆棧段寄存器(SS)3A50H,堆棧指針(SP)1500H,試問這時堆棧頂?shù)膶嶋H地址是什么?解:棧頂?shù)膶嶋H地址(SS)×10H(SP)3A50H×10H1500H3BA00H211 將8086下列工作方式的特點填于表中。解: 特點方式 MN/MX處理器個數(shù)總線控制信號的產(chǎn)生最小方式接5V1個全部由8086產(chǎn)生最大方式接地 可達3個總線控制器8288產(chǎn)生213 有一32位的地址指針67ABH:2D34H存放在00230開始的存儲器中,試畫出它們的存放示意圖。解:示意圖如下地址內(nèi)容類型00

11、23034H偏移量002312DH00232ABH段基址0023367H221 列表填寫 8086/8088 的存儲器和I/O 的保留空間及其用途:解:8086/8088保留空間用途存儲器00000H0007FHFFFF0HFFFFFH中斷向量表系統(tǒng)復位啟動I/OF8HFFHIntel 保留使用31 指令由 操作碼 字段和 操作數(shù) 字段組成。8086的指令長度在 16個字節(jié) 范圍。32 分別指出下列指令中源操作數(shù)和目的操作數(shù)的尋址方式。若是存儲器尋址,試用表達式表示出EA?PA?(1) MOV SI,2100H (4) ADC AX,BXSI (7)MOV AX,ES:BX解(1)源操作數(shù)是立

12、即數(shù)尋址,目的操作數(shù)是寄存器尋址。 (4)源操作數(shù)是基址變趾尋址,EA(BX)(SI),PA16×(DS)(BX)+(SI), 目的操作數(shù)是寄存器尋址。 (7)源操作數(shù)是寄存器間接尋址,其中EA(BX),PA16×(ES)(BX), 目的操作數(shù)是寄存器尋址。33 已知 8086 中一些寄存器的內(nèi)容和一些存儲單元的內(nèi)容如圖320所示,試指出下列指令執(zhí)行后,AX中的內(nèi)容(即(AX)?)。(1)MOV AX,2010H (2) MOV AX,BX (3) MOV AX,1200H(4) MOV AX,BX(5)MOV AX,1100HBX (6)MOV AX,BXSI (7)MO

13、V AX,1100HBX+SI(8)LEA AX,SI12H30100H30101H30102H30103H31200H31201H31202H312-3H B7H4CH78H34H65H2AH56HM0100HBXSIDS3000H0002HCPU 1CPU CPU CPU解:(1)(AX)2010H(2)(AX)0100H(3)(AX)4C2AH(4)(AX)3412H (5)(AX)4C2AH (6)(AX)7856H (7)(AX)65B7H (8)(AX)0002H34 已知(AX)2040H,(DX)380H,端口(PORT)(80H)1FH,(PORT1)45H,執(zhí)行下列指令后,

14、指出結(jié)果等于?解:(1)OUTDX,AL;端口(DX)40H(2)OUTDX,AX;端口(DX)40H,(DX1)20H(3)INAL,PORT;(AL)1FH(4)INAX,80H;(AX)451FH(5) OUTPORT1,AL;端口(PORT1)40H(6) OUTPORT1,AX;端口(PORT1)40H 端口(PORT11)20H35 已知:(SS)0A2F0H,(SP)00C0H,(AX)8B31H,(CX)0F213H,試畫出下列指令執(zhí)行到位置1和位置2時堆棧區(qū)和SP指針內(nèi)容的變化示意圖。圖中應標出存儲單元的實際地址PA。PUSHAXPUSHCX;位置1POPF;位置2 8BH3

15、1HF2H13H 位置1棧頂0A2F0HSSSP0A2FBCH00BCH位置2棧頂SP0A2F0H0A2FBEHSS00BEH0A2FC0H37 已知存儲器數(shù)據(jù)段中的數(shù)據(jù)如圖321所示。閱讀下列兩個程序段后,回答:1. 每個程序段的運行結(jié)果是什么?2. 兩個程序段各占多少字節(jié)的內(nèi)存,執(zhí)行時間是多少?ACH68H63HA0H84H52H22H58H28H16H41H48H M解:DSNUM1(1)LEASI,NUM1;42T+6TMOVAX,SI;210TADDAX,4SI;39T+9TMOV8SI,AX;310TADDSI,2;34TNUM2MOVAX,SI;210TADCAX,4SI;39T

16、+9TMOV8SI,AX;310T總計23個字節(jié),84個時鐘周期運行結(jié)果如圖中SUM所示。(2)SUMMOVAX,NUM1;310TADDAX,NUM2;49T=6TMOVSUM,AX;310TMOVAX,NUM1+2;310TADCAX,NUM2+2;49T+6TMOVSUM+2,AX;310T總計20個字節(jié),70個時鐘周期??梢?1. 兩個程序運行結(jié)果相同。 2. 第二個程序占20個字節(jié),比前者少3個字節(jié),運行時間比前者少14個時鐘周期。311 已知數(shù)據(jù)如圖321所示,低位在前,按下列要求編寫程序段: 1. NUM1 和 NUM2 兩個字數(shù)據(jù)相乘(均為無符號數(shù)),乘積放在SUM開始的單元。

17、解:MOVAX,NUM1MULWORD PTR NUM2MOVSUM,AXMOVSUM+2,DX2. NUM1 和 NUM2 兩個字數(shù)據(jù)相乘(均為帶符號數(shù)),乘積放在SUM開始的單元。解:MOVAX,NUM1IMULWORD PTR NUM2MOVSUM,AXMOVSUM+2,DX3. NUM1單元的字節(jié)數(shù)據(jù)除以13(均為無符號數(shù)),商和余數(shù)依次放入SUM開始的兩個字單元。解:MOVAL,NUM1MOVAH,0MOVCL,13DIVCLMOVSUM,AX4. NUM1字單元的字數(shù)據(jù)除以NUM2字單元的字,商和余數(shù)依次放入SUM開始的兩個字單元。MOVAX,NUM1MOVDX,0MOVCX,NU

18、M2DIVCXMOVSUM,AXMOVSUM+2,DX313 已知(AL)0C4H,DATA單元中內(nèi)容為5AH,寫出下列每條指令單獨執(zhí)行后的結(jié)果。 ANDAL,DATA;(AL)40H ORAL,DATA;(AL)0DEH XORAL,DATA;(AL)9EH NOTDATA;(DATA)0A5H ANDAL,0FH;(AL)04H ORAL,01H;(AL)0C5H XORAL,0FFH;(AL)3BH TESTAL,80H;(AL)0C4H所有指令執(zhí)行后都對標志寄存器有影響。319 寫出下面指令序列完成的數(shù)學計算是什么?解:MOVCL,3;(CL)3SHLAX,CL;(AX)(AX)

19、15;8SHLBL,CL;(BL)(BL)×8SHLCX,CL;(CX)(CX)×8,此時(CL)18HSHLDH,CL;DH算術(shù)左移24位后(DH)0,CF0320 寫出能替代下列重復操作指令完成同樣功能的 的指令序列1. REPMOVSW2. REPCMPSB3. REPSCASB4. REPLODSW解:1AGAIN:MOVSW3 AGAIN:SCASBDECCX DEC CXJNZAGAINN JNZ AGAIN2AGAIN: CMPSB 4 AGAIN:LODSW DECCX DEC CXJNZ AGAIN JNZ AGAIN323 下面兩條短轉(zhuǎn)移指令的轉(zhuǎn)移地址A

20、DDR1和ADDR2分別是多少(用十六進制表示)?1.0220 EB 0A JMP ADDR12.0230 EB F7 JMP ADDR2解:JMP ADDR1 的下一條指令的地址偏移為0222H,0222H0AH022CH。ADDR1地址偏移量為022CH。 JMP ADDR2下一條指令的地址偏移量為0232H,0232H0FFF7H0229H。ADDR2地址偏移量為0229H。327試編寫一個程序段,能完成下列數(shù)學表達式的功能。 1(X1)X 0 (1<X<1) 1 (X1)解:設帶符號數(shù)(WORD)在AX中,程序段如下GETX:TESTAX,AXJNSTZEROMOVAX,0

21、FFFFHJMPTENDTZERO:JZTENDMOVAX,1TEND:RET328 8086的中斷機構(gòu)中共允許256級中斷,其專用中斷有5個,分別為類型0中斷(除數(shù)為0的中斷)、類型1中斷(單步中斷)、類型2中斷(非屏蔽中斷NMI)、類型3中斷(斷點中斷)和類型4中斷(溢出中斷)。330 用DOS功能調(diào)用編寫一個程序,能將317題中的結(jié)果在屏幕上顯示出來。解:MOVCL,4MOVAL,87HMOVBL,ALSHRBL,CLANDAL,0FHORAL,30HMOVDL,ALMOVAH,2INT21HANDBL,0FHORBL,30HMOVDL,BLINT21H42 計算下列表達式的值(設A15

22、0,B120,G12 )解:1. A1*100+B1=50*100+20=50202. A1 MOD G1+B1=50 MOD 2 +20=203. (A1+2)*B1-2=(50+2)*20-2=10384. B1/3 MOD 5=20/3 MOD 5=15.(A1+3)*(B1 MOD G1)(503)*(20 MOD 2)06. A1 GE G1= 50 GE 2 =11111111B7. B1 AND 7=20 AND 7= 48. B1 SHL 2 + G1 SHR 1= 20 SHL 2 + 2 SHR 1= 8143 已知數(shù)據(jù)段定義如下,設該段從03000H開始:DSEGSEGM

23、ENTARRAY1DB2 DUP(0,1,?)ARRAY2DW100 DUP(?)FHZEQU20HARRAY3DB10 DUP(0,1,4 DUP (2),5)DSEGENDS試用分析算符OFFSET,LENGTH,SIZE,SEG,TYPE 求出 ARRAY1,ARRAY2,ARRAY3的段、偏移量和類型,以及它們的LENGTH和SIZE。解:求段:SEGARRAY1=0300HSEGARRAY2=0300HSEGARRAY3=0300H求偏移量:OFFSETARRAY1=0000HOFFSETARRAY2=0006HOFFSETARRAY3=00EEH求類型:TYPE ARRAY1=1T

24、YPE ARRAY2=2TYPE ARRAY3=1求LENGTH:LENGTHARRAY1=6LENGTHARRAY2=100LENGTHARRAY3=70求SIZE:SIZE ARRAY1=6SIZE ARRAY2=200SIZE ARRAY3=7047 下述程序段執(zhí)行后,寄存器CX,SI的內(nèi)容是多少?ARRYDW20DUP(5)XOR AX,AXMOVCX,LENGTH ARRYMOVSI, SIZE ARRY TYPE ARRY解:(CX)20(SI)4023848 試定義一個結(jié)構(gòu),它應包括一個學生的下列信息:姓名、學號及三門課程的成績。然后給出3條結(jié)構(gòu)預置語句,將3個學生的情況送入3個

25、結(jié)構(gòu)變量中。解: DATASEGMENTSTUDENTSTRUCNAMEDB4 DUP(?)NODB?ENGDB?MATDB?PHYDB?STUDENTENDSS1STUDENT<ZHAN,20H,78H,95H,80H>S2STUDENT<WANG,21H,88H,91H,90H>S3STUDENT<LILI,22H,79H,75H,70H>DATAENDS49 試定義一條宏指令,它可以實現(xiàn)任一數(shù)據(jù)塊的傳送(假設無地址重疊),源地址、目的地址和塊長度作為參數(shù)處理。MOVDATAMACROSN,DN,CN,PNMOVAL,PNCLDTESTAL,#80HJZ

26、CONTSTDCONT:MOVSI,OFFSET SNMOVDI,OFFSETDNMOVCX,CNREPMOVS DN,SNENDM410 設VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤,并改正之。(1)ADD VAR1,VAR2 (2)SUB AL,VAR1 (3)JMP LABSI(4)JNZ VAR1 (5)JMP NEAR LAB (6)MOV AL,VAR2解:(1)MOVAX,VAR1 (2)MOV AH,0 (3)JMPOFFSET LAB SIADDAX,VAR2 SUB AX,VAR1 (4)MOV SI,VAR1 (5)JMP NEAR PTR LAB (

27、6)MOVAX,VAR2JNZ TARGET TARGET:JMPSI411 已知數(shù)據(jù)定義如下,問L1和L2等于多少?B1DB1,2,3,123B2DB0L1EQU $-B1L2EQU B2-B1解:$=7,$-B1=7-0=7即L1等于7L2=B2的偏移地址6-B1的偏移地址0=6415 用查表法將存放于數(shù)據(jù)段中的一個有序的十六進制數(shù)串(范圍:0FH)翻譯成ASCII碼表仍放于數(shù)據(jù)段中。解:DATASEGMENTXDHEXDB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15TBASCIIDB0123456789ABCDEFDATAENDSCODESEGMENTASS

28、UMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVCX,16MOVSI,OFFSETXDHEXMOVBX,OFFSETTBASCIIMOVAH,0AGAIN:MOVAL,SIMOVDI,AXMOVAL,BX+DIMOVSI,ALINCSILOOPAGAINRETSTARTENDPCODEENDSENDSTART416 試編寫一程序,把X和Y中的大者存于BIG單元,若XY,則把其中之一存入BIG單元。解:DATASEGMENTXDW?YDW?BIGDW?DATAENDS;-CODESEGMENTA

29、SSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVAX,XCMPAX,YJNCSTOBIG;無符號數(shù)判斷,有符號數(shù)用JGEMOVAX,YSTOBIG:MOVBIG,AXRETSTARTENDPCODEENDSENDSTART417試編寫一程序,比較兩個字符串STRING1和 STRING2 所含字符是否完全相同,若相同顯示 “MATCH”,反之,則顯示“NO MATCH”。解:DATASEGMENTSTRING1DB50 DUP(?)STRING2DB50 DUP(?)MATDBMATCH$

30、NMATDBNO MATCH$DATAENDS;-CODEEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AXMOVES,AXMOVCX, LENGTH STRING1LEASI, STRING1LEADI, STRING2LEADX,MATCLDREPECMPSBJEPLAYLEADX,NMATPLAY:MOVAH,09INT21HRETSTARTENDPCODEENDSENDSTART419 假設已編好5個樂曲程序,它們的入口地址(含段首趾和偏移地址)存放在數(shù)據(jù)段中

31、的跳越表MUSICTAB中。試編寫一個管理程序,其功能是:根據(jù)鍵盤輸入的樂曲編號 0004 轉(zhuǎn)到所點樂曲入口,執(zhí)行樂曲程序。解:DATASEGMENTMUSICTABDWOFFSET MUSIC0,SEG MUSIC0DWOFFSET MUSIC1,SEG MUSIC1DWOFFSET MUSIC2,SEG MUSIC2DWOFFSET MUSIC3,SEG MUSIC3DWOFFSET MUSIC4,SEG MUSIC4DATAENDS;-CODEEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATA

32、MOVDS,AX;-KEYIN:MOVAH,1INT21HSUBAL,30HMOVCL,4ROLAL,CLMOVBL,ALMOV AH,1INT21HSUB AL,30HADD AL,BLMOV AH,0ADDAX,AXADDAX,AXLEA BX, MUSICTABMOV SI,AXJMP DWORD PTRBXSI;見教科書116頁, 段間間接尋址MUSIC0:MUSIC1: MUSIC2:MUSIC3: MUSIC4: EXIT:RETSTARTENDPCODEENDSENDSTART421 在數(shù)據(jù)段中存有一字符串(80個字符),以回車CR結(jié)束。編一程序統(tǒng)計此字符串的長度,并將它存入數(shù)據(jù)

33、區(qū)LENTH單元,也顯示在屏幕上。解:設字符串為STRING字節(jié)單元開始,程序采用DO_WHILE的循環(huán)結(jié)構(gòu),CX寄存器用作字符串長度計數(shù)。循環(huán)結(jié)束條件兩個:(1)找到CR,屏幕上顯示字符串長度LENTH。 (2)未找到CR,屏幕上顯示“ERROR”。DATASEGMENTSTRINGDB'12345678'DB0DHDB71 DUP(?)LENTHDB80 DUP(?)ERRDB'ERROR$'DATAENDS;-CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:PUSHDSMOVAX,0PUSH

34、AXMOVAX,DATAMOVDS,AXMOVES,AX;-MOVDI,OFFSET STRINGCLDMOVCX,80MOVAL,0DHREPNZSCASBJNZPLAYER MOV AX,80 SUB AX,CX MOV CL,10 DIV CL MOV DL,AL OR DL,30H PUSH AXMOVAH,2INT21H POP AX MOV DL,AH OR DL,30H MOV AH,02 INT 21HRETPLAYER:MOVDX,OFFSET ERRMOVAH,9INT21HRET;-MAINENDPCODEENDSENDSTART422 試用串操作指令將一個數(shù)組BLOCK

35、(均為字節(jié)數(shù))中的奇數(shù)和偶數(shù)分開存放。解:1設數(shù)組BLOCK在數(shù)據(jù)段,程序運行后把數(shù)組中的奇數(shù)存放在數(shù)據(jù)段數(shù)組PODATA、偶數(shù)存放在數(shù)據(jù)段數(shù)組PEDATA中。2程序分兩次掃描,第一次搜索奇數(shù),并存放于PODATA中、第二次搜索偶數(shù),并存放于PEDATA中。3 兩次搜索均用FOR語句結(jié)構(gòu)。DATA SEGMENTBLOCK DB 1,2,3,4,5,6,7,8,9,90,21,33COUNT EQU $-BLOCKPODATA DB COUNT DUP(?)PEDATA DB COUNT DUP(?)DATA ENDS;-CODE SEGMENTMAIN PROC FAR ASSUME CS:

36、CODE,DS:DATASTART: PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX;- MOV SI,OFFSET BLOCK MOV DI,OFFSET PODATA MOV CX,COUNTAGAIN: MOV AL,SI INC SI TEST AL,1 JZ ELOP MOV DI,AL INC DIELOP: LOOP AGAIN;- MOV SI,OFFSET BLOCK MOV DI,OFFSET PEDATA MOV CX,COUNTAGAIN1: MOV AL,SI INC SI TEST AL,1 JNZ ELOP1 MOV

37、DI,AL INC DIELOP1: LOOP AGAIN1;- RET;-MAIN ENDPCODE ENDS;- END START423 編一個程序,其功能是將一個字數(shù)組ARRAY中的正數(shù)和負數(shù)分開存放于以PLUS和MINNUS開始的單元中,并在屏幕上顯示出正數(shù)和負數(shù)的個數(shù)。設該數(shù)組長度放在數(shù)組的第一個字單元中。解: 搜索采用FOR 語句結(jié)構(gòu)循環(huán)程序。 程序每次循環(huán)采用正負數(shù)分支完成該次正數(shù)與負數(shù)分離存儲。DATA SEGMENTARRAY DW 10H,8 DUP(1FH,-12)PLUS DW 10H DUP(?,?)MINUS DW 10H DUP(?,?)DATA ENDS;-C

38、ODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX;- MOV SI,OFFSET ARRAY MOV DI,OFFSET PLUS MOV BX,OFFSET MINUS LODSW MOV CX,AXAGAIN: LODSW TEST AX,8000H JNZ MINSPLS: STOSW LOOP AGAINJMPCOMOUTMINS: XCHG BX,DI STOSW XCHG BX,DI LOOP AGAINCOM

39、OUT: MOV AX,ARRAY SUB DI,OFFSET PLUS SUB BX,OFFSET MINUS MOV AX,DI MOV CL,10 DIV CL OR AL,30H OR AH,30H MOV DL,AL PUSH AX MOV AH,2 INT 21H POP AX MOV DL,AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV DL,0AH INT 21H MOV AX,BX MOV CL,10 DIV CL OR AL,30H OR AH,30H MOV DL,AL PUSH AX MOV AH,2 INT 21

40、H POP AX MOV DL,AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H RET;-MAIN ENDPCODE ENDS END START424 現(xiàn)有一組無序的字:25,46,3,75,5,30,要求對它們進行排序,其算法如圖431所示。試編寫完成此功能的程序。Y(DI)=0?開始設計數(shù)1: (CX)N1設計數(shù)2計數(shù)1, (DI)(CX)設指針(SI)0ei>ei+1?(CX)0?交換: eiei+1計數(shù)器2計數(shù)結(jié)束計數(shù)器1計數(shù)YYNNN注:LODSW指令SI自動2為簡化程序BX改為SI解:DATA SEGMENTARRAY DW 25,46,3,75,-5,30COUNT EQU $-ARRAYDATA ENDS;-STACK SEGMENT PARA STACK 'STACK' DB 60 DUP(?)S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論