匯編語言第三章答案_第1頁
匯編語言第三章答案_第2頁
匯編語言第三章答案_第3頁
匯編語言第三章答案_第4頁
匯編語言第三章答案_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

匯編語言第三章答案匯編語言第三章答案匯編語言第三章答案匯編語言第三章答案編制僅供參考審核批準(zhǔn)生效日期地址:電話:傳真:郵編:給定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什么

(1)立即尋址(2)直接尋址(3)使用BX的寄存器尋址(4)使用BX的簡接尋址(5)使用BX的寄存器相對尋址(6)基址變址尋址(7)相對基址變址尋址答:(1)操作數(shù)在指令中,即立即數(shù);(2)EA=D=7237H;(3)無EA,操作數(shù)為(BX)=637DH;(4)EA=(BX)=637DH;(5)EA=(BX)+D=0D5B4H;(6)EA=(BX)+(SI)=8E18H;(7)EA=(BX)+(SI)+D=1004FH;超過了段的邊界,最高進位位丟失,因此EA=004FH。試根據(jù)以下要求寫出相應(yīng)的匯編語言指令(1)把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中。(2)用寄存器BX和SI的基址變址尋址方式把存儲器中的一個字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL寄存器中。(3)用寄存器BX和位移量0B2H的寄存器相對尋址方式把存儲器中的一個字和(CX)相加,并把結(jié)果送回存儲器中。(4)用位移量為0524H的直接尋址方式把存儲器中的一個字與數(shù)2A59H相加,并把結(jié)果送回存儲單元中。(5)把數(shù)0B5H與(AL)相加,并把結(jié)果送回AL中。答:(1)ADDDX,BX(2)ADDAL,[BX][SI](3)ADD[BX+0B2H],CX(4)ADDWORDPTR[0524H],2A59H(5)ADDAL,0B5H寫出把首地址為BLOCK的字?jǐn)?shù)組的第6個字送到DX寄存器的指令。要求使用以下幾種尋址方式:(1)寄存器間接尋址(2)寄存器相對尋址(3)基址變址尋址答:(1)MOVBX,OFFSETBLOCKADDBX,(6–1)*2MOVDX,[BX](2)MOVBX,OFFSETBLOCK改為:MOVBX,(6-1)*2MOVDX,[BX+(6–1)*2]也可MOVDX,BLOCK[BX](3)MOVBX,OFFSETBLOCKMOVSI,(6–1)*2MOVDX,[BX][SI]現(xiàn)有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各條指令執(zhí)行完后AX寄存器的內(nèi)容。(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[1200H](4)MOVAX,[BX](5)MOVAX,1100[BX](6)MOVAX,[BX][SI](7)MOVAX,1100[BX][SI]答:(1)(AX)=1200H(2)(AX)=0100H(3)(AX)=4C2AH(4)(AX)=3412H(5)(AX)=4C2AH(6)(AX)=7856H(7)(AX)=65B7H給定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212AH,(224A0H)=0600H,(275B9H)=098AH,試為以下的轉(zhuǎn)移指令找出轉(zhuǎn)移的偏移地址。(1)段內(nèi)直接尋址(2)使用BX及寄存器間接尋址方式的段內(nèi)間接尋址(3)使用BX及寄存器相對尋址方式的段內(nèi)間接尋址答:(1)JMPNEARPTR5119H;(IP)=5119H+((IP)+03H)=7CDCH,物理地址PA=09CDCH(IP)+03H是JMPNEARPTR5119H指令的下一條指令的首地址。(2)JMPWORDPTR[BX];(IP)=((DS)*10H+(BX))=0600H,PA=02600H(3)JMPD[BX];(IP)=((DS)*10H+(BX)+D)=098AH,PA=0298AH設(shè)當(dāng)前數(shù)據(jù)段寄存器的內(nèi)容為1B00H,在數(shù)據(jù)段的偏移地址2000H單元內(nèi),含有一個內(nèi)容為0FF10H和8000H的指針,它們是一個16位變量的偏移地址和段地址,試寫出把該變量裝入AX的指令序列,并畫圖表示出來。答:MOVBX,[2000H];圖示如上所示。MOVAX,[2000H+2]MOVES,AXMOVAX,ES:[BX]在0624H單元內(nèi)有一條二字節(jié)JMPSHORTOBJ指令,如其中位移量為(1)27H,(2)6BH,(3)0C6H,試問轉(zhuǎn)向地址OBJ的值是多少

答:(1)OBJ=0624H+02H+27H=064DH(2)OBJ=0624H+02H+6BH=0691H(3)OBJ=0624H+02H+0C6H=05ECH;C6H對應(yīng)的負(fù)數(shù)為-3AH(向上轉(zhuǎn)移,負(fù)位移量)假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么其物理地址值是多少

(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,[100H](4)MOVAX,VAL(5)MOVAX,[BX](6)MOVAX,ES:[BX](7)MOVAX,[BP](8)MOVAX,[SI](9)MOVAX,[BX+10](10)MOVAX,VAL[BX](11)MOVAX,[BX][SI](12)MOVAX,VAL[BX][SI]答:(1)立即方式;操作數(shù)在本條指令中(2)寄存器尋址方式;操作數(shù)為(BX)=0100H(3)直接尋址方式;PA=20100H(4)直接尋址方式;PA=20050H(5)BX寄存器間接尋址方式;PA=20100H(6)附加段BX寄存器間接尋址方式;PA=21100H(7)BP寄存器間接尋址方式;PA=15010H(8)SI寄存器間接尋址方式;PA=200A0H(9)BX寄存器相對尋址方式;PA=20110H(10)BX寄存器相對尋址方式;PA=20150H(11)BX和SI寄存器基址變址尋址方式;PA=201A0H(12)BX和SI寄存器相對基址變址尋址方式;PA=201F0H在ARRAY數(shù)組中依次存儲了七個字?jǐn)?shù)據(jù),緊接著是名為ZERO的字單元,表示如下:ARRAYDW23,36,2,100,32000,54,0ZERODW

