1第1章微机运算基础习题和思考题1.请完成以下计算:174.66D=(10101110.10101)B=(AE.A8)H10101110101.01011B=(1397.344)D=(575.58)H4BCH=(010010111100)B=()BCD2.设字长为8位,X=(2A)16,当X分别为原码、补码、反码和无符号数的时候,其真值是多少?答:当X表示原码时,其真值为:+101010当X表示补码时,其真值为:+101010当X表示反码时,其真值为:+101010当X表示无符号数数时,其真值为:001010103.设字长为8位,用补码形式完成下列计算,要求有运算结果并讨论是否发生溢出?120+18-33-37-90-7050+84答:120+18其补码形式分别为:(120)补=01111000(18)补=0001001001111000+0001001010001010由于Cs=0,Cp=1,因此有溢出,结果错误-33-37其补码形式为:(-33)补=11011111(-37)补=1101101111011111+1101101110111010由于Cs=1,Cp=1,所以没有溢出,结果正确-90-70其补码形式为:(-90)补=10011100(-70)补=1011101010011100+1011101001010110由于Cs=1,Cp=0,所以有溢出,结果错误50+842其补码形式为:(50)补=00110010(84)补=0101010000110010+0101010010000110由于Cs=0,Cp=1,所以有溢出,结果错误4.请写出下列字符串的ASCII码值。MynameisZhangsan.4D796E616D6569735A68616E6773616E2E第2章80X86微机系统习题与思考题1.微型计算机主要由哪些基本部件组成?各部件的主要功能是什么?答:微型计算机主要由输入设备、运算器、控制器、存储器和输出设备组成。各部件的功能分别是:1、输入设备通过输入接口电路将程序和数据输入内存;2、运算器是进行算术运算和逻辑运算的部件,它是指令的执行部件;3、控制器是计算机的指挥中心,它负责对指令进行译码,产生出整个指令系统所需要的全部操作的控制信号,控制运算器、存储器、输入/输出接口等部件完成指令规定的操作;4、存储器用来存放程序、原始操作数、运算的中间结果数据和最终结果数据;5、输出设备是CPU通过相应的输出接口电路将程序运行的结果及程序、数据送到的设备;2.微处理器的发展过程是什么?答:微型计算机的发展过程是:第一代(1946~1957)——采用电子管为逻辑部件,以超声波汞延迟线、阴极射线管、磁芯和磁鼓等为存储手段;软件上采用机器语言,后期采用汇编语言。第二代(1957~1965)——采用晶体管为逻辑部件,用磁芯、磁盘作内存和外存;软件上广泛采用高级语言,并出现了早期的操作系统。第三代(1965~1971)——采用中小规模集成电路为主要部件,以磁芯、磁盘作内存和外存;软件上广泛使用操作系统,产生了分时、实时等操作系统和计算机网络。第四代(1971~至今)——采用大规模集成电路(LSI)、超大规模集成电路(VLSI)为主要部件,以半导体存储器和磁盘为内、外存储器;在软件方法上产生了结构化程序设计和面向对象程序设计的思想。3.简述80486微处理器的基本结构。书12页4.80486微处理器的工作模式有几种?当CS内容为1000H,IP内容为7896H,求在实地址模式下的物理地址为多少?答:实模式和保护模式及虚拟8086模式。当CS内容为1000H,IP内容为7896H,在实3地址模式下的物理地址为17896H.5.简述EPROM的工作原理。书27页。6.总线有那几种类型?答:按照总线的传输类型可分为数据、地址、控制三类;按和cpu的距离可分为内部总线、系统总线和外部总线。7.简述ISA与EISA总线的的区别。它们的局限性表现在哪里?书34页。8.PCI局部总线有些什么特点?书35页9.什么是USB?它有什么特点?书41页10.IEEE1394总线有哪些特点?它与USB总线的区别在哪里?书41页。11.简述现场总线的特点。书42页。12.当代计算发展的主要核心技术有哪些?当代计算机的主要核心技术有:CACHE技术、流水线技术、VM技术、RISC技术、多内核技术第3章80X86指令系统习题与思考题1.指出下列各指令中源操作数和目的操作数的寻址方式:⑴MOVBX,WORDPTR[2200H]⑵AAA⑶JUM2200H⑷LESDI,[2100H]⑸MOV[BX+SI+8],BX解答⑴MOVBX,WORDPTR[2200H]源操作数:直接寻址;目的操作数:寄存器寻址⑵AAA源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址⑶JUM2200H程序转移段内直接寻址方式⑷LESDI,[2100H]源操作数:直接寻址;目的操作数:寄存器寻址4⑸MOV[BX+SI+8],BX源操作数:寄存器寻址;目的操作数:基址加变址寻址2.若AX=0ABCDH,BX=7F8FH,CF=1。求分别执行8086CPU指令⑴ADDAX,BX⑵ADCAX,BX⑶SBBAX,BX⑷NEGAX⑸ANDAX,BX⑹ORAX,BX⑺XORAX,BX⑻IMULBL后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。解答⑴AX=2B5CH,SZAPCO=001110B⑵AX=2B5DH,SZAPCO=001010B⑶AX=2C3DH,SZAPCO=001001B⑷AX=5433H,SZAPCO=001110B⑸AX=2B8DH,SZAPCO=00X100B⑹AX=FFCFH,SZAPCO=10X100B⑺AX=D222H,SZAPCO=10X100B⑻AX=3283H,SZAPCO=XXXX11B3.若AL=78H,BL=87H,⑴求执行指令ADDAL,BLDAA之后,AL=?、标志AF=?、CF=?⑵若执行指令SUBAL,BL与DAS后,AL=?、标志AF=?、CF=?解答⑴AL=65H,AF=1,CF=1。⑵AL=91H,AF=0,CF=1。4.指出下列指令中哪些是错误的,并指出错在何处?⑴MOVDL,[DX]⑵MOVES,2000H⑶SUB[BX],[SI]⑷ADDAX,[BX+CX]⑸XCHGDS,[2400H]⑹DEC15H⑺INAL,DX⑻OUT300H,AX解答⑴错,DX不能作为间接寻址的寄存器。⑵错,立即数不能直接送给段寄存器。⑶错,两个存储单元间内容不能直接相减。⑷错,CX寄存器不能作为变址寄存器。⑸错,不允许段寄存器与存储单元内容进行交换⑹错,减1指令不能对段寄存器直接操作5⑺对⑻错,输出指令的地址若是16位,必须用DX间址。5.下列程序段执行后AX=?设数据段有:TABLEDW100,200,300,400ENTRYDW3代码段对DS初始化MOVBX,OFFSETTABLEMOVSI,ENTRYMOVAX,[BX+SI]执行后AX=2C006.将AL中的8位二进制数按倒序方式重新排列,即AL原来为D7D6…D0,倒序后AL=D0D1…D7。参考答案…MOVCX,8L:SHLAL,1RCRBL,1LOOPLMOVAL,BL…7.若起始地址偏移量为2000H的内存单元存放有100个ASCII码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为100H的端口。解答MOVSI,2000HMOVCX,100MOVDX,100HNEXT2:MOVAL,[SI];取字符串中字符送ALANDAL,0FFH;改变标志位JPENEXT1;“1”的个数为偶,bit7不变ORAL,80H;“1”的个数为奇,bit7变为1NEXT1:OUTDX,ALINCSILOOPNEXT2MOVAH,4CHINT21H8.若SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令PUSHAXPUSHBXPUSHF6POPCXPOPDX之后,SP=?SS=?CX=?DX=?并画图指出堆栈中各单元的内容。解答:SS=1000HSP=1FFEHCX=2115HDX=5678H栈中各单元内容如下所示:地址RAM11FFAH211511FFCH567811FFEH123412000H第4章宏汇编语言习题与思考题1.画出以下变量在内存中存储的示意图。D1DB‘A’,’123’,09H,45D2DW‘A’,’CD’,23H,4567HD3DD1234H,23456789H2.设计子程序分别完成以下功能:1)根据给定的参数值,判断该参数是偶数还是奇数。2)把给定参数值的高、低数据位互换。3.设计相应的宏完成以下功能:1)把给定的参数按二进制显示。2)求两个参数的和,并按十进制形式显示。7第5章汇编语言程序设计习题与思考题1.设数据段中有字节型单元NUMBER和FLAG,判断NUMBER与给定的X和Y的大小关系(XY),若NUMBERY,则置FLAG=1,若NUMBERX,则置FLAG=-1,否则置FLAG=0。解答:.486DatasegmentNUMBERdb?FLAGdb?DataendsCodesegmentAssumecs:Code,ds:DataBeg:movax,dataMovds,axmoval,XMovbl,YCmpNUMBER,XJncP1MovFLAG,0FFHJmpexitP1:cmpNUMBER,YJaP2MovFLAG,00HJmpexitP2:movFLAG,01HExit:movah,4chInt21hCodeendsEndBeg2.计算1+2+3+…+100,并把和保存在SUM单元中。.486DATASEGMENTUSE16TTDB1SUMDW?DATAENDS8CODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVCX,100MOVAX,0START:ADDAX,TTINCTTLOOPSTARTMOVSUM,AXMOVAH,4CHMOV21HCODEENDSENDBEG3.对一个给定的N数据,用冒泡排序法进行排序。解答:.486DatasegmentBufdb‘abcd18437hj’Lensequ$-bufCountdblensFlagdb?DataendsCodesegmentAssumecs:code,ds:dataBeg:movax,dataMovds,axAgain:deccountJzdoneMovflag,0Movcx,countMovsi,offsetbufLast:moval,[si]Movah,[si+1]Cmpah,alJncnextMov[si],ahMv[si+1],alMovflag,19Next:incsiLooplastCmpflag,1JeagainDone:movbuf+lens,‘$’Movah,9Movdx,offsetbufInt21hMovah,4chInt21hCodeendsEndBeg4.由键盘输入任意的两个十进制数,然后转换成对应的压缩BCD码的形式在屏幕上显示。.486DATASEGMENTUSE16BCDDB?BUFDB3DB?DB3DUP(?)MESG1DB‘PLEASEINPUT:’,0DH,OAH,’$’MESG2DB‘ERROR!NUMBERISFROM0TO9.PLEASEAGAIN!$’DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXL1:MOVDX,OFFSETMESG1MOVAH,9;显示MESG1INT21HMOVAH,0AHMOVDX,OFFSETBUFINT21H;输入字符串MOVAL,BUF+2CMPAL,30HJCERRORCMPAL,3AHJCNEXT;判断第一个数输