2020年整合匯編語(yǔ)言程序設(shè)計(jì)習(xí)題-答案名師精品資料_第1頁(yè)
2020年整合匯編語(yǔ)言程序設(shè)計(jì)習(xí)題-答案名師精品資料_第2頁(yè)
2020年整合匯編語(yǔ)言程序設(shè)計(jì)習(xí)題-答案名師精品資料_第3頁(yè)
2020年整合匯編語(yǔ)言程序設(shè)計(jì)習(xí)題-答案名師精品資料_第4頁(yè)
2020年整合匯編語(yǔ)言程序設(shè)計(jì)習(xí)題-答案名師精品資料_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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)介

1、4.1 分析執(zhí)行下列指令序列后的結(jié)果:1)【答】2)【答】3)MOVMOVAND (AX)=0034HMOVANDORXORNOT (AL)=00100101BMOVMOVMOVMOVMOVAGAIN: INCAX , 1234HBX , 00FFHAX , BXAL , 01010101BAL , 00011111BAL , 11000000BAL , 00001111BALDL ,05HAX , 0A00H DS,AXSI,0HCX ,0FHSI;(AL)=00010101B;(AL)=11010101B;(AL)=11011010BCMP SI,DLLOOPNE AGAINHLT本程序?qū)?/p>

2、現(xiàn)了什么功能?05H?!敬稹吭谝?0A001H開(kāi)始的 15 個(gè)單元中查找4)MOVAX,DSEGADDRMOVDS, AXMOVES,AXMOVSI, OFFSET B1ADDRMOVDI,OFFSET B2ADDRMOVCX,NCLDREPMOVSBHLT本程序?qū)崿F(xiàn)了什么功能?【答】 將 B1ADDR中N個(gè)字節(jié)數(shù)據(jù)傳送到B2ADDR 開(kāi)始的 15 個(gè)存儲(chǔ)單元5)MOVAX, 0HMOVDS,AXMOVES, AXMOVAL,05HMOVDI,0A000HMOVCX,0FHCLDAGAIN: SCASBLOOPNE AGAINHLT本程序?qū)崿F(xiàn)了什么功能?答】從地址 0A000H 開(kāi)始的 15

3、個(gè)單元中查找字節(jié)型數(shù)據(jù) 05H ,用條件循環(huán) LOOPNZ ,控制數(shù)據(jù) 05H 的查找。4.2 閱讀程序1).CLDLEADI , 0100HMOVCX, 0080HXORAX, AXREPSTOSW本程序?qū)崿F(xiàn)了什么功能?答】將 DS 中起始地址為 0100H 的 128 個(gè)字節(jié)單元清零。2). MOV AL, 08H;(AL)=00010000HSAL AL,01H MOV BL, ALMOVCL ,02HSALAL,CL;(AL)=01000000HADDAL,BL;(AL)=01010000H本程序?qū)崿F(xiàn)了什么功能?答將AL中的內(nèi)容乘以10。4.3試分析下列程序完成什么功能?MOVDX,3

4、F08HMOVAH,0A2HMOVCL,4SHLDX,CL;(DX)=F080HMOVBL,AHSHLBL,CL;(BL)=20HSHRBL,CL;(BL)=02HORDL,BL;(DL)=82H答將DX中的低4位數(shù)據(jù)8H分離岀來(lái),將 AH中的低4位數(shù)據(jù)2H分離岀來(lái),合并為存放在DL。4.4 已知程序段如下:MOVAX , 1234HMOVCL,4ROLAX,CLDECAXMOVCX,4MULCX試問(wèn):(1)每條指令執(zhí)行后, AX寄存器的內(nèi)容是什么?( 2)每條指令執(zhí)行后, CF及ZF的值分別是什么?(3)程序運(yùn)行結(jié)束時(shí), AX及DX寄存器的值為多少?答MOVAX , 1234H;(AX)=1