(1)如果BX包含數(shù)組ARRAY的初始地址,請編寫指令將數(shù)據(jù)0傳送給ZERO單元。(2)如果BX包含數(shù)據(jù)0在數(shù)組中的位移量,請編寫指令將數(shù)據(jù)0傳送給ZERO單元。答:(1)MOVAX,[BX+(7-1)*2]MOV[BX+(7)*2],AX(2)MOVAX,ARRAY[BX]MOVARRAY[BX+2],AX如TABLE為數(shù)據(jù)段中0032單元的符號名,其中存放的內(nèi)容為1234H,試問以下兩條指令有什么區(qū)別指令執(zhí)行完后AX寄存器的內(nèi)容是什么

MOVAX,TABLELEAAX,TABLE答:MOVAX,TABLE是將TABLE單元的內(nèi)容送到AX,(AX)=1234HLEAAX,TABLE是將TABLE單元的有效地址送到AX,(AX)=0032H執(zhí)行下列指令后AX寄存器中的內(nèi)容是什么

TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032HENTRYDW3┇MOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,[BX]答:(AX)=1E00H(TABLE的存儲方式如右圖所示)下列ASCII碼串(包括空格符)依次存儲在起始地址為CSTRING的字節(jié)單元中:CSTRINGDB‘BASEDADDRESSING’請編寫指令將字符串中的第1個和第7個字符傳送給DX寄存器。答:MOVDH,CSTRINGMOVDL,CSTRING+7-1已知堆棧段寄存器SS的內(nèi)容是0FFA0H,堆棧指針寄存器SP的內(nèi)容是00B0H,先執(zhí)行兩條把8057H和0F79H分別進棧的PUSH指令,再執(zhí)行一條POP指令。試畫出堆棧區(qū)和SP的內(nèi)容變化過程示意圖(標(biāo)出存儲單元的物理地址)。答:堆棧區(qū)和SP的內(nèi)容變化過程示意圖如下左圖所示。設(shè)(DS)=1B00H,(ES)=2B00H,有關(guān)存儲單元的內(nèi)容如上右圖所示。請寫出兩條指令把字變量X裝入AX寄存器。答:MOVBX,[2000H]MOVAX,ES:[BX]求出以下各十六進制數(shù)與十六進制數(shù)62A0H之和,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1)1234H(2)4321H(3)CFA0H(4)9D60H答:(1)和為74D4H;SF=0,ZF=0,CF=0,OF=0(2)和為A5C1H;SF=1,ZF=0,CF=0,OF=1(3)和為3240H;SF=0,ZF=0,CF=1,OF=0(4)和為0000H;SF=0,ZF=1,CF=1,OF=0求出以下各十六進制數(shù)與十六進制數(shù)4AE0H的差值,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1)1234H(2)5D90H(3)9090H(4)EA04H答:(1)差為C754H;SF=1,ZF=0,CF=1,OF=0(2)差為12B0H;SF=0,ZF=0,CF=0,OF=0(3)差為45B0H;SF=0,ZF=0,CF=0,OF=1(4)差為9F24H;SF=1,ZF=0,CF=0,OF=0寫出執(zhí)行以下計算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號數(shù)單元的地址。(1)Z←W+(Z-X)(2)Z←W-(X+6)-(R+9)(3)Z←(W*X)/(Y+6),R←余數(shù)(4)Z←((W-X)/5*Y)*2答:(1)MOVAX,Z;以下程序都未考慮帶符號數(shù)的溢出SUBAX,XADDAX,WMOVZ,AX(2)MOVBX,XADDBX,6MOVCX,RADDCR,9MOVAX,WSUBAX,BXSUBAX,CXMOVZ,AX(3)ADDY,6MOVAX,WIMULXIDIVYMOVZ,AXMOVR,DX(4)MOVAX,WSUBAX,XCWDMOVBX,5IDIVBXIMULYSHLAX,1;((DX),(AX))*2RCLDX,1已知程序段如下:MOVAX,1234H;(AX)=1234H,標(biāo)志位不變MOVCL,4;(AX)和標(biāo)志位都不變ROLAX,CL;(AX)=2341H,CF=1,SF和ZF不變DECAX;(AX)=2340H,CF=1不變,SF=0,ZF=0MOVCX,4;(AX)和標(biāo)志位都不變MULCX;(AX)=8D00H,CF=OF=0,其它標(biāo)志無定義INT20H試問:(1)每條指令執(zhí)行完后,AX寄存器的內(nèi)容是什么

