《微计算机原理(第2版)第三章课后习题答案--潘名莲-马争-丁庆生-编著.docx》由会员分享,可在线阅读,更多相关《微计算机原理(第2版)第三章课后习题答案--潘名莲-马争-丁庆生-编著.docx(18页珍藏版)》请在第壹文秘上搜索。
1、第三章80x86指令系统3-1指令由操作码字段和操作数字段组成。8086的指令长度在包范围。 MOV CX, DISPBX(3) MOV SI, AX(5) AND AX, DX(6) MOV AX, BX+10H(8) MOV AX, BX+SI+20H(9) MOV BP, CX3-2分别指出以下指令中源操作数和目的操作数的寻址方式。假设是存储器寻址,使用表达式表示出EA=?PA=?源操作数寻址目的操作数寻址EAPA1)MOVSI.2100H立即数寻址存放潜(2)MOVCX,DlSPfBXJ存放器相对寻址存放器BX+SISP(DS)*16+(BX+DISP)(3)MOV(SI),AX存放器
2、寻址存放器间接SI(DS)*16+(SI)(4)ADCZX,BXlISiJ基址变址寻址存放器BX+SI(DS)*I6+(BX)+(SJ)(5)ANDAX,DX存放器寻址存放器(6)MOVAX,IBX+1OH存放器相对寻址存放器BX+DISP(DS)*16+(BX)+IOH(7)MOVAX.ESrBXl带段超越存放器寻址存放器IBX(ES)*I6+(BX)(8)MOVAX,BX+SI+20H相对基址变址寻址存放器BX+SI+20H(DS)*16+(BX)+(SI)+20H(9)MOV(BP,CX存放器寻址存放器间接IBP(SS)*16+(BP)(10)PUSHDS固定寻址存放器SPJ(SS)*1
3、6+(SP)(I)MOVSI,2100H(4)ADCZX,BXSIMOVAX,ES:BX(10)PUSHDS解:3-38086中一些存放器的内容和一些存储器单元的内容如图3-1所示,试指出以下各条指令执行后,AX中的内容。(I)MOVAX, 2023H(4) MOVAX, BX MOVAX, 1100HBX+SI(2) MOVAX, BX(5) MOVAX, 1100HBX(8) MOVLEA AX, SI(3) MOVAX, 1200H(6) MOV AX, BXSI解:(1) (AX) =2023H(5) (AX) =4C2AH(2) (AX) =OlOOH(6) (AX) =7856H(
4、3)(AX)=4C2AH(4)(AX)=3412H(7)(AX)=65B7H(8)(AX)=0002HM30100H12H30101H34H30102H56H30103H78H3I200H2AH312O1H4CH31202HB7H31203H65HCPUOlOOH0002H3000H图3/3-4(AX)=2040H,(DX)=380H,端口(PORT)=(80H)=IFH,(PORT+1)=45H,执行以下指令后,指出结果等于多少?解:(I)OUTDX,AL(0380H)=40H(2)OUTDX,AX(380H)=40H(381h)=20H(3)INAL,PORT(AL)=IFH(4)INAX
5、,80H(AX)=451FH(5)OUTPORTI,AL(PORT1)=40H(6)OUTPORTl,AX(PORT1)=2040H3-5:(SS)=OA2F0H,(SP)=OOCOH,(AX)=8B31H,(CX)=0F213,试画出以下指令执行到位置1和位置2时堆栈区和SP指针内容的变化示意图。图中应标出存储单元的实际地址PAoPUSHAXPUSHCX;位置1POPF;位置2解:(SS)=OA2F0H,指令顺序依次编号为、,示意图如下图:(SS)=0A2F0H0A2FBCH13H+(SP)4=00BCH(位置1)F2H0A2FBEH31H一(SP)-2=00BEH(3)(SP)+2=00B
6、CH+0002H=00BEH(ifi2)8BH0A2FC0H(SP)=OOCOH3-6识别以下指令的正确性,对错误的指令,说明出错的原因。(1)MOVDS,100(Il)OUTCX5AL(2)MOV1000H,23H(12)INAX,38OH(3)MOV1000H,L2000H(13)MOVCU33OOH(4)MOVDATA,1133H(14)MOVAX,2100HBP(5)MOV1020H,DX(15)MOVDS,ES(6)MOVAX,0100H+BX+BPJ(16)MOVIP,2000H(7)MOVCS,AX(17)PUSHCS(8)PUSHAL(18)POPCS(9)PUSHWORDPT
7、RS1(19)LDSCS,BX(10)IN解:AU80H(20)MOVGAMMA,CS(1),不能对段存放器送立即数(11),应输出到端口而不是通用存放器(2),(3),(4),存储单元类型不正确MOV不能实现两个存储单元间直接传送段名不能作目的操作数(12),(13),(14)用DX做间址存放器380H应存DX类型不匹配(5),立即数不能作目的操作数(15),两个段存放器间不能直接传送(6),基址存放器BX和BP只能使用其中一个(16),(17)IP不能直接用作目的操作数(7),CS不能用作目的操作数(18),CS不能做目的操作数(8),(9)(10)X堆栈操作作为字操作AL应改为AX,80
8、H为输入端口号不加方括号(19),(20),目的操作数应是通用存放器而不能是段存放器CS符号名不能作为目的操作数3-7存储器数据段中的数据如图3-3所示。阅读以下的两个程序段后,答复:1 .每个程序段的运行结果是什么?2 .两个程序段各占多少字节的内容,执行时间是多少?(1)LESSI,NUMl(2)MOVAX,SIMOVAX,NUMlADDAX,4SIADDAX,NUM2MOV8SI,AXMOVSUM,AXADDSL2MOVAX,NUM1+2MOVAX,SIADCAX,NUM2+2ADCAX,4SIMOVSUM+2,AXMOV8SI,AX解:1、运行结果如下:(2)0AC6863A0(1)0
9、AC6863A0H2、时钟周期字节数(1)LESSI,NUMl2+EA24MOVAX,SI103ADDAX,41SI9+EA24MOV8SI,AX103ADDSL2434MOVAX,SI103ADCAX,4SI9+EA24MOV8SIJ,AX1024(2)MOVAX,NUMl103ADDAX,NUM29+EA24MOVSUM,AX9+EA24MOVAX,NUM1+29+EA2-4ADCAX,NUM2+29+EA24MOVSUM+2,AX9+EA24MNUMl48HDS41H16H28HNUM258H22H52H84HSUM图3-33-8数据如图3-3所示,数据的低位在前,按以下要求编写程序段:
10、1 .完成NUMl和单元NUM2两个字数据相加,和存放在NUMl中。2 .完成NUMl单元开始的连续4个字节数据相加,和不超过一字节,存放SUM单元。3 .完成NUMl单元开始的连续8个字节数据相加,和16位数,放在SUM和SUM+1两个单元(用循环)。4 .完成NUMl和NUM2的双倍精度字数据相加,和放在NUM2开始的字单元中。解:1、CLC1.EASI,NUMIMOVAX,WORDPTRSIADDAX,WORDPTRNUM2MOVWORDPTRSI,AXMOVAX,WORDPTRSI+2JADCAX,WORDPTRNUM2+2MOVWORDPTRSI+2,AXHLT2、LEASI,NUM
11、lMOVAL,SIADDAL,1S1ADDAL,2SIADDAL,3S1MOVSUM,ALHLT3、 CLCCLD1.EASI,NUMlMOVAL,SIMOVMOVXORAGA:MOVADCINCDECJNZMOVHLTAH,OCX,7BH,BHBL,1SIAX,BXSICXAGASUM,AX4、LEA1.EAMOVADDMOVMOVADCMOVSI,NUMlDI,NUM2AX,SIAX,DIDILAXAX,2SIAX,2D12DIJ,AX3-9的BCD数如图3-3所示,低位在前,按以下要求编写计算BCD数据为组合型BCD)的程序段。1 .完成从NUMl单元开始的连续8个组合型BCD数相加,和
12、(超过一字节)放在SUM和SUM+1两个单元中。2 .完成NUMI单元和NUM2单元的两个BCD数相减,其差存入SUM单元,差二?,(CF)=?解:1、CLCCLD1.EASI,NUMIMOVCX,7MOVAH,OMOVAL,SIAGA:INCSIADCAL,SIDAA1.OOPAGAMOVSUM,ALMOVSUM+1,AHHLT2、CLCMOVAH,OMOVAL,NUMISUBAL,NUM2DASMOVSUM,AL差=OFOH=-IOH,CF=I3-10写出以下程序段完成的数学计算公式,并画出数据存放的示意图。MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2SUBAX,ZSBBDX,Z+2MOVW,AXMOVW+2,DX解:W=x+-z,数据存放如下图:XX+2YY+2ZZ+2WW+23-11数据如图3-3所示,低位在前,按以下要求编写程序段1.NUMl和NUM2两个数据相乘(均为无符号数),乘积放在SUM开始的单元。2. NUMl和NUM2两个字数据相乘(均为无符号数),乘积放在SUM开始的单元。3. NUMl单元的字节数据除以13(均为无符号数),商和余数依次放入SUM开始的两个字节单元。4. NUMl单元的字节数据除以NUM2字单元的字,商和余数依次放入SUM开始的两个字节单元。解:1 .为32位X32位,极为64