5、234H, CF=SF=ZF=0MOVCL,4ROLAX,CL;(AX)=2341H ,CF=1,SF=ZF=0DECAX;(AX)=2340H, CF=1,SF=ZF=0MOVCX,4MULCX;(AX)= 8000H ,CF=ZF=0,SF=1,DX=04.5試分析下列程序段:ADDAX,BXJNCL2SUBAX,BXJNCL382H如果,SF(1)14C6H80DCH(程序轉(zhuǎn)向L2)(2)B568H54B7H(程序轉(zhuǎn)向SHORTL5 )SH0RTL5的內(nèi)容給定如下:BXJMPAX、BXAX問(wèn)該程序在上述情況下執(zhí)行后,程序轉(zhuǎn)向何處?答(1)程序轉(zhuǎn)向L2。(2)程序轉(zhuǎn)向 SH0RTL5。4.

6、6以下為某個(gè)數(shù)據(jù)段,試問(wèn)各個(gè)變量分別占多少字節(jié),DATASEGMENTVAR1DW 9;2字節(jié)VAR2DD 10 DUP( ? ),2;44字節(jié)VAR3DB 2 DUP( ?, 10 DUP( ?);22字節(jié)VAR4DB ' HOW ARE YOU';11字節(jié)DATAENDS該數(shù)據(jù)段共占多少字節(jié)?79字節(jié)。VAR1DB 10,2;2字節(jié)VAR2DW 5DUP (?),0;12字節(jié)VAR3DB ' HOW ARE YOU?', $';13字節(jié)VAR4DD -1,1,0;2字節(jié)4.7下列語(yǔ)句在存儲(chǔ)器中分別為變量分配多少字節(jié)空間?并畫岀存儲(chǔ)空間的分配圖Vari

7、 Var2 Var3Var4Var1Var2Var3Var4【答】該數(shù)據(jù)段共占10?HFFH2?OFFH?WFFH?FFH?A01H?R00H?E00H?00H?Y00H?O00H0U00H0?00H$4.8 編寫一段程序,比較兩個(gè)5字節(jié)的字符串 OLDS和NEWS,若相同,在 RESULT置0,否則置0FFH。【答】 參考程序:MIANPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVDX,0XORAX, AXMOVBX, OFFSET TABLEMOVCX, 4CLCLP:ADDAX, BXJNCDONINCDXCLCDON:INCBXIN

8、CBXLOOPLP;清 AX;求和;指向下一個(gè)數(shù);未加完,繼續(xù)OLDSDB 1,2,3,4,5NEWSDB 1,2,3,4,5RESULTDB ?MOVSI,OFFSET OLDSMOVDI,OFFSET NEWSMOVCX,10CLDREPCMPSBJNZNOEQUMOVAL,0JMPOUTPTNOEQU:MOVAL,0FFHOUTPT:MOVRESULT,ALSTOP:JMPSTOP4.9編程求和Y=A1 + A2 +.+ A100 。其中【答】參考程序:;串不相等轉(zhuǎn)Ai為字節(jié)變量DATA SEGMENTTABLEDW12, 3, 45,YALDW?YAHDW?DATAENDSMOVYAL

9、,AX;存和MOVYAH,DXMAINENDPCODEENDSENDSTART4.10內(nèi)存中以FIRST 和 SECOND 開(kāi)始的單元中分別存放著兩個(gè)16 位組合的十進(jìn)制 (BCD 碼)數(shù),低位在前。編程序求這兩個(gè)數(shù)的組合的十進(jìn)制和,并存到以 THIRD 開(kāi)始的單元。【答】參考程序: 1325+9839=?DATASEGMENTFIRST DB05H,02H,03H,01H ;SECOND DB09H,03H, 08H,09H;THIRD DB20 DUP(?)DATAENDSSTACKSEGMENTST1 DB100 DUP( SA')TOP1 EQULENGTHST1STACKEN

10、DSCODESEGMENTASUMMECS:CODE,DS:DATA,SS:STACKMAINPROC FARSTART:MOVAX, DAT;初始化數(shù)據(jù)段MOVDS, AXMOVAX, STACK;初始化堆棧段MOVSS, AXMOVAX, TOP1MOVSP, AXMOVCX, 4;計(jì)算 4 次MOVBX, OFFSETDAT1;取數(shù)據(jù)地址MOVSI , OFFSETDAT2;取數(shù)據(jù)地址MOVDI , OFFSET SUM ;取結(jié)果地址MOVAH, 00H;將暫存標(biāo)志的 AH 清 0DON1:MOVAL, BX;取第一個(gè)數(shù)SAHF;將 AH 中的標(biāo)志送標(biāo)志寄存器ADCAL, DI;與第二個(gè)

11、數(shù)帶進(jìn)位加AAA;十進(jìn)制校正LAHF;將標(biāo)志寄存器內(nèi)容送 AHORAL, 30H;計(jì)算值拼成 ASCII 碼MOVDI, AL;存結(jié)果的 ASCII 碼INCBX;指向第一個(gè)數(shù)的下一位INCSI;指向第二個(gè)數(shù)的下一位INCDI;指向結(jié)果單元的下一位LOOPDON1;未計(jì)算完,繼續(xù)ANDAH, 01H;將最高位的進(jìn)位標(biāo)志送 AHORAH, 30H; 最高位的進(jìn)位位拼成 ASCII 碼MOVDI, AH;存結(jié)果的最高位MOVAH, 02H;調(diào)用 DOS 的 02H 功能顯示MOVCX, 05H;顯示數(shù)據(jù)的位數(shù)DON2:MOVDL,DI; 顯示數(shù)據(jù)送 DLINT21H;顯示DECDI;顯示數(shù)據(jù)所在存

12、儲(chǔ)單元加一LOOPDON2; 未顯示完 ,繼續(xù)MOVAH, 4CH;返回 DOSINT21HRETMAIN ENDPCODE ENDSEND START4.11 試編程序,統(tǒng)計(jì)由 40000H 開(kāi)始的 16K 個(gè)單元中所存放的字符“ A “的個(gè)數(shù),并將結(jié)果存 放在 DX 中。【答】 參考程序DATASEGMENTDATA1DB'DFASFAAAFDFAAFFFA'COUNTEQU$-DATA1DATAENDSSTACKSEGMENTSTADB 100 DUP (?)TOPEQULENGTH STASTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA

13、,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVCX,COUNTMOVDX,0LEASI,DATA1MOVBL,'A'NEXT :CMPSI,BLJNZOTHERINCDXOTHER:INCSILOOPNEXTCODEENDSENDBEGIN4.12 統(tǒng)計(jì)數(shù)據(jù)塊中正數(shù)與負(fù)數(shù)的個(gè)數(shù),并將正數(shù)與負(fù)數(shù)分別送到兩個(gè)緩沖區(qū)。【答】 參考程序:BLOCKDB -1,-3,5,6,-2,0,20,10PLUS_D DB 8 DUP(?);正數(shù)緩沖區(qū)MINUS_D DB 8 DUP(?);負(fù)數(shù)緩沖區(qū)

14、PLUSDB 0MINUSDB 0MOVSI,OFFSET BLOCKMOVDI,OFFSET PLUS_DMOVBX,OFFSET MINUS_DMOVCX, 8;數(shù)據(jù)個(gè)數(shù)送 CXGOON:LODSB;AL SITESTAX, 80HJNZJMIUS; 為負(fù)數(shù),轉(zhuǎn)INCPLUS;正數(shù)個(gè)數(shù)加一STOSB;DI AL,傳正數(shù)JMPAGAINJMIUS:INCMINUS; 負(fù)數(shù)個(gè)數(shù)加一XCHGBX, DISTOSB;送負(fù)數(shù)到緩沖區(qū)XCHGBX, DIAGAIN: DECCXGOONJNZ4.13 編寫一個(gè)子程序?qū)?轉(zhuǎn)換成ASCIIAX 中的十六進(jìn)制數(shù) 提示: 1 )、 AX 中的數(shù)從左到右,轉(zhuǎn)換成