(2)每條指令執(zhí)行完后,進位、符號和零標(biāo)志的值是什么

(3)程序結(jié)束時,AX和DX的內(nèi)容是什么

答:(1)見注釋;(2)見注釋;(3)(AX)=8D00H,(DX)=0下列程序段中的每條指令執(zhí)行完后,AX寄存器及CF、SF、ZF和OF的內(nèi)容是什么

MOVAX,0;(AX)=0,標(biāo)志位不變DECAX;(AX)=0FFFFH,CF不變,SF=1,ZF=0,OF=0ADDAX,7FFFH;(AX)=7FFEH,CF=1,SF=0,ZF=0,OF=0ADDAX,2;(AX)=8000H,CF=0,SF=1,ZF=0,OF=1NOTAX;(AX)=7FFFH,標(biāo)志位不變SUBAX,0FFFFH;(AX)=8000H,CF=1,SF=1,ZF=0,OF=1ADDAX,8000H;(AX)=0,CF=1,SF=0,ZF=1,OF=1SUBAX,1;(AX)=0FFFFH,CF=1,SF=1,ZF=0,OF=0ANDAX,58D1H;(AX)=58D1H,CF=0,SF=0,ZF=0,OF=0SALAX,1;(AX)=0B1A2H,CF=0,SF=1,ZF=0,OF=1SARAX,1;(AX)=0D8D1H,CF=0,SF=1,ZF=0,OF=0NEGAX;(AX)=272FH,CF=1,SF=0,ZF=0,OF=0RORAX,1;(AX)=9397H,CF=1,SF和ZF不變,OF=1答:見注釋。變量DATAX和變量DATAY的定義如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H請按下列要求寫出指令序列:(1)DATAX和DATAY兩個字?jǐn)?shù)據(jù)相加,和存放在DATAY中。(2)DATAX和DATAY兩個雙字?jǐn)?shù)據(jù)相加,和存放在從DATAY開始的雙字單元中。(3)解釋下列指令的作用:STCMOVBX,DATAXADCBX,DATAY(4)DATAX和DATAY兩個字?jǐn)?shù)據(jù)相乘(用MUL)。(5)DATAX和DATAY兩個雙字?jǐn)?shù)據(jù)相乘(用MUL)。(6)DATAX除以23(用DIV)。(7)DATAX雙字除以字DATAY(用DIV)。答:(1)MOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADDDATAY+2,AX(2)MOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADCDATAY+2,AXMOVDATAY+4,0;用于存放進位位ADCDATAY+4,0(3)DATAX和DATAY兩個字?jǐn)?shù)據(jù)之和加1,結(jié)果存入BX寄存器。(4)RESULT1DW0DW0RESULT2DW0DW0┇MOVAX,DATAXMULDATAYMOVRESULT1,AXMOVRESULT1+2,DXMOVAX,DATAX+2MULDATAY+2MOVRESULT2,AXMOVRESULT2+2,DX(5)AADW0BBDW0CCDW0DDDW0┇MOVAX,DATAXMULDATAYMOVAA,AXMOVBB,DXMOVAX,DATAXMULDATAY+2ADDBB,AXADCCC,DXMOVAX,DATAX+2MULDATAYADDBB,AXADCCC,DXADCDD,0MOVAX,DATAX+2MULDATAY+2ADDCC,AXADCDD,DX(6)MOVAX,DATAXMOVBL,23DIVBL(7)MOVDX,DATAX+2MOVAX,DATAXDIVDATAY寫出對存放在DX和AX中的雙字長數(shù)求補的指令序列。答:NEGDX也可為:NOTDXNEGAXNOTAXSBBDX,0ADDAX,1ADCDX,0試編寫一程序求出雙字長數(shù)的絕對值。雙字長數(shù)在A和A+2單元中,結(jié)果存放在B和B+2單元中。答:程序段如下:MOVAX,AMOVDX,A+2CMPDX,0JNSZHENSHU;不是負(fù)數(shù)則轉(zhuǎn)走NEGDXNEGAXSBBDX,0ZHENSHU:MOVB,AXMOVB+2,DXINT20H假設(shè)(BX)=0E3H,變量VALUE中存放的內(nèi)容為79H,確定下列各條指令單獨執(zhí)行后的結(jié)果。(1)XORBX,VALUE;(BX)=9AH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=1(2)ANDBX,VALUE;(BX)=61H,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(3)ORBX,VALUE;(BX)=0FBH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=0(4)XORBX,0FFH;(BX)=1CH,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(5)ANDBX,0;(BX)=00H,CF、OF都為0,AF無定義,SF=0,ZF=1,PF=1(6)TESTBX,01H;(BX)=0E3H,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=0答:見注釋。試寫出執(zhí)行下列指令序列后BX寄存器的內(nèi)容。執(zhí)行前(BX)=6D16H。MOVCL,7SHRBX,CL答:(BX)=00DAH。試用移位指令把十進制數(shù)+53和-49分別乘以2。它們應(yīng)該用什么指令得到的結(jié)果是什么如果要除以2呢

