匯編語言期末習題_第1頁
匯編語言期末習題_第2頁
匯編語言期末習題_第3頁
匯編語言期末習題_第4頁
匯編語言期末習題_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、匯編語言期末習題第二章8086計算機組織(主要是尋址方式以及地址存儲方式)2.2 有兩個16位字1EE5H和2A3CH分別存放在80x86微機的存儲器的000B0H和000B3H單元中,請用圖表示出它們在存儲器里的存放情況。答:存儲器里的存放情況如右下圖所示:000B0HE5H000B1H1EH000B2H000B3H3CH000B4H2AH2.3在IBM PC機的存儲器中存放信息如右下圖所示。試讀出30022H和30024H字節(jié)單元的內(nèi)容,以及30021H和30022H字單元的內(nèi)容。 如圖: 3002012H3002134H30022ABH30023CDH30024EFH答案:30020H:

2、12H 30021H:34H 30022H:ABH30023H:CDH30024H:EFH2.4 在實模式下,段地址和偏移地址為3017:000A的存儲單元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?答:3017:000A、3015:002A和3010:007A的存儲單元的物理地址都是3017AH。2.5 如果在一個程序開始執(zhí)行以前(CS)=0A7F0H,(如16進制數(shù)的最高位為字母,則應(yīng)在其前加一個0) (IP)=2B40H,試問該程序的第一個字的物理地址是多少?答:該程序的第一個字的物理地址是0AAA40H。 第三章8086的指令系統(tǒng)和尋址方式3.1

3、給定(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;超過了段的邊界,最高進位

4、位丟失,因此EA=004FH。3.2 試根據(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) ADD DX, BX(2) ADD AL, BXSI(3) A

5、DD BX+0B2H, CX(4) ADD WORD PTR 0524H, 2A59H(5) ADD AL, 0B5H3.3 寫出把首地址為BLOCK的字數(shù)組的第6個字送到DX寄存器的指令。要求使用以下幾種尋址方式:(1) 寄存器間接尋址(2) 寄存器相對尋址(3) 基址變址尋址答:(1) MOV BX, OFFSET BLOCKADD BX, (61)*2MOV DX, BX(2) MOV BX, OFFSET BLOCK 改為: MOV BX, (6-1)*2MOV DX, BX+(61)*2 也可 MOV DX, BLOCKBX(3) MOV BX, OFFSET BLOCKMOV SI

6、, (61)*2MOV DX, BXSI3.4 現(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) MOV AX, 1200H (1) (AX)=1200H(2) MOV AX, BX(2) (AX)=0100H(3) MOV AX, 1200H(3) (AX)=4C2AH(4) MOV AX, BX(4) (AX)=3

7、412H(5) MOV AX, 1100BX(5) (AX)=4C2AH(6) MOV AX, BXSI(6) (AX)=7856H(7) MOV AX, 1100BXSI(7) (AX)=65B7H3.8 假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1) MOV AX, 0ABH (2) MOV AX, BX(3) MOV AX, 100H (4) MOV AX, VAL(5) MOV AX, B