15、 出的一個(gè)十六進(jìn)制數(shù)置 BL 中;2)、 0 9 的 ASCII 碼: 30 39HASCII 碼 , 存于 ADR 開(kāi)始的四個(gè)單元中。 碼,用循環(huán)左移 ROL 和 AND 指令,把提 的 ASCII 碼: 41H 46H 。( 先把每個(gè)數(shù)加 30H【答】參考程序:DATASEGMENTADRDB 4 DUP(?)DATAENDSCODESEGMENTMAINPROCFARASSUME,判斷是否為數(shù)字 09 ?若是AF,再加07H ,得字母的ASCII碼。)START:MOVAX,7EC3HLEASI, ADRMOVDL,4AGAIN:MOVBX,AXANDBX,000FHADDBL,30HC

16、MPBL,'9'JGADUSTJMPSTOREADUST:ADDBL ,07HSTORE:MOVSI,BLINCSIMOVCL,4ROLAX,CLDECDLJNZAGAINMAINENDPCODE ENDSEND START4.14 編寫一個(gè)子程序?qū)X 中的CS:CODE,DS:DATA; 假設(shè) ax 中存放 7ec3h中?!敬稹繀⒖汲绦颍? 進(jìn)制數(shù) ,轉(zhuǎn)換成 10 進(jìn)制 ASCII 碼 , 存于 ADR 開(kāi)始的五個(gè)單元BIN DATADATA STACKSTACK CODESTART:EQU 5555H; 假設(shè)二進(jìn)制數(shù)為 5555H SEGMENTADR DB 4 DUP(

17、?) ENDS SEGMENT STADB 100 DUPTOPEQU LENGTHENDS SEGMENT ASSUME CS:CODE,DS:DATA MOV MOV MOV MOV MOV MOV MOV LEA MOV CALL MOV CALL MOV CALL MOV CALL MOVAX,DATA DS,AX AX,STACK SS,AX AX,TOP SP,AX AX,BIN BX,ADR CX , 10000D BINTODEC CX,1000D BINTODEC CX,100D BINTODEC CX,10D BINTODEC CX,01D(?)STA,SS:STACKMA