答:MOVAL,53SALAL,1;(AL)=(+53*2)=6AHMOVAL,-49SALAL,1;(AL)=(-49*2)=9EHMOVAL,53SARAL,1;(AL)=(53/2)=1AHMOVAL,-49SARAL,1;(AL)=(-49/2)=0E7H試分析下面的程序段完成什么功能

MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL答:本程序段將((DX),(AX))的雙字同時左移4位,即將此雙字乘以10H(16)。假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各條指令單獨執(zhí)行后DX中的值。(1)SHRDX,1;(DX)=05CH(2)SARDX,CL;(DX)=17H(3)SHLDX,CL;(DX)=5C8H(4)SHLDL,1;(DX)=72H(5)RORDX,CL;(DX)=2017H(6)ROLDL,CL;(DX)=0CDH(7)SALDH,1;(DX)=0B9H(8)RCLDX,CL;(DX)=2CCH(4)RCRDL,1;(DX)=0DCH答:見注釋。下列程序段執(zhí)行完后,BX寄存器的內(nèi)容是什么

MOVCL,3MOVBX,0B7HROLBX,1RORBX,CL答:(BX)=0C02DH。假設(shè)數(shù)據(jù)段定義如下:CONAMEDB‘SPACEEXPLORERSINC.’PRLINEDB20DUP(‘’)用串指令編寫程序段分別完成以下功能:(1)從左到右把CONAME中的字符串傳送到PRLINE。(2)從右到左把CONAME中的字符串傳送到PRLINE。(3)把CONAME中的第3和第4個字節(jié)裝入AX。(4)把AX寄存器的內(nèi)容存入從PRLINE+5開始的字節(jié)中。(5)檢查CONAME字符串中有無空格字符,如有則把第一個空格字符的地址傳送給BX寄存器。答:(1)MOVCX,20CLDMOVSI,SEGCONAMEMOVDS,SIMOVES,SILEASI,CONAMELEADI,PRLINEREPMOVSB(2)MOVCX,20STDMOVSI,SEGCONAMEMOVDS,SIMOVES,SILEASI,CONAMEADDSI,20-1LEADI,PRLINEADDDI,20-1REPMOVSB(3)MOVAX,WORDPTRCONAME+3-1(4)MOVWORDPTRPRLINE+5,AX(5)MOVAL,‘’;空格的ASCII碼送AL寄存器CLDMOVDI,SEGCONAMEMOVES,DILEADI,CONAMEREPNESCASBJNENEXTDECDIMOVBX,DINEXT:┇編寫程序段,把字符串STRING中的‘&’字符用空格符代替。STRINGDB‘ThedateisFEB&03’答:程序段如下:MOVCX,18MOVAL,‘&’CLDMOVDI,SEGSTRINGMOVES,DILEADI,STRINGREPNESCASBJNENEXTDECDIMOVES:BYTEPTR[DI],‘’;送空格符NEXT:┇假設(shè)數(shù)據(jù)段中數(shù)據(jù)定義如下:STUDENT_NAMEDB30DUP()STUDENT_ADDRDB9DUP()PRINT_LINEDB132DUP()分別編寫下列程序段:(1)用空格符清除PRINT_LINE域。(2)在STUDENT_ADDR中查找第一個‘-’。(3)在STUDENT_ADDR中查找最后一個‘-’。(4)如果STUDENT_NAME域中全是空格符時,填入‘*’。(5)把STUDENT_NAME移到PRINT_LINE的前30個字節(jié)中,把STUDENT_ADDR移到PRINT_LINE的后9個字節(jié)中。答:公共的程序段如下:MOVDI,DSMOVES,DI(1)MOVCX,132MOVAL.,‘’;空格的ASCII碼送AL寄存器CLDLEADI,PRINT_LINEREPSTOSB(2)MOVCX,9MOVAL.,‘-’CLDLEADI,STUDENT_ADDRREPNESCASBJNENO_DASHDECDINO_DASH:┇(3)MOVCX,9MOVAL.,‘-’STDLEADI,STUDENT_ADDRADDDI,9-1REPNESCASBJNENO_DASHINCDINO_DASH:┇(4)MOVCX,30MOVAL,‘’;空格的ASCII碼送AL寄存器CLDLEADI,STUDENT_NAMEREPESCASBJNENEXTMOVCX,30MOVAL,‘*’;“*”的ASCII碼送AL寄存器LEADI,STUDENT_NAMEREPSTOSBNEXT:┇(5)MOVCX,30CLDLEASI,STUDENT_NAMELEADI,PRINT_LINEREPMOVSBMOVCX,9STDLEASI,STUDENT_ADDR+9-1LEADI,PRINT_LINE+132-1REPMOVSB編寫一程序段:比較兩個5字節(jié)的字符串OLDS和NEWS,如果OLDS字符串不同于NEWS字符串則執(zhí)行NEW_LESS;否則順序執(zhí)行程序。答:程序段如下:MOVCX,5CLDMOVDI,SEGOLDSMOVDS,DIMOVES,DILEASI,OLDSLEADI,NEWSREPECMPSBJNENEW_LESS┇NEW_LESS:┇假定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)若CX的內(nèi)容等于0,則轉(zhuǎn)去執(zhí)行ZERO。(4)BX與AX的內(nèi)容相比較是否產(chǎn)生溢出若溢出則轉(zhuǎn)OVERFLOW。(5)若BX的內(nèi)容小于等于AX的內(nèi)容,則轉(zhuǎn)EQ_SMA。(6)若DX的內(nèi)容低于等于CX的內(nèi)容,則轉(zhuǎn)EQ_SMA。答:(1)CMPDX,CXJAEXCEED(2)CMPBX,AXJGEXCEED(3)JCXZZERO(4)CMPBX,AXJOOVERFLOW(5)CMPBX,AXJLEEQ_SMA(6)CMPDX,CXJBEEQ_SMA試分析下列程序段:ADDAX,BXJNOL1JNCL2SUBAX,BXJNCL3JNOL4JMPSHORTL5如果AX和BX的內(nèi)容給定如下:AXBX(1)147BH80DCH(2)B568H42C8H(3)42C8H608DH(4)D023H9FD0H(5)94B7HB568H問該程序分別在上面5種情況下執(zhí)行后,程序轉(zhuǎn)向哪里

