您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 微机原理课后习题参考答案_2011_简版
第一章一.思考题(略)二.综合题1.设机器字长为8位,写出下列用真值表示的二进制数的原码、补码和反码。答:真值原码反码补码(1)+0010101B000101010001010100010101(2)+1110001B011100010111000101110001(3)+1010011B010100110101001101010011(4)-0010101B100101011110101011101011(5)-1111011B111110111000010010000101(6)-1001010B1100101010110101101101102.下列各数均为十进制数,试用8位二进制补码计算下列各题,将运算结果用两位十六进制数表示。答:原题【X+Y】补【X+Y】原(X+Y)真值117+7=00010001B+00000111B=00011000B=18H18H18H28+18=00001000B+00010010B=00011010B=1AH1AH1AH39-6=00001001B+11111010B=00000011B=03H03H3H4-26+7=11100110B+00000111B=11101101B=EDH93H-13H58-18=00001000B+11101110B=11110110B=F6H8AH-0AH619-(-17)=00010011B+00010001B=00100100B=24H24H24H7-25-6=11100111B+11111010B=11100001B=E1H9FH-1FH887-15=01010111B+11110001B=01001000B=48H48H48H3.已知以十六进制数形式给出的补码,求出其相应的真值,真值用十进制数表示:答:补码真值48H721001000B9DH-99-1100011BB2H-78-1001110B5C10H23568101110000010000BF2A1H-3423-110101011111B4.下列各数均为十进制数,试用8位二进制补码计算下列各题,判断说明运算结果是否溢出。答:原题【X+Y】补对应的真值溢出否43+18=00101011B+00010010B=00111101B61未溢出-52+17=11001100B+00010001B=11011101B-35未溢出72-8=01001000B+11111000B=01000000B64未溢出50+87=00110010B+01010111B=10001001B-119溢出(-33)+(-47)=11011111B+11010001B=10110000B-48未溢出(-91)+(-75)=10100101B+10110101B=01011010B90溢出-127+64=10000001B+01000000B=11000001B-63未溢出5.设机器字长为8位。根据给出的不同形式的机器数,如下表,计算其对应的十进制表示的真值。答:二进制机器数(若为)无符号数(若为)原码(若为)反码(若为)补码011011110110110110110010110018989898910001101141-13-114-11511111001249-121-6-7第二章一.思考题(略)二.综合题1.设当前SS=C000H,SP=2000H,AX=2355H,BX=2122H,CX=8788H,则当前栈顶的物理地址是多少?若连续执行PUSHAX,PUSHBX,POPCX3跳指令后,堆栈的内容发生了什么变化?AX,BX,CX中的内容是什么?答:物理地址=C0000H+2000H=C2000H;执行指令后,地址C000H:1FFFH内容是23H;地址C000H:1FFEH内容是55H;地址C000H:1FFDH内容是21H;地址C000H:1FFCH内容是22H;(AX)=2355H,(BX)=(CX)=2122H;2.假设某CPU的时钟频率是8MHz,如果在进行存储器写操作时插入了一个等待周期,完成该写操作的总线周期所需要的时间是多少ns?答:时钟周期=1/8MHz=125ns;所以所需时间=时钟周期*5=625ns。3.设存储器内数据段中存放了两个字2FE5H和3EA8H,已知DS=3500H,数据存放的偏移地址为4B25H和3E5AH,画图说明两个字在存储器中的存放情况。若要读取这两个字,需要对存储进行几次总线读操作?答:…A8H38E5AH3EH38E5BH…E5H39B25H2FH39B26H…2个字共需要3次总线操作。4.8086中的标志寄存器FR中有哪些状态标志和控制标志?这些标志位各有什么含义?假设(AH)=03H,(AL)=82H,试指出将AL和AH中的内容相加和相减后,标志位CF、AF、OF、SF、IF和PF的状态。答:6个状态标志:CF:进位标志;PF:奇偶标志;AF:辅助进位标志;ZF:零标志;SF:符号标志;OF:溢出标志;3个控制标志:IF:中断允许标志;DF:方向标志;TF:单步标志。03H+82H=85H计算后:CF=0;PF=0;AF=0;ZF=0;SF=1;OF=0。03H-82H=81H计算后:CF=1;PF=1;AF=0;ZF=0;SF=1;OF=1。82H-03H=7FH计算后:CF=0;PF=0;AF=1;ZF=0;SF=0;OF=1。5.有一个22个字的数据组成的数据区,起其实地址为6101H:1CE7H。试计算出该数据区首末存储单元的物理地址?答:起始物理地址为:62CF7H数据区末的物理地址为:62CF7H+(22*2-1)2=62D22H6.假设(SS)=20A0H,(SP)=0032H,将(CS)=0A5BH,(IP)=0012H,(AX)=0FF42H,(SI)=537AH,(BL)=5CH依次压入堆栈保存。要求:(1)画出堆栈数据存放示意图;(2)写出压栈完毕后SS和SP的值。答:(1)堆栈必须为字操作—只有PUSHBX是正确的此时,BX中的高8位BH不能确定,但不影响压栈操作,不影响SP的变化(2)SS=20A0H,SP=0028H7.若某存储单元的实际地址为2BC60H,且该存储单元所在的段首地址为2AF00H,则该存储单元在段内的偏移地址为多少?答:偏移地址=2BC60H-2AF00H=0D60H7AH53H5CH00H20A2AH20A2BHH20A28H20A29HH42HFFH20A2CH20A2DHH12H00H20A2EH20A2FHH5BH0AH20A30H20A31H()H堆栈必须为字操作第三章1.指出下列指令的错误原因。(1)ANDAX,DL;类型不匹配(2)ADDCS,DX;CS不能作为目的操作数(3)MOVAX,IP;IP不能作为指令的操作数(4)MOV[BP][SI],[SI];两个操作数不能同时为内存操作数(5)SUB[BP][SI],ES:DX;段超越前缀只能用在内存操作数之前(6)XCHGAL,[SI][DI];没有[SI][DI]这种操作数形式(7)JGEAX;条件转移指令的操作数只能是标号(8)PUSHDL;对堆栈不能进行字节操作2.用一条指令将BX清0。(请给出3种方法)方法1:MOVBX,0方法2:SUBBX,BX方法3:ANDBX,0;将BX和0做与,可以将BX清零方法4:XORBX,BX3.写出实现下列功能的指令序列。(1)判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法)方法1:CMPAX,0JZLABEL;如果ZF=0,说明AX为0,因为CMP指令是做减法,但是不写回结果,因此指令执行后AX内容不会受到破坏方法2:TESTAX,0FFFFHJZLABEL;如果ZF=0,说明AX为0方法3:ANDAX,0FFFFHJZLABEL(2)将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。MOVAH,ALANDAL,0FH;AL高4位通过与清零,而低4位保持不变MOVCL,4SHRAH,CL;这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零(3)若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。MOVDX,AX;首先判断是否是1奇1偶,如是则保持不变ADDDX,BXTESTDX,01H;检测AX与BX是否同为偶数或同为奇数JZCONTINUETESTAX,01H;检测AX的最低位JNZCONTINUEXCHGAX,BXCONTINUE:….;无需处理,AX,BX中内容将不变4.分析下列指令序列完成什么功能。MOVCL,4SHLDX,CLMOVBL,AHSHLAX,CLSHRBL,CLORDL,BL答案:将DX.AX中的32位数整体逻辑左移4位。5.给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。指令ALCFOFSFZF备注MOVAL,100100/64HMOV指令不影响标志位XORAL,AL100/64H0001除NOT外,逻辑运算后CF=OF=0,其余据结果设置;逻辑运算指令下,AF标志位为任意值MOVAL,-1-1/0FFH0001MOV指令不影响标志位INCAL00001INC不影响CF,其余根据结果设置NOTAL0FFH0001NOT指令不影响标志位SHLAL,10FEH1010位移指令根据移出的位设CF;根据结果设SF,ZF,PF;只移动一位时,根据移位前后最高位是否变化设置,决定OF,有变化OF=1,无变化OF=0;移动多位时,OF位无定义;位移运算指令下,AF标志位为任意值CMPAL,100FEH0010CMP指令根据结果设置6个标志位SUBAL,7FH7FH0100SUB根据结果设置6个标志位SHLAL,10FEH0110解释同上6.比较AX,BX和CX中无符号数的大小,将最小数放入AX中。答案:CMPAX,BXJCBBB;如果AX=BX,跳转XCHGAX,BX;否则,交换AX和BX的值,将两者中的小值放到AX中去BBB:CMPAX,CXJCCCC;如果AX=CX,跳转XCHGAX,CX;否则,交换AX和CX的值,将两者中的小值放到CX中去CCC:INT20H;返回DOS7.变量定义伪指令与符号定义伪指令的主要作用是什么?答案:变量定义伪指令:主要用来为某种类型(比如字节型、字型)的内存单元的地址,指定一个可以引用的名字标识。符号定义伪指令:其实就是定义一个宏替换常量,用定义的符号代表一个文本串或者一个数值,在程序中遇到定义的符号时,用相应的文本串或者数值去替换。8.设有下列段定义:DSEGSEGMENTXDW1,3DSEGENDS给出下列两组指令序列分别执行后AX的值。(1)MOVAX,DSEGMOVDS,AXMOVAX,X+1;地址运算(2)MOVAX,SEGXMOVES,AXMOVAX,ES:XINCAX答案:(1)(AX)=0300H(2)(AX)=0002H9.设有如下定义的数据段:DATASEGMENTORG10HV1DW2DUP(20),$+10BUF1DB‘100’,5DD0BUF2DW1,2,2A9HLENEQUBUF2–BUF1VADWBUF1DATAENDS则:V1+1中存放的字节数据为(00H);V1+4中存放的字数据为(001EH);VA的内容为(16H);LEN的值为(8)。10.在数据段定义的两个变量S1和S2,要求设计一个完整的程序,将以S1为首地址的50个字节依次传送到以S2为首地址的内存单元中。datasgsegments1db25dup('12')s2db50dup(?)datasgends0010HV114H0011H00H0012H14H0013H00H0014H1EH0015H00H0016HBUF1‘1’0017H‘0’0018H‘0’0019H05H001AH0001BH0001CH0001DH0001EHBUF201H001FH00H0020H02H0021H00H0022HA9H0023H02H0024H
本文标题:微机原理课后习题参考答案_2011_简版
链接地址:https://www.777doc.com/doc-2470102 .html