8、X (6) MOV AX, ES:BX(7) MOV AX, BP (8) MOV AX, SI(9) MOV AX, BX+10 (10) MOV AX, VALBX(11) MOV AX, BXSI (12) MOV AX, VALBXSI答:(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

9、寄存器間接尋址方式; PA=200A0H(9) BX寄存器相對尋址方式; PA=20110H(10) BX寄存器相對尋址方式; PA=20150H(11) BX和SI寄存器基址變址尋址方式; PA=201A0H(12) BX和SI寄存器相對基址變址尋址方式; PA=201F0H3.9 在ARRAY數(shù)組中依次存儲了七個字數(shù)據(jù),緊接著是名為ZERO的字單元,表示如下:ARRAY DW 23, 36, 2, 100, 32000, 54, 0ZERO DW ?(1) 如果BX包含數(shù)組ARRAY的初始地址,請編寫指令將數(shù)據(jù)0傳送給ZERO單元。(2) 如果BX包含數(shù)據(jù)0在數(shù)組中的位移量,請編寫指令將數(shù)

10、據(jù)0傳送給ZERO單元。答:(1) MOV AX, BX+(7-1)*2MOV BX+(7)*2, AX(2) MOV AX, ARRAYBXMOV ARRAYBX+2, AX3.10 如TABLE為數(shù)據(jù)段中0032單元的符號名,其中存放的內(nèi)容為1234H,試問以下兩條指令有什么區(qū)別?指令執(zhí)行完后AX寄存器的內(nèi)容是什么?MOV AX, TABLELEA AX, TABLE答:MOV AX, TABLE是將TABLE單元的內(nèi)容送到AX,(AX)=1234HLEA AX,TABLE是將TABLE單元的有效地址送到AX,(AX)=0032H3.11 執(zhí)行下列指令后AX寄存器中的內(nèi)容是什么?TABLE

11、 DW 10, 20, 30, 40, 50 ;000AH, 0014H, 001EH, 0028H, 0032HENTRY DW 3MOV BX, OFFSET TABLEADD BX, ENTRYMOV AX, BX答:(AX)=1E00H (TABLE的存儲方式如右圖所示)3.12 下列ASCII碼串(包括空格符)依次存儲在起始地址為CSTRING的字節(jié)單元中:CSTRING DB BASED ADDRESSING請編寫指令將字符串中的第1個和第7個字符傳送給DX寄存器。答:MOV DH, CSTRINGMOV DL, CSTRING+7-13.13 已知堆棧段寄存器SS的內(nèi)容是0FFA

12、0H,堆棧指針寄存器SP的內(nèi)容是00B0H,先執(zhí)行兩條把8057H和0F79H分別進棧的PUSH指令,再執(zhí)行一條POP指令。試畫出堆棧區(qū)和SP的內(nèi)容變化過程示意圖(標出存儲單元的物理地址)。答:堆棧區(qū)和SP的內(nèi)容變化過程示意圖如下左圖所示。 3.15 求出以下各十六進制數(shù)與十六進制數(shù)62A0H之和,并根據(jù)結(jié)果設(shè)置標志位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,C

13、F=1,OF=0(4) 和為0000H;SF=0,ZF=1,CF=1,OF=03.16 求出以下各十六進制數(shù)與十六進制數(shù)4AE0H的差值,并根據(jù)結(jié)果設(shè)置標志位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(1)MOV AX, Z SUB AX, X ADD AX, W MOV Z, AX

14、(4)MOV AX, WSUB AX, XCWDMOV BX, 5IDIV BXIMUL YSHL AX, 1 ;(DX),(AX)*2RCL DX, 1(3)ADD Y, 6MOV AX, WIMUL XIDIV YMOV Z, AXMOV R, DX(2)MOV BX, XADD BX, 6MOV CX, RADD CR, 9MOV AX, WSUB AX, BXSUB AX, CXMOV Z, AX3.17 寫出執(zhí)行以下計算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號數(shù)單元的地址。(1) ZW+(Z-X) (2) ZW-(X+6)-(R+9)(3) Z(W*X)/(Y+6),R

15、余數(shù) (4) Z(W-X)/5*Y)*2答: 以下程序都未考慮帶符號數(shù)的溢出 3.18 已知程序段如下:MOV AX, 1234H ;(AX)=1234H,標志位不變MOV CL, 4 ;(AX)和標志位都不變ROL AX, CL ;(AX)=2341H,CF=1,SF和ZF不變DEC AX ;(AX)=2340H,CF=1不變,SF=0,ZF=0MOV CX, 4 ;(AX)和標志位都不變MUL CX ;(AX)=8D00H,CF=OF=0,其它標志無定義INT 20H試問:(1) 每條指令執(zhí)行完后,AX寄存器的內(nèi)容是什么?(2) 每條指令執(zhí)行完后,進位、符號和零標志的值是什么?(3) 程序

16、結(jié)束時,AX和DX的內(nèi)容是什么?答:(1) 見注釋;(2) 見注釋;(3) (AX)=8D00H,(DX)=03.19 下列程序段中的每條指令執(zhí)行完后,AX寄存器及CF、SF、ZF和OF的內(nèi)容是什么?MOV AX, 0 ;(AX)=0, 標志位不變DEC AX ;(AX)=0FFFFH, CF不變,SF=1,ZF=0,OF=0ADD AX, 7FFFH ;(AX)=7FFEH, CF=1,SF=0,ZF=0,OF=0ADD AX, 2 ;(AX)=8000H, CF=0,SF=1,ZF=0,OF=1NOT AX ;(AX)=7FFFH, 標志位不變SUB AX, 0FFFFH ;(AX)=80