答:(1)轉(zhuǎn)向L1(2)轉(zhuǎn)向L1(3)轉(zhuǎn)向L2(4)轉(zhuǎn)向L5;因為加法指令后AX中已經(jīng)是6FF3H(5)轉(zhuǎn)向L5;因為加法指令后AX中已經(jīng)是4A14H指令CMPAX,BX后面跟著一條格式為J…L1的條件轉(zhuǎn)移指令,其中…可以是B、NB、BE、NBE、L、NL、LE、NLE中的任意一個。如果AX和BX的內(nèi)容給定如下:AXBX(1)1F52H1F52H(2)88C9H88C9H(3)FF82H007EH(4)58BAH020EH(5)FFC5HFF8BH(6)09A0H1E97H(7)8AEAHFC29H(8)D367H32A6H問以上8條轉(zhuǎn)移指令中的哪幾條將引起轉(zhuǎn)移到L1

答:(1)JNB、JBE、JNL、JLE(2)JNB、JBE、JNL、JLE(3)JNB、JNBE、JL、JLE(4)JNB、JNBE、JNL、JNLE(5)JNB、JNBE、JL、JLE(6)JB、JBE、JL、JLE(7)JB、JBE、JNL、JNLE(8)JNB、JNBE、JL、JLE假設(shè)X和X+2單元的內(nèi)容為雙精度數(shù)p,Y和Y+2單元的內(nèi)容為雙精度數(shù)q,(X和Y為低位字)試說明下列程序段做什么工作

