版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、3.1給定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什么?(1) 立即尋址(2) 直接尋址(3) 使用BX的寄存器尋址(4) 使用BX的簡接尋址(5) 使用BX的寄存器相對(duì)尋址(6) 基址變址尋址(7) 相對(duì)基址變址尋址答:(1)操作數(shù)在指令中,即立即數(shù);EA=D=7237H;無EA操作數(shù)為(BX)=637DH;EA=(BX)=637DH;EA=(BX)+D=0D5B4H;EA=(BX)+(SI)=8E18H;EA=(BX)+(SI)+D=1004FH;超過了段的邊界,最高進(jìn)位位丟失,因此EA=004FH3.2試根據(jù)以下要求寫出相應(yīng)
2、的匯編語言指令(1) 把BX寄存器和DX寄存器的內(nèi)容相加,結(jié)果存入DX寄存器中。用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器中的一個(gè)字節(jié)與AL內(nèi)存器的內(nèi)容相加,并把結(jié)果送到AL寄存器中。用寄存器BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和(CX)相加,并把結(jié)果送回存儲(chǔ)器中。用位移量為0524H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)2A59H相加,并把結(jié)果送回存儲(chǔ)單兀中。(2) 把數(shù)0B5H與(AL)相加,并把結(jié)果送回AL中。答:(1)ADDDX,BXADDAL,BXSIADDBX+0B2H,CXADDWORDPTR0524H,2A59HADDAL,0B5H3.3寫出把首地址為BL
3、OC刷字?jǐn)?shù)組的第6個(gè)字送到DX寄存器的指令。要求使用以下幾種尋址方式:(1) 寄存器間接尋址(2) 寄存器相對(duì)尋址(3) 基址變址尋址答:(1)MOVBX,OFFSETBLOCKADDBX,(6-1)*2MOVDX,BXMOVBX,OFFSETBLOCK改為:MOVBX,(6-1)*2MOVDX,BX+(6-1)*2也可MOVDX,BLOCKBXMOVBX,OFFSETBLOCKMOVSI,(6-1)*2MOVDX,BXSI3.4現(xiàn)有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=
4、78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,試說明下列各條指令執(zhí)行完后AX寄存器的內(nèi)容。(1) MOVAX,1200HMOVAX,BX(3) MOVAX,1200HMOVAX,BX(5) MOVAX,1100BX(6) MOVAX,BXSIMOVAX,1100BXSI答:(1)(AX)=1200H(AX)=0100H(AX)=4C2AH(AX)=3412H(AX)=4C2AH(AX)=7856H(AX)=65B7H3.5給定(IP)=2BC0H,(CS)=0200H,位移量D=5119H,(BX)=1200H,(DS)=212
5、AH,(224A0H)=0600H,(275B9H)=098AH,試為以下的轉(zhuǎn)移指令找出轉(zhuǎn)移的偏移地址。(1) 段內(nèi)直接尋址(2) 使用BX及寄存器間接尋址方式的段內(nèi)間接尋址(3) 使用BX及寄存器相對(duì)尋址方式的段內(nèi)間接尋址答:(1)JMPNEARPTR5119H;(IP)=5119H+(IP)+03H)=7CDCH,物理地址PA=09CDCH(IP)+03H是JMPNEARPTR5119H旨令的下一條指令的首地址。JMPWORDPTRBX;(IP)=(DS)*10H+(BX)=0600H,PA=02600HJMPDBX;(IP)=(DS)*10H+(BX)+D)=098AH,PA=0298A
6、H3.6設(shè)當(dāng)前數(shù)據(jù)段寄存器的內(nèi)容為1B00H,在數(shù)據(jù)段的偏移地址2000H單元內(nèi),含有一個(gè)內(nèi)容為0FF10H和8000H的指針,它們是一個(gè)16變量裝入AX的指令序列,并畫圖表示出來。答:MOVBX,2000HMOVAX,2000H+2MOVES,AXMOVAX,ES:BX試寫出把該;圖示如上所示。MOVBX,2000HLESBX,BXMOVAX,ES:BX3.7在0624H單元內(nèi)有一條二字節(jié)JMPSHORTOBJ指令,如其中位移量為(1)27H,(2)6BH,(3)0C6H,試問轉(zhuǎn)向地址OBJ的值是多少?答:(1)OBJ=0624H+02H+27H=064DHOBJ=0624H+02H+6BH
7、=0691HOBJ=0624H+02H+0C6H=05ECH;C6H對(duì)應(yīng)的負(fù)數(shù)為-3AH(向上轉(zhuǎn)移,負(fù)位移量)3.8假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(I) MOVAX,0ABHMOVAX,100H(5)MOVAX,BXMOVAX,BP(9)MOVAX,BX+10(II) MOVAX,BXSI(2) 答:(1)立即方式;寄存器尋址方式;直接尋址方式;直接尋址方式;BX寄存器間接尋址方式;附加
8、段BX寄存器間接尋址方式;BP寄存器間接尋址方式;SI寄存器間接尋址方式;BX寄存器相對(duì)尋址方式;BX寄存器相對(duì)尋址方式;(12)BX和SI寄存器相對(duì)基址變址尋址方式;MOVAX,BX(4)MOVAX,VAL(6)MOVAX,ES:BX(8)MOVAX,SI(10)MOVAX,VALBX(12)MOVAX,VALBXSI操作數(shù)在本條指令中操作數(shù)為(BX)=0100HPA=20100HPA=20050HPA=20100HPA=21100HPA=15010HPA=200A0HPA=20110HPA=20150HPA=201A0HPA=201F0H3.9在ARRAYS組中依次存儲(chǔ)了七個(gè)字?jǐn)?shù)據(jù),緊接著
9、是名為ARRAYDW23,36,2,100,32000,54,0ZERODW?(1)(2)答:ZERO勺字單元,表示如下:如果BX包含數(shù)組ARRAY勺初始地址,請(qǐng)編寫指令將數(shù)據(jù)如果BX包含數(shù)據(jù)0在數(shù)組中的位移量,請(qǐng)編寫指令將數(shù)據(jù)(1)MOVAX,BX+(7-1)*2MOVBX+(7)*2,AXMOVAX,ARRAYBXMOVARRAYBX+2,AX0傳送給ZEROI元。0傳送給ZERO%oBX和SI寄存器基址變址尋址方式TABLE0AH00H14HTABLE+300H1EH00H28H00H32H00H3.11題的TABLE存儲(chǔ)方式3.10如TABLE為數(shù)據(jù)段中0032單元的符號(hào)名,其中存放的
10、內(nèi)容為1234H,試問以下兩條指令有什么區(qū)別?指令執(zhí)行完后AX寄存器的內(nèi)容是什么?MOVX,TABLELEAAX,TABLE答:MOVAX,TABLE是將TABLE單元的內(nèi)容送到AX(AX)=1234HLEAAX,TABLE是將TABLE單元的有效地址送到A(AX)=0032H3.11執(zhí)行下列指令后AX中存器中的內(nèi)容是什么?TABLEDW10,20,30,40,50;000AH,0014H,001EH,0028H,0032HENTRYDW311IMOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,BX答:(AX)=1E00H(TABLE的存儲(chǔ)方式如右圖所示)3.12下列ASCI
11、I碼串(包括空格符)依次存儲(chǔ)在起始地址為CSTRINGW字節(jié)單元中:CSTRINGDB'BASEDADDRESSING請(qǐng)編寫指令將字符串中的第1個(gè)和第7個(gè)字符傳送給DX寄存器。答:MOVDH,CSTRINGMOVDL,CSTRING+7-13.13已知堆棧段寄存器SS的內(nèi)容是0FFA0H堆棧指針寄存器SP的內(nèi)容是00B0H,先執(zhí)行兩條把8057H和0F79H分別進(jìn)棧的PUSH旨令,再執(zhí)行一條POP旨令。試畫出堆棧區(qū)和SP的內(nèi)容變化過程示意圖(標(biāo)出存儲(chǔ)單元的物理地址)。答:堆棧區(qū)和SP的內(nèi)容變化過程示意圖如下左圖所示。FFAACH79H再次進(jìn)棧(SP)(SP)-21B00:2000800
12、0H0FH/出棧時(shí)(SP)-(SP)+21B00:20022B00HFFAAEH57H以首次進(jìn)棧(SP)-(SP)-2-Tn80HFFAB0H2B00:8000X13.13題的堆棧區(qū)和SP的內(nèi)容變化過程示意圖3.14題的存儲(chǔ)區(qū)情況3.14設(shè)(DS)=1B00H,(ES)=2B00H,有關(guān)存儲(chǔ)單元的內(nèi)容如上右圖所示。請(qǐng)寫出兩條指令把字變量X裝入AX寄存器。答:MOVBX,2000HMOVAX,ES:BX3.15求出以下各十六進(jìn)制數(shù)與十六進(jìn)制數(shù)和OF的值。(1)1234H(2)4321H答:(1)和為74D4HSF=0,ZF=0,(2) 和為A5C1HSF=1,ZF=0,(3) 和為3240H;S
13、F=0,ZF=0,(4) 和為0000H;SF=0,ZF=1,62A0H之和,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CFCFA0H(4)9D60HCF=QOF=0CF=0,OF=1CF=1,OF=0CF=1,OF=03.16求出以下各十六進(jìn)制數(shù)與十六進(jìn)制數(shù)4AE0H的差值,并根據(jù)結(jié)果設(shè)置標(biāo)志位SF、ZF、CF和OF的值。(1) 1234H(2)5D90H(3)9090H(4)EA04H答:(1)差為C754HSF=1,ZF=0,CF=1,OF=0差為12B0HSF=0,ZF=0,CF=0,OF=0差為45B0HSF=0,ZF=0,CF=0,OF=1差為9F24H;SF=1,ZF=0,CF=0,OF=
14、03.17寫出執(zhí)行以下計(jì)算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號(hào)數(shù)單元的地址。(1) ZW+(Z-X)(2)ZW-(X+6)-(R+9)(3)Z(W*X)/(Y+6),RJ余數(shù)Z(W-X)/5*Y)*2答:(1)MOVAX,Z;以下程序都未考慮帶符號(hào)數(shù)的溢出SUBAX,XADDAX,WMOVZ,AXMOVBX,XADDBX,6MOVCX,RADDCR,9MOVAX,WSUBAX,BXSUBAX,CXMOVZ,AXADDY,6MOVAX,WIMULXIDIVYMOVZ,AXMOVR,DXMOVAX,WSUBAX,XCWDMOVBX,5IDIVBXIMULYSHLAX,1;(DX)
15、,(AX)*2RCLDX,13.18已知程序段如下: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í)行完后,進(jìn)位、符號(hào)和零標(biāo)志的值是什么?(3) 程序結(jié)束時(shí),AX和DX的內(nèi)容是什么?答:(1)見注釋;見注釋;(AX)=8D00H,(DX)
16、=03.19下列程序段中的每條指令執(zhí)行完后,AX寄存器及CF、SF、ZF和OF的內(nèi)容是什么?MOVAX,0;(AX)=0,標(biāo)志位不變DECAX;(AX)=0FFFFH,CF不變,SF=1,ZF=0,OF=0ADDAX,7FFFHADDAX,2;(AX)=7FFEH,;(AX)=8000H,CF=1CF=0SF=0ZF=0OF=0SF=1ZF=0OF=1NOTAX;(AX)=7FFFH,標(biāo)志位不變SUBAX,0FFFFH;(AX)=8000H,CF=1SF=1ZF=0OF=1ADDAX,8000H;(AX)=0,CF=1SF=0ZF=1,OF=1SUBAX,1;(AX)=0FFFFH,CF=1S
17、F=1ZF=0OF=0ANDAX,58D1H;(AX)=58D1H,CF=0SF=0ZF=0OF=0SALAX,1;(AX)=0B1A2H,CF=0SF=1ZF=0OF=1SARAX,1;(AX)=0D8D1H,CF=0SF=1ZF=0OF=0NEGAX;(AX)=272FH,CF=1SF=0ZF=0OF=0RORAX,1答:見注釋。;(AX)=9397H,CF=1SF和ZF不變,OF=13.20變量DATA魅日變量DATAY勺定義如下:DATAXDW0148HDW2316HDATAYDW0237HDW4052H請(qǐng)按下列要求寫出指令序列:(1) DATAX和DATAYM個(gè)字?jǐn)?shù)據(jù)相加,和存放在D
18、ATAY。(2) DATAX和DATAYM個(gè)雙字?jǐn)?shù)據(jù)相加,和存放在從DATA/始的雙字單元中。(3) 解釋下列指令的作用:STCMOVBX,DATAXADCBX,DATAYDATAX和DATAYM個(gè)字?jǐn)?shù)據(jù)相乘(用MUL)。(2) DATAX和DATAYM個(gè)雙字?jǐn)?shù)據(jù)相乘(用MUL*(3) DATAX除以23(用DIV)。(4) DATAX雙字除以字DATAY(用DIV)。(2) 答:(1)MOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADDDATAY+2,AXMOVAX,DATAXADDDATAY,AXMOVAX,DATAX+2ADCDATAY+2,AXMOVDATAY+
19、4,0;用于存放進(jìn)位位ADCDATAY+4,0DATAX和DATAYM個(gè)字?jǐn)?shù)據(jù)之和加1,結(jié)果存入BX寄存器。RESULT1DW0DW0RESULT2DW0DW0MOVAX,DATAXMULDATAYMOVRESULT1,AXMOVRESULT1+2,DXMOVAX,DATAX+2MULDATAY+2MOVRESULT2,AXMOVRESULT2+2,DXAADW0BBDW0CCDW0DDDW011IMOVAX,DATAXMULDATAYMOVAA,AXMOVBB,DXMOVAX,DATAXMULDATAY+2ADDBB,AXADCCC,DXMOVAX,DATAX+2MULDATAYADDBB,
20、AXADCCC,DXADCDD,0MOVAX,DATAX+2MULDATAY+2ADDCC,AXADCDD,DXMOVAX,DATAXMOVBL,23DIVBLMOVDX,DATAX+2MOVAX,DATAXDIVDATAY3.21寫出對(duì)存放在DX和AX中的雙字長數(shù)求補(bǔ)的指令序列。答:NEGDX也可為:NOTDXNEGAXNOTAXSBBDX,0ADDAX,1ADCDX,03.22試編寫一程序求出雙字長數(shù)的絕對(duì)值。雙字長數(shù)在A和A+2單元中,結(jié)果存放在B和B+2單元中。答:程序段如下:MOVAX,AMOVDX,A+2CMPDX,0JNSZHENSHU不是負(fù)數(shù)則轉(zhuǎn)走NEGDXNEGAXSBBDX
21、,0ZHENSHU:MOVB,AXMOVB+2,DXINT20H3.23假設(shè)(BX)=0E3H,變量果。(1) XORBX,VALUE(2) ANDBX,VALUE(3) ORBX,VALUE(4) XORBX,0FFH(5) ANDBX,0(6) TESTBX,01HPF=0答:見注釋。VALUE中存放的內(nèi)容為79H,確定下列各條指令單獨(dú)執(zhí)行后的結(jié)(BX)=9AH,CF(BX)=61H,CF(BX)=0FBH,CF、OF都為0,AF無定義,(BX)=1CH,CROF都為0,AF無定義,(BX)=00H,CROF都為0,AF無定義,OF都為0,AF無定義,OF都為0,AF無定義,SF=1,SF
22、=0,SF=1,SF=0SF=0ZF=0ZF=0ZF=0ZF=0ZF=1,PF=1PF=0PF=0PF=0PF=1;(BX)=0E3H,CF、OF都為0,AF無定義,SF=1,ZF=0,BX寄存器的內(nèi)容。執(zhí)行前(BX)=6D16H。3.24試寫出執(zhí)行下列指令序列后+53和-49分別乘以2。它們應(yīng)該用什么指令?得到的結(jié)果是MOVCL,7SHRBX,CL答:(BX)=00DAH。SALAL,1;(AL)=(+53*2)=6AHMOVAL,-49SALAL,1MOVAL,53;(AL)=(-49*2)=9EHSARAL,1MOVAL,-49;(AL)=(53/2)=1AHSARAL,1;(AL)=(
23、-49/2)=0E7H3.25試用移位指令把十進(jìn)制數(shù)什么?如果要除以2呢?答:MOVAL,533.26試分析下面的程序段完成什么功能?MOVCL,04SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL答:本程序段將(DX),(AX)的雙字同時(shí)左移4位,即將此雙字乘以10H(16)。3.27假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各條指令單獨(dú)執(zhí)行后DX中的值。SHRDX,1;(DX)=05CHSARDX,CLSHLDX,CLSHLDL,1RORDX,CLROLDL,CLSALDH,1RCLDX,CLRCRDL,1答:見注釋。;(DX)=17H;(D
24、X)=5C8H;(DX)=72H;(DX)=2017H;(DX)=0CDH;(DX)=0B9H;(DX)=2CCH;(DX)=0DCH3.28下列程序段執(zhí)行完后,MOVCL,3MOVBX,0B7HROLBX,1RORBX,CL答:(BX)=0C02DHoBX內(nèi)存器的內(nèi)容是什么?3.29假設(shè)數(shù)據(jù)段定義如下:CONAMEDB'SPACEEXPLORERSINC.'PRLINEDB20DUP('')用串指令編寫程序段分別完成以下功能:(1) 從左到右把CONAME的字符串傳送到PRLINE(2) 從右到左把CONAME的字符串傳送到PRLINE(3) 把CONAME的
25、第3和第4個(gè)字節(jié)裝入AX=(4) 把AX寄存器的內(nèi)容存入從PRLINE+5開始的字節(jié)中。BX(5) 檢查CONAM薛符串中有無空格字符,如有則把第一個(gè)空格字符的地址傳送給寄存器。答:(1)MOVCX,20CLDMOVSI,SEGCONAMEMOVDS,SIMOVES,SILEASI,CONAMELEADI,PRLINEREPMOVSB(2)MOVCX,20STDMOVSI,SEGCONAMEMOVDS,SIMOVES,SILEASI,CONAMEADDSI,20-1LEADI,PRLINEADDDI,20-1REPMOVSB(3) MOV(4) MOV(5) MOVAX,WORDPTRCONA
26、ME+3-1WORDPTRPRLINE+5,AXAL,''空格的ASCII碼送AL寄存器CLDMOVDI,SEGCONAMEMOVES,DILEADI,CONAMEREPNESCASBJNENEXTDECDIMOVBX,DINEXT:3.30編寫程序段,把字符串STRING中的&'字符用空格符代替。STRINGDB'ThedateisFEB&03'答:程序段如下:MOVCX,18MOVAL,'&'CLDMOVDI,SEGSTRINGMOVES,DILEADI,STRINGREPNESCASBJNENEXTDECDI
27、MOVESBYTEPTRDI,''送空格符NEXT:3.31假設(shè)數(shù)據(jù)段中數(shù)據(jù)定義如下:STUDENT_NAMEDB30DUP(?)STUDENT_ADDRDB9DUP(?)PRINT_LINEDB132DUP(?)分別編寫下列程序段:(1) 用空格符清除PRINT_LINE域。(2) 在STUDENT_ADDR查找第一個(gè)-'。(3) 在STUDENT_ADDR查找最后一個(gè)-'。(4) 如果STUDENT_NAME中全是空格符時(shí),填入*'。(5) 把STUDENT_NAME至VPRINT_LINE的前30個(gè)字節(jié)中,才巴STUDENT_ADDR至VPRINT
28、_LINE的后9個(gè)字節(jié)中。答:公共的程序段如下:MOVDI,DSMOVES,DIMOVCX,132MOVAL.,;空格的ASCII碼送AL寄存器CLDLEADI,PRINT_LINEREPSTOSBMOVCX,9MOVAL.,'-'CLDLEADI,STUDENT_ADDRREPNECASBJNENO_DASHDECDINO_DASH:111(3)MOVCX,9MOVAL.,'-'STDLEADI,STUDENT_ADDRADDDI,9-1REPNESCASBJNENO_DASHINCDINO_DASH:111(4)MOVCX,30MOVAL,''
29、;空格的ASCII碼送AL寄存器CLDLEADI,STUDENT_NAMEREPESCASBJNENEXTMOVCX,30MOVAL,'*'“*”的ASCII碼送AL寄存器LEADI,STUDENT_NAMEREPSTOSBNEXT:111(5)MOVCX,30CLDLEASI,STUDENT_NAMELEADI,PRINT_LINEREPMOVSBMOVCX,9STDLEASI,STUDENT_ADDR+9-1LEADI,PRINT_LINE+132-1REPMOVSB3.32編寫一程序段:比較兩個(gè)5字節(jié)的字符串OLD拼日NEWS如果OLD芬符串不同于NEWS字符串則執(zhí)行NE
30、W_LE§S否則順序執(zhí)行程序。答:程序段如下:MOVCX,5CLDMOVDI,SEGOLDSMOVDS,DIMOVES,DILEASI,OLDSLEADI,NEWSREPECMPSBJNENEW_LESS11INEW_LESS:3.33假定AX和BX中的內(nèi)容為帶符號(hào)數(shù),CX和DX中的內(nèi)容為無符號(hào)數(shù),請(qǐng)用比較指令和條件轉(zhuǎn)移指令實(shí)現(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)
31、容小于等于AX的內(nèi)容,則轉(zhuǎn)EQ_SMA(6) 若DX的內(nèi)容低于等于CX的內(nèi)容,則轉(zhuǎn)EQ_SMA答:(1)CMPDX,CXJAEXCEEDCMPBX,AXJGEXCEEDJCXZZEROCMPBX,AXJOOVERFLOWCMPBX,AXJLEEQ_SMACMPDX,CXJBEEQ_SMA3.34試分析下列程序段:ADDAX,BXJNOL1JNCL2SUBAX,BXJNCL3JNOL4JMPSHORTL5如果AX和BX的內(nèi)容給定如下:BXAX(1)147BHB568H42C8H(4)D023H94B7H80DCH42C8H608DH9FD0HB568H問該程序分別在上面答:(1)轉(zhuǎn)向L15種情況
32、下執(zhí)行后,程序轉(zhuǎn)向哪里?(4)(5)轉(zhuǎn)向L1轉(zhuǎn)向L1轉(zhuǎn)向L2轉(zhuǎn)向L5轉(zhuǎn)向L5;因?yàn)榧臃ㄖ噶詈?因?yàn)榧臃ㄖ噶詈驛X中已經(jīng)是6FF3HAX中已經(jīng)是4A14H3.35指令CMPAX,BX后面跟著一條格式為JL1的條件轉(zhuǎn)移指令,其中可以是B、NBBE、NBEL、NL、LE、NLE中的任意一個(gè)。如果AX和BX的內(nèi)容給定如下:AXBX(1) 1F52H1F52H88C9H88C9H(3) FF82H007EH(4) 58BAH020EH(5) FFC5HFF8BH(6) 09A0H1E97H(7) 8AEAHFC29H(8) D367H32A6H問以上8條轉(zhuǎn)移指令中的哪幾條將引起轉(zhuǎn)移到L1?答:(1)JN
33、B、JBEJNL、JLEJNB、JBE、JNL、JLEJNB、JNBEJL、JLEJNB、JNBEJNL、JNLEJNB、JNBEJL、JLEJB、JBE、JL、JLEJB、JBE、JNL、JNLEJNB、JNBEJL、JLE3.36假設(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,則使(
34、AX)=1后退出;p*2<q,則使(AX)=2后退出。3.37要求測(cè)試在STATU卯的一個(gè)字節(jié),如果第1、3、5位均為1則轉(zhuǎn)移到ROUTINE如ROUTINE_3如果此三位全為序段。答:程序段如下:MOVL,STATUSANDL,00010101BJZROUTINE_4JPEROUTINE_2CMAL,00010101BJZROUTINE_1ROUTINE_3:JMFEXITROUTINE_1:JMFEXITROUTINE_2:JMFEXITROUTINE_4:EXIT:INT20H只保留第1、;3位全為:程序開始j<x*_3、5位|(AL)。(STATUS)只保留第1,3,50轉(zhuǎn)
35、ROUTINE_4_V兩位為1轉(zhuǎn)ROUTINE_2全為0嗎?1轉(zhuǎn)ROUTINE_1ROUTINE_b二位為1嗎?/Y1執(zhí)行轉(zhuǎn)去執(zhí)行ROUTINE2N僅一位為1執(zhí)行ROUTNE3轉(zhuǎn)去執(zhí)行ROUTNE43.38在下列程序的括號(hào)中分別填入如下指令:(1)LOOPL20LOOPEL20(3)LOOPNEL20試說明在三種情況下,當(dāng)程序執(zhí)行完后,AXBXCXDX四個(gè)寄存器的內(nèi)容分別是什么?轉(zhuǎn)去執(zhí)行ROUTINE1、.執(zhí)行EXIT程序結(jié)束.3.44題的程序流程圖TITLEEXLOOP.COMCODESGSEGMENTASSUMECS:CODESG,DS:CODSEG,SS:CODSEGORG100HBEG
36、IN: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)=0H3.39考慮以下的調(diào)用序列:果此三位中有兩位為1則轉(zhuǎn)移到ROUTINE_2如果此三位中只有一位為1則轉(zhuǎn)移到0則轉(zhuǎn)移到ROUTINE_4試畫出流程圖,并編制相應(yīng)的程MAIN調(diào)用NEAR勺SUBA程(返回的偏移地址為0400)
37、;SUBA調(diào)用NEAR勺SUB時(shí)程(返回的偏移地址為0A00);SUBB調(diào)用FAR的SUBCM程(返回的段地址為B200,返回的偏移地址為0100);(4)從SUBCM回SUBBSUBB調(diào)用NEAR勺SUBC程(返回的偏移地址為0C00);(6)(8)(9)從SUB如回從SUB驅(qū)回從SUBA回從MAIN調(diào)用SUBBSUBAMAIN;SUBC但回的段地址為1000,返回的偏移地址為0600)請(qǐng)畫出每次調(diào)用及返回時(shí)的堆棧狀態(tài)。答:每次調(diào)用及返回時(shí)的堆棧狀態(tài)圖如下所示:00新SP位置用SUBB過程0100B200原SP位置0001000C0000用SUBD過程(3)0ABB調(diào)用SUBC過程00原SP
38、位置新SP位置(6)從SUBD返回SUBB0001000C0000原SP位置新SP位置(7)從SUBB返回SUBA0001000C0000原SP位置新SP位置(8)從SUBA返回MAIN01000C0000新SP位置原SP位置(9)從MAIN調(diào)用SUBC3.40 假設(shè)(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,試問下列指令訪問內(nèi)存的物理地址是什么?(1) MOVECX,EAX+EBX(2) MOVEAX+2*EBX,CL(3) MOVDH,EBX+4*EAX+1000H2.41 答:(1)PA=(DS)*10H+EA=00100H+00001000H+
39、00002000H=00003100HPA=(DS)*10H+EA=00100H+00001000H+2*00002000H=00005100HPA=(DS)*10H+EA=00100H+00002000H+4*00001000H+1000H=00007100H假設(shè)(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。在DS段中從偏移地址4044H單元開始的4個(gè)字節(jié)單元中,依次存放的內(nèi)容為92H,6DH,0A2H和4CH試問下列各條指令執(zhí)行完后的目的地址及其中的內(nèi)容是什么?(1)MOVSI,EAX答:MOVMOV(1)B
40、X,ECXEBX,DI目的地址為DS:2000H,內(nèi)容依次為:56H,0F4H,23H和98H目的地址為DS:348CH內(nèi)容依次為:91H,34H,0F2H和01H目的操作數(shù)為EBX寄存器,(EBX)=4CA26D92H(1)PUSHAX;將(AX)壓入堆棧(2)POPESI;將堆棧中的雙字彈出到ESI寄存器中(3)PUSHBX;將(BX)對(duì)應(yīng)存儲(chǔ)單兀中的字壓入堆棧(4)PUSHAD;32位通用寄存器依次進(jìn)棧(5)POPDS;將堆棧中的字彈出到DS寄存器中(6)PUSH4;將立即數(shù)4以字的方式壓入堆棧答:見注釋。請(qǐng)給出下列各指令序列執(zhí)行完后目的寄存器的內(nèi)容。(1)MOVEAX299FF94HA
41、DDEAX34FFFFH;(EAX)=2CEFF93H(2)MOVEBX40000000SUBEBX1500000;(EBX)=3EB00000H(3)MOVEAX39393834HANDEAN0F0F0F0FH;(EAX)=09090804H(4)MOVEDX9FE35DHXOREDX0F0F0F0H;(EDX)=6F13ADH答:見注釋。請(qǐng)給出下列各指令序列執(zhí)行完后目的寄存器的內(nèi)容。(1)MOVBX,-12MOVSXEBX,BX;(EBX)=0FFFFFFF4H(2)MOVCL,-8MOVSXEDX,CL;(EDX)=0FFFFFFF8H(3)MOVAH,7MOVZXECX,AH;(ECX
42、)=00000007H(4)MOVAX,99HMOVZXEBX,AX;(EBX)=00000099H答:見注釋。請(qǐng)給出卜列指令序列執(zhí)行元后EAX和EBX的內(nèi)容。MOVECX307F455HBSFEAXECX;(EAX)=0DBSREBXECX;(EBX)=25D答:見注釋。請(qǐng)給出卜劌指令序列執(zhí)行完后AX和DX的內(nèi)容。MOVBX98HBSFAXBX;(AX)=3DBSRDXBX;(DX)=7D3.42說明下列指令的操作3.433.443.453.46答:見注釋。3.47請(qǐng)編寫一程序段,要求把ECXEDX和ESI的內(nèi)容相加,其和存入EDI寄存器中(不考慮溢出)。答:MOVEDIADDEDI,ADD
43、EDI,ADDEDI,0ECXEDXESI也可為:MOVEDIECXADDEDI,EDXADDEDI,ESI3.48請(qǐng)說明IMULBX,DX100H指令的操作。答:(BX)(DX)*100H3.49試編寫一程序段,要求把BL中的數(shù)除以CL中的數(shù),并把其商乘以2,最后的結(jié)果存入DX寄存器中。答:MOVALMOVAHDIVMOVAHSHLMOVDXBL0CL0AX1AX;假定為無符號(hào)數(shù),否則用CBW旨令即可3.50請(qǐng)說明JMPDI和JMPDI指令的區(qū)別。答:JMPDI是轉(zhuǎn)移到以(DI)內(nèi)容為偏移地址的單元去執(zhí)行指令;JMPDI是轉(zhuǎn)移到以(DI)間接尋址的內(nèi)存單元內(nèi)容為偏移地址的單元去執(zhí)行指令。3.
44、51試編寫一程序段,要求在長度為并存入字節(jié)單元UP中;找出小于100H字節(jié)的數(shù)組中,找出大于42H的無符號(hào)數(shù)的個(gè)數(shù)42H的無符號(hào)數(shù)的個(gè)數(shù)并存入字節(jié)單元DOWN3。答:JMPBEGINUPDB0DOWNDB0TABLEDB10iBEGINMOVCX100HMOVBX-1MOVSI,0MOVDI0L1:INCBXDUP(?)CMPTABLEBX42HJAL2JBL3JMPL4L2:INCSIJMPL4L3:INCDIL4:LOOPL1MOVUPSIr存儲(chǔ)器新(SP)新(BP)原(SP)3.52題的答案002EH002FH0030H0031H0032H0033H0034H0035H0036H0037
45、H0038H0039H003AH003BH003CH堆棧幀MOVDOWNDI;從鍵盤輸入一個(gè)字符的DO弱用;輸入字符'a'嗎?;輸入字符z'嗎?;轉(zhuǎn)換為大寫字母,用ANDAL,11011111B;顯示一個(gè)字符的DOS用然后找出它的前導(dǎo)字符和后續(xù)字符,再按順序顯;從鍵盤輸入一個(gè)字符的DO弱用;輸入字符'a'嗎?;輸入字符z'嗎?;得到前導(dǎo)字符;準(zhǔn)備顯示三個(gè)字符;顯示一個(gè)字符的DOS用3.52請(qǐng)用圖表示ENTER16,0所生成的堆棧幀的情況。答:答案見右圖。個(gè)匯編語言程序,要求對(duì)鍵盤輸入的小寫字母用大寫字母顯示出來。5.1試編寫答:程序段如下:BEG
46、IN:MOVAH,1INT21HCMPAL,'a'JBSTOPCMPAL,'z'JASTOPSUBAL,20H也可MOVDL,ALMOVAH,2INT21HJMPBEGINSTOP:RET5.2編寫程序,從鍵盤接收一個(gè)小寫字母,示這三個(gè)字符。答:程序段如下:BEGIN:MOVAH,1INT21HCMPAL,'a'JBSTOPCMPAL,'z'JASTOPDECALMOVDL,ALMOVCX,3DISPLAY:MOVAH,2INT21HINCDLLOOPDISPLAYSTOP:RET5.3將AX寄存器中的16位數(shù)分成4組,每組4位,
47、然后把這四組數(shù)分別放在AL、BL、CL和DL中。答:程序段如下:DSEGSEGMENTSTOREDB4DUP(?)DSEGENDSBEGIN:MOVCL,4;右移四次MOVCH,4LEABX,STORE;循壞四次A10:MOVDX,AXANDDX,0FH;取AX的低四位MOVBX,DLINCBX;低四位存入STOREDSHRAX,CLDECCH;右移四次JNZA10;循壞四次完碼?B10:MOVDL,STOREMOVCL,STORE+1MOVBL,STORE+2MOVAL,STORE+3;四組數(shù)分別放在AL、BL、CL和DL中STOP:RET5.4試編寫一程序,要求比較兩個(gè)字符串STRING1
48、和STRING羽f含字符是否完全相同,同則顯示MATC日,若不相同則顯示NOMATCH。答:程序如下:DSEGSEGMENTSTRING1DBTamastudent.'STRING2DBTamastudent!'YESDB'MATCH,0DH,0AH,'$'NODB'NOMATCH,0DH,0AH,'$'DSEGENDSCSEGMAINSTART:SEGMENTPROCFARASSUMECS:CSEG,DS:PUSHDSSUBAX,AXPUSHAXMOVAX,DSEGMOVDS,AX;MOVES,AX;DSEG,ES:DSEG;設(shè)
49、置返回DOS給DS賦值給ES賦值;BEGIN:LEASI,STRING1;設(shè)置串比較指令的初值若相LEADI,STRING2CLDMOVCX,STRING2-STRING1REPECMPSB;串比較JNEDISPNOLEADX,YESJMPDISPLAYDISPNO:LEADX,NODISPLAY:MOVAH,9INT21HRETMAINENDPCSEGENDS;顯示MATCH;顯示NOMATCH;顯示一個(gè)字符串的DOS調(diào)用;以上定義代碼段ENDSTARTBEGIN:MOVAH,1;從鍵盤輸入一個(gè)字符的DOS用INT21HSUBAL,'0'JBSTOP;輸入字符'0
50、39;嗎?CMPAL,9JASTOPCBW;輸入字符'9'嗎?MOVCX,AXJCXZSTOP;響鈴次數(shù)NBELL:MOVDL,07H;準(zhǔn)備響鈴MOVAH,2INT21H;顯示一個(gè)字符的。弱用,實(shí)際為響鈴STOP:CALLDELAY100msLOOPBELLRET;延時(shí)100ms5.5試編寫一程序,要求能從鍵盤接收一個(gè)個(gè)位數(shù)N,然后響鈴N次(響鈴的ASCII碼為07)。答:程序段如下:20個(gè)數(shù)據(jù)的數(shù)組M分成兩個(gè)數(shù)組:正數(shù)數(shù)組P和負(fù)數(shù)數(shù)組N,5.6編寫程序,將一個(gè)包含有并分別把這兩個(gè)數(shù)組中數(shù)據(jù)的個(gè)數(shù)顯示出來。答:程序如下:DSEGSEGMENTCOUNTEQU20;存放數(shù)組;存放
51、正數(shù)的個(gè)數(shù);存放正數(shù);存放負(fù)數(shù)的個(gè)數(shù);存放負(fù)數(shù)'ThepositivenumberisThenegativenumberis'$''$'正'$'負(fù)數(shù)的ARRAYDW20DUP(?)COUNT1DB0ARRAY1DW20DUP(?)COUNT2DB0ARRAY2DW20DUP(?)ZHENDB0DH,0AH,數(shù)的個(gè)數(shù)是:FUDB0DH,0AH,個(gè)數(shù)是:CRLFDB0DH,0AH,DSEGENDSCSEGSEGMENTMAINPROCFARASSUMECS:CSEG,DS:DSEGSTART:PUSHDSSUBAX,AXPUSHAXMOVAX
52、,DSEGMOVDS,AX;設(shè)置返回DOS給DS賦值BEGIN:MOVCX,COUNTLEABX,ARRAYLEASI,ARRAY1LEADI,ARRAY2BEGIN1:MOVAX,BXCMPAX,0;JSFUSHU是負(fù)數(shù)碼?MOVSI,AX;是正數(shù),存入正數(shù)數(shù)組INCCOUNT1ADDSI,2JMPSHORTNEXT;正數(shù)個(gè)數(shù)+1FUSHU:MOVDI,AX;是負(fù)數(shù),存入負(fù)數(shù)數(shù)組INCCOUNT2ADDDI,2;負(fù)數(shù)個(gè)數(shù)+1NEXT:ADDBX,2LOOPBEGIN1LEADX,ZHENMOVAL,COUNT1;顯示正數(shù)個(gè)數(shù)CALLDISPLAY;調(diào)顯示子程序LEADX,FUMOVAL,COUNT2;顯示負(fù)數(shù)個(gè)數(shù)CALLDISPLAY;RET調(diào)顯示子程序MAINENDPDISPLAYPROCNEARMOVAH,9INT21H;顯示子程序;顯示一個(gè)字符串的DOS調(diào)用AAM;將(AL)中的二進(jìn)制數(shù)轉(zhuǎn)換為二個(gè)非壓縮BCD碼ADDAH,'0'變?yōu)?9的ASCII碼MOVDL,AHMOVAH,2;顯示一個(gè)字符的。0弱用INT21
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)進(jìn)步與企業(yè)運(yùn)營模式的協(xié)同創(chuàng)新
- 小學(xué)數(shù)學(xué)教學(xué)與游戲元素的巧妙結(jié)合
- 2024手機(jī)配件采購與分銷協(xié)議范本版B版
- 2024版商用戶外活動(dòng)場(chǎng)地租賃協(xié)議細(xì)則版B版
- 嵌入式系統(tǒng)在物聯(lián)網(wǎng)平臺(tái)的角色與挑戰(zhàn)
- 2024銷售經(jīng)理薪酬體系與績效獎(jiǎng)金合同范本3篇
- 2025年度生態(tài)旅游區(qū)模板工程勞務(wù)分包合同2篇
- 二零二五年度磚渣買賣合同with附加服務(wù)3篇
- 2025化工品采購合同
- 家庭教育與學(xué)前兒童的道德教育及自信心塑造
- 汽車租賃流程圖
- 兒童糖尿病的飲食
- “以案促改”心得體會(huì)
- 干細(xì)胞項(xiàng)目商業(yè)計(jì)劃書
- 安全事故現(xiàn)場(chǎng)處置方案(3篇)
- 2024年高考新課標(biāo)Ⅱ卷語文試題講評(píng)課件
- 中國通 用技術(shù)集團(tuán)招聘筆試題庫
- 【MOOC】工程材料學(xué)-華中科技大學(xué) 中國大學(xué)慕課MOOC答案
- 就業(yè)招聘服務(wù)行業(yè)市場(chǎng)前瞻與未來投資戰(zhàn)略分析報(bào)告
- 收購居間服務(wù)合同
- 無人機(jī)航拍技術(shù)教案(完整版)
評(píng)論
0/150
提交評(píng)論