18、IN ;十進(jìn)制轉(zhuǎn)二CALLMOVINT ENDP進(jìn)制,BINTODECAX,04CH; 返回 DOS21H完成一位運(yùn)算,十進(jìn)制存于ax 中,結(jié)果存于bx 所指向的地址中BINTODECPROCNEARMOVDX,0DIVCXADDAL,30HMOVBX,ALMOVAX,DXINCBXRETBINTODECENDPCODEENDSENDSTART4.15 編寫一個(gè)子程序,對(duì) AL 中的數(shù)據(jù)進(jìn)行偶校驗(yàn),并將經(jīng)過(guò)校驗(yàn)的結(jié)果放回 AL 中?!敬稹繀⒖汲绦颍篔IAOYANPROCFARMOVAL , 1001110BORAL, ALJNPNEXTMOVAL,0JMPDONENEXT:MOVAL,1DON

19、E:MOVAH,04CHINT21HJIAOYANENDP4.16 從 2000H 單元開(kāi)始的區(qū)域,存放 100 個(gè)字節(jié)的字符串,其中有幾個(gè)$符號(hào) (ASCII 碼為 24)找出第一個(gè) $符號(hào),送AL 中,地址送 BX ?!敬稹繀⒖汲绦颍篠EARCH PROCFARMOVDI,2000HMOVCX,100MOVAL,24HCLDREPNZSCASBJNZSTOPDECDIMOVBX,DIMOVAL,DISTOP:RETSEARCHENDP4.17 用串操作指令實(shí)現(xiàn):先將 100H 個(gè)數(shù)從 2170H 單元處搬到 1000H 單元處 ,然后從中檢索等于AL 中字符的單元 ,并將此單元換成空格字符

20、。【答】參考程序:MOVAL,24HMOVSI,2170HMOVDI,1000HMOVCX,100HCLDDO:REPMOVSBMOVDI,1000HMOVCX,100HCLDREPNZSCASBDECDIMOVDI,20HINCDICMPCX,0JNZDOHLT,并放到 AL 中,假設(shè)這 60 個(gè)元素放在 DATA1 開(kāi)始的4.18 從 60H 個(gè)元素中尋找一個(gè)最大的值 單元中。【答】參考程序:DATA SEGMENTDATA1 DB 0,1,2,3,4,5,6,7,8,9 ;DATA ENDSSTACK SEGMENTSTA DB 20 DUP (?) TOP EQU LENGTH STA

21、STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXMOVCX,10MOVAL,0LEABX,DATA1AGAIN:CMPAL,BXJGENEXT;大于等于轉(zhuǎn)移MOVAL,BXNEXT :INCBXLOOPAGAINMOV AH,4CHINT 21HCODE ENDSEND START4.19 排序程序設(shè)計(jì)【答】參考程序:把表中元素按值的大小升序排列。要求顯示排序前和排序后的數(shù)據(jù)DATA SEGMENT TAB DB &#