MOVDX,X+2MOVAX,XADDAX,XADCDX,X+2CMPDX,Y+2JLL2JGL1CMPAX,YJBEL2L1:MOVAX,1JMPSHORTEXITL2:MOVAX,2EXIT:INT20H答:此程序段判斷p*2>q,則使(AX)=1后退出;p*2≤q,則使(AX)=2后退出。要求測試在STATUS中的一個字節(jié),如果第1、3、5位均為1則轉(zhuǎn)移到ROUTINE_1;如果此三位中有兩位為1則轉(zhuǎn)移到ROUTINE_2;如果此三位中只有一位為1則轉(zhuǎn)移到ROUTINE_3;如果此三位全為0則轉(zhuǎn)移到ROUTINE_4。試畫出流程圖,并編制相應(yīng)的程序段。答:程序段如下:MOVAL,STATUSANDAL,00010101B;只保留第1、3、5位JZROUTINE_4;3位全為0轉(zhuǎn)ROUTINE_4JPEROUTINE_2;兩位為1轉(zhuǎn)ROUTINE_2CMPAL,00010101BJZROUTINE_1;3位全為1轉(zhuǎn)ROUTINE_1ROUTINE_3:┇;僅一位為1執(zhí)行ROUTINE_3JMPEXITROUTINE_1:┇JMPEXITROUTINE_2:┇JMPEXITROUTINE_4:┇EXIT:INT20H在下列程序的括號中分別填入如下指令:(1)LOOPL20(2)LOOPEL20(3)LOOPNEL20試說明在三種情況下,當(dāng)程序執(zhí)行完后,AX、BX、CX、DX四個寄存器的內(nèi)容分別是什么