17、00H, CF=1,SF=1,ZF=0,OF=1ADD AX, 8000H ;(AX)=0, CF=1,SF=0,ZF=1,OF=1SUB AX, 1 ;(AX)=0FFFFH, CF=1,SF=1,ZF=0,OF=0AND AX, 58D1H ;(AX)=58D1H, CF=0,SF=0,ZF=0,OF=0SAL AX, 1 ;(AX)=0B1A2H, CF=0,SF=1,ZF=0,OF=1SAR AX, 1 ;(AX)=0D8D1H, CF=0,SF=1,ZF=0,OF=0NEG AX ;(AX)= 272FH, CF=1,SF=0,ZF=0,OF=0ROR AX, 1 ;(AX)= 93

18、97H, CF=1,SF和ZF不變,OF=1 答:見注釋。3.20 變量DATAX和變量DATAY的定義如下:DATAX DW 0148H DW 2316HDATAY DW 0237H DW 4052H請按下列要求寫出指令序列:(1) DATAX和DATAY兩個字數(shù)據(jù)相加,和存放在DATAY中。(2) DATAX和DATAY兩個雙字數(shù)據(jù)相加,和存放在從DATAY開始的雙字單元中。(3) 解釋下列指令的作用:STCMOV BX, DATAXADC BX, DATAY(4) DATAX和DATAY兩個字數(shù)據(jù)相乘(用MUL)。(5) DATAX和DATAY兩個雙字數(shù)據(jù)相乘(用MUL)。(6) DAT

19、AX除以23(用DIV)。(5) AA DW 0BB DW 0CC DW 0DD DW 0MOV AX, DATAXMUL DATAYMOV AA , AXMOV BB, DXMOV AX, DATAXMUL DATAY+2ADD BB, AXADC CC, DXMOV AX, DATAX+2MUL DATAYADD BB, AXADC CC, DXADC DD, 0MOV AX, DATAX+2MUL DATAY+2ADD CC, AXADC DD, DX2) MOV AX, DATAXADD DATAY, AXMOV AX, DATAX+2ADC DATAY+2, AXMOV DATAY+

20、4, 0 ;用于存放進位位ADC DATAY+4, 0(4) RESULT1 DW 0DW 0RESULT2 DW 0DW 0MOV AX, DATAXMUL DATAYMOV RESULT1 , AXMOV RESULT1+2, DXMOV AX, DATAX+2MUL DATAY+2MOV RESULT2 , AXMOV RESULT2+2, DX(7) MOV DX, DATAX+2MOV AX, DATAXDIV DATAY(6) MOV AX, DATAXMOV BL, 23DIV BL(1) MOV AX, DATAXADD DATAY, AXMOV AX, DATAX+2ADD

21、DATAY+2, AX(7) DATAX雙字除以字DATAY (用DIV)。答:(3) DATAX和DATAY兩個字數(shù)據(jù)之和加1,結(jié)果存入BX寄存器。3.22 試編寫一程序求出雙字長數(shù)的絕對值。雙字長數(shù)在A和A+2單元中,結(jié)果存放在B和B+2單元中。答:程序段如下:MOV AX, AMOV DX, A+2CMP DX, 0JNS ZHENSHU ;不是負數(shù)則轉(zhuǎn)走NEG DXNEG AXSBB DX, 0ZHENSHU: MOV B, AXMOV B+2, DXINT 20H3.23 假設(shè)(BX)=0E3H,變量VALUE中存放的內(nèi)容為79H,確定下列各條指令單獨執(zhí)行后的結(jié)果。(1) XOR B

22、X, VALUE ;(BX)=9AH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=1(2) AND BX, VALUE ;(BX)=61H,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(3) OR BX, VALUE ;(BX)=0FBH,CF、OF都為0,AF無定義,SF=1,ZF=0,PF=0(4) XOR BX, 0FFH ;(BX)=1CH,CF、OF都為0,AF無定義,SF=0,ZF=0,PF=0(5) AND BX, 0 ;(BX)=00H,CF、OF都為0,AF無定義,SF=0,ZF=1,PF=1(6) TEST BX, 01H ;(BX)=0E3H,C

23、F、OF都為0,AF無定義,SF=1,ZF=0,PF=0答:見注釋。3.24 試寫出執(zhí)行下列指令序列后BX寄存器的內(nèi)容。執(zhí)行前(BX)=6D16H。MOV CL, 7SHR BX, CL答:(BX)=00DAH。3.26 試分析下面的程序段完成什么功能?MOV CL, 04SHL DX, CLMOV BL, AHSHL AX, CLSHR BL, CLOR DL, BL答:本程序段將 (DX),(AX) 的雙字同時左移4位,即將此雙字乘以10H (16)。3.27 假定(DX)=0B9H,(CL)=3,(CF)=1,確定下列各條指令單獨執(zhí)行后DX中的值。(1) SHR DX, 1 ;(DX)=