22、39;8095554' N=$-TAB OK DB 0DH,0AH,'OK!$'DATA ENDSSTACK SEGMENTSTADB 20 DUP(?)TOPEQU L ENGTH STASTAC ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTAR:MOVAX,DATAMOVDS,AX;初始化數(shù)據(jù)段MOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXCALLARRAYDO:MOVAH,4CHINT21H; 返回 DOSARRAYPROCNEARPUSHAXPUSHPUSH PUSH MOV MOV

23、 XORUPPER: OR JZ MOV MOV SUB MOVINNER: MOV INC CMP JBE XCHG MOV MOVDON: LOOP INC DEC CMP JNZDISP: MOV MOV INT POP POP POP POP RET ARRAY ENDP CODE ENDSEND STARBXCXDXDL,N-1;置外循環(huán)次數(shù)DH,1;設(shè)有交換標(biāo)志BX, BXDH,DHDISP;無(wú)交換 ,已排好序 ,退出DH,0;無(wú)交換CX,N-1CX,BX;CX=CX-I 內(nèi)循環(huán)次數(shù)SI,0;指向表首AL,TABSI;字符送 ALSI;指向下個(gè)字符AL,TABSI;比較表中相鄰字符

24、DON;小于AL,TABSI;否則交換 ,大字符下TABSI-1,AL ;小字符上浮DH,1;有交換 ,DH=1INNER;內(nèi)循環(huán)結(jié)束 ?CX-1BX;一次內(nèi)循環(huán)完成 ,加一DL;外循環(huán)次數(shù)減一DL,0UPPER;外循環(huán)次數(shù)非零 ,繼續(xù)DX,OFFSET TABAH,09H21H;顯示排好序的字符DXCXBXAX4.20 編寫一段程序,接收從鍵盤輸入的 10 個(gè)數(shù),輸入回車符表示結(jié)束,然后將這些數(shù)加密后 存于 BUFF 緩沖區(qū)中。加密表為:輸入數(shù)字:0,1,2,3,4,5, 6,7,8,9;密碼數(shù)字: 7, 5,9,1,3,6,8,0,2,4【答】參考程序:DATA SEGMENTTABLE

25、DB 7,5,9,1,3,6,8, 0,2,4;密碼表BUFF DB 10 DUP(?) ,'$' 存放轉(zhuǎn)換數(shù)字的緩沖區(qū)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTMOVMOVMOVLEAMOVRE1: MOV AH , INT CMP JZAX,STACKSS,AXDI , OFFSET BUFFBX , TABLECX ,0DH1 ;從鍵盤輸入21HAL , 0DHDONESUB AL,30HXLATADDAL,30HMOVDI , ALINCDILOOPRE1M

26、OVDX , OFFSET BUFFMOVAH , 09HINT21HDONE:MOV AH,4CHINT 21HCODE ENDS4.21 編程序從鍵盤接收一個(gè) 4 位 16 進(jìn)制數(shù),轉(zhuǎn)換為 10 進(jìn)制數(shù)后,送顯示?!敬稹克惴?:先將輸入的十六進(jìn)制數(shù)保存到 BX 中, BX 中的數(shù)范圍在 +32767-32768 之間,先檢 查 BX 中的符號(hào)位,以決定輸出“ +”還是“ - ”;若是負(fù)數(shù),應(yīng)先求補(bǔ),得到原碼后即可與正數(shù) 作統(tǒng)一處理。 轉(zhuǎn)換方法為將被轉(zhuǎn)換的二進(jìn)制數(shù)先除; 以 10000 ,商即為萬(wàn)位數(shù), 再將余數(shù)除以 1000, 商為千位數(shù),依此類推,求出百、十位數(shù),剩的為個(gè)位數(shù)。最后,將各

27、個(gè)數(shù)加上30H ,即成為對(duì)應(yīng)字符。DATA SEGMENTOUT_ASC_SUMDATA ENDSdb 6 dup(?),'$'STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS :CODE,DS:DATA,SS:STACKSTART: MOVMOV MOV MOV MOV MOV MOV MOV MOVRE1: MOVAH ,INT CALL SHL ADD DEC JNZ MOV MOV CMP JGE NEG MOVL4: CWDMOV DIV ADD 有效部分在 alMOV MOV CWD MOV

溫馨提示

  • 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)論