TITLECODESGSEGMENTASSUMECS:CODESG,DS:CODSEG,SS:CODSEGORG100HBEGIN:MOVAX,01MOVBX,02MOVDX,03MOVCX,04L20:INCAXADDBX,AXSHRDX,1()RETCODESGENDSENDBEGIN答:(1)(AX)=5H,(BX)=10H,(CX)=0H,(DX)=0H(2)(AX)=2H,(BX)=4H,(CX)=3H,(DX)=1H(3)(AX)=3H,(BX)=7H,(CX)=2H,(DX)=0H考慮以下的調(diào)用序列:(1)MAIN調(diào)用NEAR的SUBA過程(返回的偏移地址為0400);(2)SUBA調(diào)用NEAR的SUBB過程(返回的偏移地址為0A00);(3)SUBB調(diào)用FAR的SUBC過程(返回的段地址為B200,返回的偏移地址為0100);(4)從SUBC返回SUBB;(5)SUBB調(diào)用NEAR的SUBD過程(返回的偏移地址為0C00);(6)從SUBD返回SUBB;(7)從SUBB返回SUBA;(8)從SUBA返回MAIN;(9)從MAIN調(diào)用SUBC(返回的段地址為1000,返回的偏移地址為0600);請畫出每次調(diào)用及返回時的堆棧狀態(tài)。答:每次調(diào)用及返回時的堆棧狀態(tài)圖如下所示:假設(shè)(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,試問下列指令訪問內(nèi)存的物理地址是什么

(1)MOVECX,[EAX+EBX]

(2)MOV[EAX+2*EBX],CL

(3)MOVDH,[EBX+4*EAX+1000H]

答:(1)PA=(DS)*10H+EA=00100H+00001000H+00002000H=00003100H

(2)PA=(DS)*10H+EA=00100H+00001000H+2*00002000H=00005100H

(3)PA=(DS)*10H+EA=00100H+00002000H+4*00001000H+1000H=00007100H

假設(shè)(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。在DS段中從偏移地址4044H單元開始的4個字節(jié)單元中,依次存放的內(nèi)容為92H,6DH,0A2H和4CH,試問下列各條指令執(zhí)行完后的目的地址及其中的內(nèi)容是什么

(1)MOV[SI],EAX

(2)MOV[BX],ECX

(3)MOVEBX,[DI]

答:(1)目的地址為DS:2000H,內(nèi)容依次為:56H,0F4H,23H和98H

(2)目的地址為DS:348CH,內(nèi)容依次為:91H,34H,0F2H和01H

(3)目的操作數(shù)為EBX寄存器,(EBX)=4CA26D92H

說明下列指令的操作

(1)PUSHAX;將(AX)壓入堆棧

(2)POPESI;將堆棧中的雙字彈出到ESI寄存器中

(3)PUSH[BX];將((BX))對應(yīng)存儲單元中的字壓入堆棧

(4)PUSHAD;32位通用寄存器依次進棧

(5)PO

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論