24、05CH(2) SAR DX, CL ;(DX)=17H(3) SHL DX, CL ;(DX)=5C8H(4) SHL DL, 1 ;(DX)=72H(5) ROR DX, CL ;(DX)=2017H(6) ROL DL, CL ;(DX)=0CDH(7) SAL DH, 1 ;(DX)=0B9H(8) RCL DX, CL ;(DX)=2CCH(4) RCR DL, 1 ;(DX)=0DCH答:見注釋。3.28 下列程序段執(zhí)行完后,BX寄存器的內(nèi)容是什么?MOV CL, 3MOV BX, 0B7HROL BX,1ROR BX, CL答:(BX)=0C02DH。(5) MOV AL, ;空

25、格的ASCII碼送AL寄存器CLDMOV DI, SEG CONAMEMOV ES, DILEA DI, CONAMEREPNE SCASBJNE NEXTDEC DIMOV BX, DINEXT: (2) MOV CX, 20STDMOV SI, SEG CONAMEMOV DS, SIMOV ES, SILEA SI, CONAMEADD SI, 20-1LEA DI, PRLINEADD DI, 20-1REP MOVSB1) MOV CX, 20CLDMOV SI, SEG CONAMEMOV DS, SIMOV ES, SILEA SI, CONAMELEA DI, PRLINERE

26、P MOVSB3.29 假設(shè)數(shù)據(jù)段定義如下:CONAME DB SPACE EXPLORERS INC.PRLINE DB 20 DUP ()用串指令編寫程序段分別完成以下功能:(1) 從左到右把CONAME中的字符串傳送到PRLINE。(2) 從右到左把CONAME中的字符串傳送到PRLINE。(3) 把CONAME中的第3和第4個字節(jié)裝入AX。(4) 把AX寄存器的內(nèi)容存入從PRLINE+5開始的字節(jié)中。(5) 檢查CONAME字符串中有無空格字符,如有則把第一個空格字符的地址傳送給BX寄存器。答:(3) MOV AX, WORD PTR CONAME+3-1(4) MOV WORD PT

27、R PRLINE +5, AX3.33 假定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) CMP DX, CXJA EXCEED(2) CMP BX, AXJG EXCEED(3

28、) JCXZ ZERO(4) CMP BX, AXJO OVERFLOW(5) CMP BX, AXJLE EQ_SMA(6) CMP DX, CXJBE EQ_SMA3.35 指令CMP AX, BX后面跟著一條格式為J L1的條件轉(zhuǎn)移指令,其中可以是B、NB、BE、NBE、L、NL、LE、NLE中的任意一個。如果AX和BX的內(nèi)容給定如下: AX BX(1) 1F52H 1F52H(2) 88C9H 88C9H(3) FF82H 007EH (4) 58BAH 020EH(5) FFC5H FF8BH(6) 09A0H 1E97H(7) 8AEAH FC29H(8) D367H 32A6H問

29、以上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、JLE3.39 考慮以下的調(diào)用序列:(1) MAIN調(diào)用NEAR的SUBA過程(返回的偏移地址為0400);(2) SUBA調(diào)用NEAR的SUBB過程(返回的偏移地址為0A00);(3) SUBB調(diào)用FAR的SUBC過程(返回的段地址為B200,返回的偏

30、移地址為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)圖如下所示:3.40 假設(shè)(EAX)=00001000H,(EBX)=00002000H,(DS)=0010H,試問下列指令訪問內(nèi)存的物理地址是什么?(1) MOV ECX,EAX+EBX(2) MOV EAX+2*EBX,CL(3

31、) MOV DH,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=00007100H3.41 假設(shè)(EAX)=9823F456H,(ECX)=1F23491H,(BX)=348CH,(SI)=2000H,(DI)=4044H。在DS段中從偏移地址4044H單元開始的4個字節(jié)單元中,

