第一章请各位读者自习阅读课本,答案比较明显,方可找到答案,这里不再提供第二章1.将下列十进制数转换成二进制和十六进制(1)129.75=100000001.11B=81.CH(2)218.8125=11011010.1101B=DA.DH(3)15.625=1111.101B=F.AH(4)47.15625=101111.00101B=2F.28H2.将下列二进制数转换成十进制和十六进制(1)111010B=58=3AH(2)10111100.11B=188.875=BC.EH(3)0.11011B=0.84375=0.D8H(4)11110.01B=30.25=1E.4H4、完成下列16进制的加减法运算。(1)0D14BH(2)9C28.EH(3)1678.FCH(4)-80D7H5.计算下列表达式的值(1)128.8125+10110101.1011B+1F.2H=(101010101.101)B(2)287.68-10101010.11B+8E.EH=(103.CE)H(3)18.9+1010.1101B+12.6H-1011.1001B=(36.525)D7.写出下列以补码表示的二进制数的真值:1)[X]补=1000000000000000?X=-1000000000000000=-215=-32768(2)[Y]补=0000000100000001?Y=+0000000100000001=+257(3)[Z]补=1111111010100101?X=-000000101011011=-347(4)[A]补=0000001001010111?X=+0000001001010111=+5999、设有变量……..X+Y=1B8HY+Z=161HY+Z=13BHZ+V=0CCH(1)不正确不正确不正确正确(2)正确正确正确溢出12.试计算下列二进制数为无符号数、原码、反码、补码、8421BCD码时分别代表的数值大小。若为非8421BCD数时请指出。(1)10001000B无符号数:27+23=136原码:-0001000=-8反码:-1110111=-119补码:-1111000=-1208421BCD码:882)00101001B无符号数:25+23+20=41原码:41反码:41补码:418421BCD码:293)11001001B无符号数:27+26+23+20=201原码:-1001001=-73反码:-0110110=-54补码:-0110111=-558421BCD码:非8421BCD码(4)10010011B无符号数:27+24+21+20=147原码:-0010011=-19反码:-1101100=-108补码:-1101101=-1098421BCD码:93第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。(2)EU的作用:执行指令,并为BIU提供所需的有效地址。(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。这样就实现了取指和执行指令的并行工作。2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。其主要作用是:(1)数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。AX,BX,CX,DX(2)地址寄存器:一般用来存放段内的偏移地址。SP,BP,SI,DI(3)段寄存器:用于存放段地址.CS,DS,ES,SS(4)控制寄存器,FLAGS,IP具体寄存器略。3.8086/8088CPU中有哪些寄存器可用来指示操作数在存储器中某段内的偏移地址?答:可用来指示段内偏移地址的寄存器共有6个:IP、SP、BP、BX、SI、DI.4.8086/8088CPU中标志寄存器FLAGS有哪些标志位?它们的含义和作用如何?答:标志寄存器中的标志共有9个,分为两类:状态标志6个和控制标志3个。其作用是:(1)状态标志:用来反映算术和逻辑运算结果的一些特征。CF,AF,PF,ZF,SF,ZF(2)控制标志位:用来控制CPU的操作,由程序设置或清除。DF,IF,TF.具体寄存器位介绍略。5.8086/8088CPU的地址总线有多少位?其寻址范围是多少?答:8086/8088地址总线有20根,可寻址1MB空间,范围:00000H~0FFFFFH.6.什么叫指令队列?8086/8088CPU中指令队列有什么作用?其长度分别是多少?答:(1)指令队列:采用“先进先出”原则,按顺序存放预执行指令的缓冲器称为指令队列。(2)指令队列的作用:存放EU将要执行的指令,使CPU的取指和执行指令能并行工作。(3)指令队列的长度:8086为6个字节,8088为4个字节。7.Intel8086与8088有何区别?答:8086与8088的区别有三处:(1)外部数据总线位数不同(即地址/数据分时复用引脚条数不同);8086为16位:AD15~AD0。8088为8位:AD7~AD0。(2)内部指令队列缓冲器长度不同;8086有6个字节。当指令队列出现2个空字节时,BIU将取指补充。8088有4个字节。当指令队列出现1个空字节时,BIU将取指补充。(3)外部某些控制总线定义不同。①8086的28号引脚定义为M/IO(S2),8088定义为IO/M(S2)②8086的34号引脚定义为BHE/S7,8088定义为SS0/(HIGH)第4章作业1、指出源操作数的寻址方式⑴MOVBX,2000H;立即数寻址⑵MOVBX,[2000H];直接寻址⑶MOVBX,[SI];寄存器间接寻址⑷MOVBX,[SI+2000H];寄存器相对寻址⑸MOV[BX+SI],AL;寄存器寻址⑹ADDAX,[BX+DI+80];基址变址相对寻址⑺MULBL;寄存器寻址⑻JMPBX;段内间接寻址⑻SUBAX,BX;寄存器寻址⑼INAL,DX;端口间接寻址⑽INCWORDPTR[BP+10H];寄存器相对寻址⑾MOVCL,LENGTHVAR;立即数寻址⑿MOVBL,OFFSETVAR1;立即数寻址2、指出下列指令是否正确(1)MOVDS,0100H;错误。源操作数是立即数时,目的操作数不能是段寄存器(2)MOVBP,AL;错误。操作数类型不一致(3)XCHGAH,AL;正确。(4)OUT310H,AL;错误。端口直接寻址的范围应在0~FFH之间(5)MOVBX,[BX];正确。(6)MOVES:[BX+DI],AX;正确。(7)MOVAX,[SI+DI];错误。存储器寻址中有效地址不能由两个变址寄存器组成(8)MOVSS:[BX+SI+100H],BX;正确。(9)ANDAX,BL;错误。操作数类型不一致(10)MOVDX,DS:[BP];正确(11)ADD[SI],20H;错误,目的操作数类型不明确。(12)MOV30H,AL;错误,目的操作数不能为立即数(13)PUSH2000H;错误。堆栈指令的操作数不能是立即数(14)MOV[SI],[2000H];错误。两个操作数不能同时为存储器操作数(15)MOVSI,AL;错误。操作数类型不一致(16)ADD[2000H],20H;错误,目的操作数类型不明确(17)MOVCS,AX;错误,目的操作数不能为代码段寄存器(18)INC[DI];错误,目的操作数类型不明确(19)OUTBX,AL;错误。端口间接寻址的寄存器只能是DX寄存器(20)SHLBX,3;错误。移位次数大于1时应该用CL寄存器(21)XCHGCX,DS;错误。交换指令中不能出现段寄存器(22)POPAL;错误。堆栈指令的操作数只能是字操作数(即16位操作数)3.写出下列指令中存储器操作数物理地址的计算表达式:1)MOVAL,[DI](DS)×10H+(DI)(2)MOVAX,[BX+SI](DS)×10H+(BX)+(SI)(3)MOV5[BX+DI],AL(DS)×10H+(BX)+(DI)+5(4)ADDAL,ES:[BX](ES)×10H+(BX)5)SUBAX,[1000H](DS)×10H+1000H(6)ADCAX,[BX+DI+2000H(DS)×10H+(BX)+(DI)+2000H(7)MOVCX,[BP+SI](SS)×10H+(BP)+(SI)(8)INCBYTEPTR[DI](DS)×10H+(DI)4.若(DS)=3000H,(BX)=2000H,(SI)=0100H,(ES)=4000H,计算下列各指令中存储器操作数的物理地址。1)MOV[BX],AL(DS)×10H+(BX)=32000H(2)ADDAL,[BX+SI+1000H](DS)×10H+(BX)+(SI)+1000H=33100H(3)MOVAL,[BX+SI](DS)×10H+(BX)+(SI)=32100H(4)SUBAL,ES:[BX](ES)×10H+(BX)=42000H5.若(CS)=E000H,说明代码段可寻址物理存储空间的范围。代码段物理地址为:(CS):(IP)所以可寻址物理地址范围为:(CS)×10H+(IP),其中IP的为16位寄存器,取值范围为:0000H~0FFFFH所以有寻址范围为:0E0000H~0EFFFFH6.设(SP)=2000H,(AX)=3000H,(BX)=5000H,问执行下面程序段后:PUSHAXPUSHBXPOPAX(SP)=1FFEH,(AX)=5000H,(BX)=5000H7、试比较SUBAL,09H与CMPAL,09H这两条指令的异同。若(AL)=08H,分别执行上述两条指令后,(AL)=?,CF=?,OF=0,ZF=?(1)相同点:两条指令都能完成(AL)-09H的功能,并且都影响六个状态标志位;不同点:SUB指令将运算结果回送到AL寄存器中,而CMP指令不回送。(2)①(AL)=FFH,②(AL)=08H,CF=1,OF=0,ZF=08、分别执行下列指令,试求AL的内容及各状态标志位的状态。(1)MOVAL,19H;ADDAL,61H;(AL)=7AHOF=0SF=0ZF=0AF=0PF=0CF=0(2)MOVAL,19H;SUBAL,61;(AL)=0DCHOF=0SF=1ZF=0AF=1PF=0CF=1MOVAL,19H;SUBAL,61H;(AL)=0B8HOF=0SF=1ZF=0AF=0PF=1CF=1(3)MOVAL,5DH;ADDAL,0C6H;(AL)=23HOF=0SF=0ZF=0AF=1PF=0CF=1(4)MOVAL,7EH;SUBAL,95H;(AL)=0E9HOF=1SF=1ZF=0AF=0PF=0CF=19.选用最少的指令,实现下述要求的功能。1)AH的高4位清0ANDAH,0FH(2)AL的高4位取反XORAL,0F0H(3)AL的高4位移到低4位,高4位清0MOVCL,4SHRAL,CL(4)AH的低4位移到高4位,低4位清0MOVCL,4SHLAL,CL11.设初值(AX)=0119H,执行下列程序段后(AX)=?MOVCH,AHADDAL,AH(AX)=011AHDAA(AX)=0120H压缩型BCD码调整XCHGAL,CH(AL)=01HADCAL,34H(AX)=0135HDAA(AX)=0135HMOVAH,AL(AH)=35HMOVAL,CH(AL)=20H结果:(AX)=3520H12.指出下列程序段的功能1)MOVCX,10CLDLEASI,FirstLEADI,SecondREPMOVSB功能:将First开始的10个字节数据复制到Second开始的内存中2)CLDLEADI,[0404H]MOVCX,0080HXORAX,AXREPSTOSW功能:将0404H开始的80H个字(100H个字节)的内存填充016.已知(DS)=091