32、依次存放的內(nèi)容為92H,6DH,0A2H和4CH,試問下列各條指令執(zhí)行完后的目的地址及其中的內(nèi)容是什么?(1) MOV SI,EAX(2) MOV BX,ECX(3) MOV EBX,DI答:(1) 目的地址為DS:2000H,內(nèi)容依次為:56H,0F4H,23H和98H(2) 目的地址為DS:348CH,內(nèi)容依次為:91H,34H,0F2H和01H(3) 目的操作數(shù)為EBX寄存器,(EBX)=4CA26D92H3.43 請給出下列各指令序列執(zhí)行完后目的寄存器的內(nèi)容。(1) MOV EAX,299FF94HADD EAX,34FFFFH ;(EAX)= 2CEFF93H(2) MOV EBX,

33、40000000SUB EBX,1500000 ;(EBX)= 3EB00000H(3) MOV EAX,39393834HAND EAX,0F0F0F0FH ;(EAX)= 09090804H(4) MOV EDX,9FE35DHXOR EDX,0F0F0F0H ;(EDX)= 6F13ADH答:見注釋。3.44 請給出下列各指令序列執(zhí)行完后目的寄存器的內(nèi)容。(1) MOV BX,-12MOVSX EBX,BX ;(EBX)= 0FFFF FFF4H(2) MOV CL,-8MOVSX EDX,CL ;(EDX)= 0FFFF FFF8H(3) MOV AH,7MOVZX ECX,AH ;(

34、ECX)= 0000 0007H(4) MOV AX,99HMOVZX EBX,AX ;(EBX)= 0000 0099H答:見注釋。3.45 請給出下列指令序列執(zhí)行完后EAX和EBX的內(nèi)容。MOV ECX,307F455HBSF EAX,ECX ;(EAX)= 0DBSR EBX,ECX ;(EBX)= 25D答:見注釋。3.46 請給出下列指令序列執(zhí)行完后AX和DX的內(nèi)容。MOV BX,98HBSF AX,BX ;(AX)= 3DBSR DX,BX ;(DX)= 7D答:見注釋。3.49 試編寫一程序段,要求把BL中的數(shù)除以CL中的數(shù),并把其商乘以2,最后的結(jié)果存入DX寄存器中。答:MOV

35、 AL,BLMOV AH,0 ;假定為無符號數(shù),否則用CBW指令即可DIV CLMOV AH,0SHL AX,1MOV DX,AX3.50 請說明JMP DI和JMP DI指令的區(qū)別。答:JMP DI是轉(zhuǎn)移到以(DI)內(nèi)容為偏移地址的單元去執(zhí)行指令;JMP DI是轉(zhuǎn)移到以(DI)間接尋址的內(nèi)存單元內(nèi)容為偏移地址的單元去執(zhí)行指令。3.51 試編寫一程序段,要求在長度為100H字節(jié)的數(shù)組中,找出大于42H的無符號數(shù)的個數(shù)并存入字節(jié)單元UP中;找出小于42H的無符號數(shù)的個數(shù)并存入字節(jié)單元DOWN中。答:JMP BEGINUP DB 0DOWN DB 0TABLE DB 100H DUP (?) ;數(shù)

36、組BEGIN:MOV CX,100HMOV BX,-1MOV SI,0MOV DI,0L1:INC BXCMP TABLEBX,42HJA L2JB L3JMP L4L2:INC SIJMP L4L3:INC DIL4:LOOP L1MOV UP,SIMOV DOWN,DI第四章 匯編語言程序格式4.1 指出下列指令的錯誤: (1) MOV AH, BX ;寄存器類型不匹配(2) MOV BX, SI ;不能都是存儲器操作數(shù)(3) MOV AX, SIDI ;SI和DI不能一起使用(4) MOV MYDAT BXSI, ES:AX ;AX寄存器不能使用段超越(5) MOV BYTE PTR B

37、X, 1000 ;1000超過了一個字節(jié)的范圍(6) MOV BX, OFFSET MYDAT SI ;MYDAT SI已經(jīng)是偏移地址,不能再使用OFFSET(7) MOV CS, AX ;CS不能用作目的寄存器(8) MOV ECX, AX ;兩個操作數(shù)的數(shù)據(jù)類型不同答:見注釋。4.2 下面哪些指令是非法的?(假設(shè)OP1,OP2是已經(jīng)用DB定義的變量)(1) CMP 15, BX ;錯,立即數(shù)不能作為目的操作數(shù)(2) CMP OP1, 25(3) CMP OP1, OP2 ;錯,不能都是存儲器操作數(shù)(4) CMP AX, OP1 ;錯,類型不匹配,應(yīng)為CMP ax, word ptr op1

38、答:見注釋。4.3 假設(shè)下列指令中的所有標識符均為類型屬性為字的變量,請指出下列哪些指令是非法的?它們的錯誤是什么?(1) MOV BP, AL ;錯,寄存器類型不匹配(2) MOV WORD_OP BX+4*3DI, SP(3) MOV WORD_OP1, WORD_OP2 ;錯,不能都是存儲器操作數(shù)(4) MOV AX, WORD_OP1DX ;錯,DX不能用于存儲器尋址(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DATA_WORD BXSI(7) MOV BXSI, 2 ;錯,BXSI未指出數(shù)據(jù)類型(8) MOV AX, WORD_OP1+WORD_OP2(9

39、) MOV AX, WORD_OP1-WORD_OP2+100(10) MOV WORD_OP1, WORD_OP1-WORD_OP2答:見注釋。4.4 假設(shè)VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處:(1) ADD VAR1, VAR2 ;不能都是存儲器操作數(shù)(2) SUB AL, VAR1 ;數(shù)據(jù)類型不匹配(3) JMP LAB SI ;LAB是標號而不是變量名,后面不能加SI(4) JNZ VAR1 ;VAR1是變量而不是標號(5) JMP NEAR LAB ;應(yīng)使用NEAR PTR答:見注釋。4.5 畫圖說明下列語句所分配的存儲空間及初始化的數(shù)據(jù)值。(1) BY

40、TE_VAR DB BYTE,12,-12H,3 DUP(0,?,2 DUP(1,2),?)(2) WORD_VAR DW 5 DUP(0,1,2),?,-5,BY,TE,256H答:答案如下圖所示。4.9 有符號定義語句如下:BUFF DB 1, 2, 3, 123EBUFF DB 0L EQU EBUFF - BUFF問L的值是多少?答:L6。4.10 假設(shè)程序中的數(shù)據(jù)定義如下:LNAME DB 30 DUP (?)ADDRESS DB 30 DUP (?)CITY DB 15 DUP (?)CODE_LIST DB 1, 7, 8, 3, 2(1) 用一條MOV指令將LNAME的偏移地址

41、放入AX。(2) 用一條指令將CODE_LIST的頭兩個字節(jié)的內(nèi)容放入SI。(3) 用一條偽操作使CODE_LENGTH的值等于CODE_LIST域的實際長度。答:(1) MOV AX, OFFSET LNAME(2) MOV SI, WORD PTR CODE_LIST(3) CODE_LENGTH EQU $ - CODE_LIST ;此語句必須放在CODE_LIST語句之后4.11 試寫出一個完整的數(shù)據(jù)段DATA_SEG,它把整數(shù)5賦予一個字節(jié),并把整數(shù)-1,0,2,5和4放在10字數(shù)組DATA_LIST的頭5個單元中。然后,寫出完整的代碼段,其功能為:把DATA_LIST中頭5個數(shù)中的

42、最大值和最小值分別存入MAX和MIN單元中。答:DATA_SEG SEGMENTNUM DB 5DATA_LIST DW -1, 0, 2, 5, 4, 5 DUP (?)MAX DW ?MIN DW ?DATA_SEG ENDSCODE_SEG SEGMENTMAIN PROC FARASSUME CS: CODE_SEG, DS: DATA_SEGSTART: PUSH DS ;設(shè)置返回DOSSUB AX, AXPUSH AXMOV AX, DATA_SEG ;給DS賦值MOV DS, AXMOV CX, 4 ;程序段開始LEA BX, DATA_LISTMOV AX, BXMOV MAX

43、, AXMOV MIN, AXROUT1: ADD BX, 2MOV AX, BXCMP AX, MAXJNGE ROUT2MOV MAX, AXROUT2: CMP AX, MINJNLE ROUT3MOV MIN, AXROUT3: LOOP ROUT1 ;程序段結(jié)束RETMAIN ENDPCODE_SEG ENDSEND START4.12 給出等值語句如下:ALPHA EQU 100BETA EQU 25GAMMA EQU 2下列表達式的值是多少?(1) ALPHA * 100 + BETA ;=2729H(2) ALPHA MOD GAMMA + BETA ;=19H(3) (ALPHA +2) * BETA 2 ;=9F4H(4) (BETA / 3) MOD 5 ;=3H(5) (ALPHA +3) * (BETA MOD GAMMA) ;=67H(6)

溫馨提示

  • 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

提交評論