




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 绪论习题与参考答案(部分)1. 把下列二进制数转换成十进制数、十六进制数及BCD码形式。(1) 10110010B =(2) 01011101.101B =解:(1) 10110010B = 178D = B2H = (0001 0111 1000)BCD(2) 01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2. 把下列十进制数转换成二进制数。(1) 100D =(2) 1000D =(3) 67.21D =解:(1) 100D = 01100100B(2) 1000D = 1111101000B(3) 67
2、.21D = 1000011.0011B3. 把下列十六进制数转换成十进制数、二进制数。(1) 2B5H =(2) 4CD.A5H =解: (1) 2B5H = 693D = 0010 1011 0101B(2) 4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4. 计算下列各式。(1) A7H+B8H =(2) E4H-A6H =解:(1) A7H+B8H = 15FH(2) E4H-A6H = 3EH5. 写出下列十进制数的原码、反码和补码。(1) +89(2) -37解:(1) +89 原码、反码和补码为: 01011001B(2) -3
3、7 原码 = 10100101 B -37 反码 = 11011010 B-37 补码 = 11011011 B6求下列用二进制补码表示的十进制数(1)(01001101)补 = (2)(10110101)补 =解:(1)(01001101)补 = 77D(2)(10110101)补 = -75D 7请用8位二进制数写出下列字符带奇校验的ASCII码。(1)C: 1000011(2)O: 1001111(3)M: 1001101(4)P: 1010000解:(1)C:0 1000011(2)O: 0 1001111(3)M:1 1001101(4)P: 1 10100008请用8位二进制数写出
4、下列字符带偶校验的ASCII码。(1)+:0101011 (2)=: 0111101(3)#:0100011 (4)>: 0111110解:(1)+:0 0101011 (2)=: 1 0111101(3)#:1 0100011 (4)>: 1 01111109叙述CPU 中PC的作用。解:PC是CPU中的程序计数器,其作用是提供要执行指令的地址。第2章 微处理器的结构习题与参考答案1. 80868088 CPU 由哪两大部分组成?请分别叙述它们的功能。解:8086/8088 CPU均由两个独立的逻辑单元组成,一个称为总线接口单元BIU(Bus Interface Unit),另一
5、个称为执行单元EU(Execution Unit)。总线接口单元BIU取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储器单元或I/O端口存取数据。执行单元EU任务是执行指令,进行全部算术逻辑运算、完全偏移地址的计算,向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。2. 80868088与传统的计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点?解:总线接口部分和执行部分是分开的,每当EU执行一条指令时,造成指令队列空出2个或空出一个指令字节时 ,BIU马上从内存中取出下面一条或几条指令,以添满他的指令队列
6、。这样,一般情况下,CPU在执行完一条指令后,便可马上执行下一条指令,不像以往8位CPU那样,执行完一条指令后,需等待下一条指令。即EU从指令队列中取指令、执行指令和BIU补充指令队列的工作是同时进行的。这样大大提高了CPU利用率,降低了系统都对存储器速度的要求。 3. 状态标志和控制标志有何不同?80868088的状态标志和控制标志分别有哪些?解:8086/8088 CPU设立了一个两字节的标志寄存器,共九个标志。其中标志位O、S、Z、A、P、C是反映前一次涉及ALU操作结果的状态标志,D、I、T是控制CPU操作特征的控制标志。4. 80868088 CPU寻址存储器时,什么是物理地址?逻辑
7、地址?它们之间有何关系?解:8086/8088系统中每个存储单元都有一个物理地址,物理地址就是存储单元的实际地址编码。在CPU与存贮器之间进行任何信息交换时,需利用物理地址来查找所需要的访问的存储单元。逻辑地址由段地址和偏移地址两部分组成。逻辑地址的表示格式为:段地址:偏移地址。知道了逻辑地址,可以求出它对应的物理地址:物理地址=段地址×10H+偏移地址。5. 段寄存器CS1200H,指令指针寄存器IPFF00H,此时,指令的物理地址为多少?指向这一物理地址的CS值和IP值是唯一的吗?解:根据:物理地址=段地址×10H+偏移地址,指令的物理地址为21F00H。指向这一物理地
8、址的CS值和IP值不唯一。6. 8086 CPU中信号和A0信号是通过怎样的组合解决存储器和外设端口的读写的?这种组合决定了8086系统中存储器偶地址体及奇地址体之间应该用什么信号区分?怎样区分?解:若存取一个字节的数据,总是用一个总线周期来完成该操作;若存取一个字,则依该字是规则字还是不规则字需用一个或两个总线周期来完成。对规则字,只用一个总线周期来完成16位数据的传送,而对于非规则字则用相邻两个总线周期来完成该字的存储操作,先取其奇地址字节(即数据的低位字节),然后存取偶地址字节。在组成存储系统时,总是偶地址单元的数据通过AD0AD7传送,而奇地址单元的数据通过AD8AD15传送,即通过总
9、线高字节传送。信号和A0信号控制存储器读写见下表:操作A0 使用的数据总线存取规则字 00AD15AD0传送偶地址的一个字节10AD7AD0传送奇地址的一个字节01AD15AD8存取非规则字 01AD15AD8(第一个总线周期)10AD7AD0(第二个总线周期)11为非法码第3章 80x86指令系统习题与参考答案1、指出下列指令中操作数的寻址方式(8086系统)。(1) MOVAX,100(2) MOVAX,100(3) MOVDL,BP+SI(4) MOVBX,CX(5) MOVDX,SI(6) MOV1234HBX,DS(7) MOVDI+5678H,AL(8) MOV12BPDI,BH(
10、9) POPCX(10)MOVAX,BX+SI+10解:目的操作数源操作数(1) MOVAX,100寄存器寻址立即数寻址(2) MOVAX,100寄存器寻址直接寻址(3) MOVDL,BP+SI寄存器寻址基址变址寻址(4) MOVBX,CX寄存器间接寻址寄存器寻址(5) MOVDX,SI寄存器寻址寄存器间接寻址(6) MOV1234HBX,DS寄存器相对寻址寄存器寻址(7) MOVDI+5678H,AL寄存器相对寻址寄存器寻址(8) MOV12BPDI,BH相对基址变址寻址寄存器寻址(9) POPCX寄存器寻址隐含为堆栈(10)MOVAX,BX+SI+10寄存器寻址相对基址变址寻址2、指出下列
11、指令中操作数的寻址方式(80386系统)。(1) MOVEBX+12H,AX(2) MOVEBP+EDI*2,EBX(3) MOVEBX*4,BX(4) MOVEDX,EAX+ESI*8-12H解:目的操作数源操作数(1)寄存器相对寻址寄存器寻址(2)基址比例变址寻址寄存器寻址(3)比例变址寻址寄存器寻址(4)寄存器寻址相对基址比例变址寻址3、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。(1) PUSH1234H(2) MOVCS,AX(3) INAX, 300(4) MOVAX,DX+12(5) MOVBX,BX(6) MOVDS,1000H(7) XCHGAL,AL(8
12、) MOVAL,100H(9) MOVDX,AL(10)LEABL,BX+5(11)LEADX,BX(12)MOV1000H,12H(13)ADDAX,DS(14)SUB0100H,BYTE PTR 0001(15)SHLBL,2(16)SHRCL,CL(17)MULAL,BL(18)INT400解:(1)非法,8086系统不允许PUSH指令的操作数为立即数;(2)非法,MOV指令中CS不能作为目的操作数;(3)非法,端口号大于0FFH;(4)非法,DX不能出现在中括号内;(5)合法;(6)非法,不能把立即数赋给段寄存器;(7)合法;(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;(
13、9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配;(10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器;(11)非法,LEA指令的源操作数只能是存储器操作数;(12)非法,指令存在歧义,无法确定传送的是字节还是字;(13)非法,段寄存器不能参与算术运算;(14)非法,源和目的寄存器不能同为存储器操作数;(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中;(16)合法;(17)非法,在8086系统中MUL指令没有双操作数的用法;(18)非法,中断类型号大于0FFH。4、指出以下指令中,哪些指令是非法的,并说明为什么(80386系统)。(
14、1) MOVAX,12EBXSI*16(2) RCREAX,10(3) PUSH5678H(4) POP1000H(5) MOVEAX+EAX,EAX(6) MOVAL,ESP+ESP*2(7) MOVBL,AX+12(8) IMULAL,BL,12解:(1)非法,比例因子只能是1、2、4、8,不能是16;(2)合法;(3)合法;(4)非法,POP指令的目的操作数不能是立即数;(5)合法;(6)非法,ESP只能作为基址寄存器,不能作为变址寄存器;(7)非法,在386系统中AX不能作为基址寄存器,也不能作为变址寄存器;(8)合法。5、假设(AX)=1234H,(BX)=5678H,(SP)=10
15、00H,指出执行下面的程序段后,各相关寄存器及堆栈段中的内容。PUSHAX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节SP=?, 栈顶第二字节SP+1=?PUSHBX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节SP=?, 栈顶第二字节SP+1=?POPAX ;(AX)=?,(BX)=?,(SP)=?,栈顶字节SP=?, 栈顶第二字节SP+1=?解:(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节SP=34H,栈顶第二字节SP+1=12H(AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节SP=78H,栈顶第二字节SP+1=56
16、H(AX)=5678H,(BX)=5678H,(SP)=0FFEH,栈顶字节SP=34H,栈顶第二字节SP+1=12H6、假设A、B、C、D、X、Y为字节变量,AA、BB、YY为字变量,试利用算术运算指令编写程序段,完成以下各算术运算题。(1)计算YYA+B*C,其中A、B、C都是无符号数;(2)计算(AA+BB)/(C-D),商赋给X,余数赋给Y,其中AA、BB、C、D都是带符号数;(3)计算YY(A-B)*C,其中A、B、C都是未组合BCD码。解:(1)MOVAL,BMULCADDAL,AADCAH,0MOVYY,AX(2)MOVAX,AAADDAX,BBMOVBL,CSUBBL,DIDI
17、VBLMOVX,ALMOVY,AH(3)MOVAL,ASUBAL,BAASMULCAAMMOV YY, AX7、利用移位指令编写程序段,实现以下运算。(1)计算AXAX*10,其中AX为无符号数;(2)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位计算(DX,AX)(DX,AX)*2。(3)32位带符号数存放在寄存器DX和AX中,其中DX存放高16位,AX存放低16位计算(DX,AX)(DX,AX)/2。解:(1)SHLAX,1MOVBX,AXSHLAX,1SHLAX,1ADDAX,BX(2)SALAX,1RCLDX,1(3)SARDX,1RCRAX,18、指出
18、以下指令执行后,标志寄存器OF、SF、ZF、AF、PF、CF的状态。(1)(AL)=0FFH,(BL)=20H,执行指令:ADDAL,BL(2)(AL)=01H, (BL)=02H,执行指令:CMPAL,BL(3)(AL)=0FFH,执行指令:INC AL(4)(AL)=0,执行指令:DECAL(5)(AL)=0F0H,(BL)=04H,执行指令:IMULBL(6)(AX)=1F0H,(BL)=08H,执行指令:DIVBL(7)(AL)=12H, (BL)=34H,执行指令:TESTAL,BL(8)(AL)=98H,执行指令:SALAL,1解:OFSFZFAFPFCF(1)000001(2)0
19、10111(3)00111×(4)01011×(5)00(6)(7)00000(8)10011注:0表示结果为0,1表示结果为1,×表示结果不变,表示结果不确定。9、在8086系统下,编写实现如下功能的程序段:(1)从地址为80H的端口中读入一个字节;(2)如果该字节最高位为“1”,则将字节0FFH送到地址为81H的端口中,并退出程序;(3)如果该字节最高位为“0”,则转向第(1)步,继续循环扫描。解: 参考程序段:AGAIN:INAL, 80HTESTAL, 80HJZAGAINMOVAL, 0FFHOUT81H, AL10、我们知道,MOV指令并不能直接修改C
20、S、IP的值,但事实上,我们还可以通过其他方法来达到修改CS、IP的目的。试编写一个程序段,使该程序段运行后,(CS)=0100H,(IP)=0000H。解:方法一、利用段间返回指令RETF:MOVAX,0100HPUSHAX;段基址入栈MOVAX,0PUSHAX;偏移量入栈RETF方法二、利用JMP指令实现段间跳转,假设ADDR为双字变量:MOVWORD PTR ADDR,0;WORD PTR ADDR偏移量MOVWORD PTR ADDR+2, 0100H;WORD PTR ADDR+2段基址JMPDWORD PTR ADDR第4章 汇编语言程序设计习题与参考答案1、指出以下数据定义伪指令
21、所分配的字节数(8086系统)。(1)DATA1DB10,?,A(2)DATA2DW10 DUP(2,3 DUP(?),1)(3)DATA3DBHELLO,WORLD!,$(4)DATA4DWDATA4解:(1)3字节;(2)100字节;(3)13字节;(4)2字节。2、指出以下数据定义伪指令所分配的字节数(80386系统)。(1)DATA1DF12,34,56(2)DATA2DFDATA2(3)DATA3DQ0,10 DUP(?)(4)DATA4DT0,1,2解:(1)18字节;(3)6字节;(3)88字节;(4)30字节。3、指出以下指令中哪些是无效的,并说明原因。(1)ADDRDB$(2
22、)DATADBF0H,12H(3)1_DATADW1234H(4)VARDWVAR1;VAR1为一个字节变量(5)MOVAX,10-VAR1;VAR1为一个字变量(6)MOVBX,VAR2*2+1;VAR2为一个字变量解:(1)非法,地址计数器$是32位数;(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;(3)非法,变量名非法,不能以数字开头;(4)合法;(5)非法,地址表达式不能是“常数-地址”;(6)非法,地址表达式不能出现乘法。4、假设已定义数据段如下:DATASEGMENTORG100HDATA1DB10 DUP(1,2,3)DATA2DWDATA1,$DATA
23、ENDS且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。请指出以下指令执行后,相应的寄存器中的内容。(1)MOVAX,WORD PTR DATA1;(AX)=?(2)MOVBX,DATA2;(BX)=?(3)MOVCX,DATA2+2;(CX)=?(4)MOVDX,OFFSETDATA2;(DX)=?(5)MOVSI,SEGDATA1;(SI)=?(6)MOVDI,LENGTHDATA1;(DI)=?(7)MOVSP,TYPE DATA1;(SP)=?(8)MOVBP,SIZE DATA2;(BP)=?解:(1)(AX)=0201H;(2)(BX)=0100H;(3)(CX
24、)=0120H;(4)(DX)=011EH;(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。5、在8086系统下,编写完整程序,实现从键盘上输入8位二进制数,从显示器上显示相应的16进制数,例如从键盘上输入“00010010”,应在显示器上显示“12H”。解:参考程序:DATASEGMENTMSG1DB'Input binary number(ESC to exit):','$'MSG2DB0AH,0DH,'Input error!',0AH,0DH,'$'DATAE
25、NDSOUTPUTMACROASC;定义输出一个字符的宏MOVDL, ASCMOVAH, 2INT21HENDMCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXAGAIN:LEADX, MSG1MOVAH, 9INT21H;提示输入信息MOVCX, 8;输入8位二进制数MOVBL, 0L:MOVAH, 1INT21HSHLBL, 1CMPAL, 1BH;ESC键退出JZDONECMPAL, '0';输入“0”JZNEXTCMPAL, '1';输
26、入“1”JNZERROR;输入其他则出错INCBLNEXT:LOOPLOUTPUT0AHOUTPUT0DHPUSHBXMOVCL, 4SHRBL, CLCALLTRAN;显示高4位对应的16进制数POPBXANDBL, 0FHCALLTRAN;显示低4位对应的16进制数OUTPUT'H'OUTPUT0AHOUTPUT0DHJMPAGAINERROR:LEADX, MSG2MOVAH, 9INT21HJMPAGAINDONE:RETMAINENDPTRANPROCFARCMPBL, 0AHJBBELOWADDBL, 7BELOW:ADDBL, 30HOUTPUTBLRETTRAN
27、ENDPCODEENDSENDMAIN6、在8086系统下,编写完整程序,实现从键盘上输入两个4位十进制数,从显示器上显示这两个数之和,例如输入“1234”、“5678”,应在显示器上显示“6912”。解:参考程序:DATASEGMENTMSG1DB 'Input the first number(ESC to exit):','$'MSG2DB 'Input the second number(ESC to exit):','$'MSG3DB0AH,0DH,'Input error!Input again:',&
28、#39;$'DATAENDSOUTPUTMACROASC;定义输出一个字符的宏MOVDL, ASCMOVAH, 2INT21HENDMCODESEGMENTASSUMECS:CODE, DS:DATAMAIN:MOVAX, DATAMOVDS, AXAGAIN:LEADX, MSG1MOVAH, 9INT21H;提示输入第一个数CALLINPUT;输入过程PUSHBXOUTPUT0AHOUTPUT0DHLEADX, MSG2 MOVAH, 9INT21H;提示输入第二个数CALLINPUT;输入过程OUTPUT0AHOUTPUT0DHPOPAX;实现两个4位组合BCD码相加ADDAL,
29、 BL;低8位相加DAA;校正MOVCL, AL;保存至CLADCAH, BH;高8位相加MOVAL, AH;移至ALDAA;校正MOVAH, ALMOVAL, CLMOVBX, AX;最后结果放在BX中JNCNEXTOUTPUT '1';如果相加结果大于9999,则显示进位“1”NEXT:PUSHBXMOVCL, 4SHRBH, CLADDBH, 30HOUTPUTBH;显示千位数POPBXPUSHBXANDBH, 0FHADDBH, 30HOUTPUTBH;显示百位数POPBXPUSHBXMOVCL, 4SHRBL, CLADDBL, 30HOUTPUTBL;显示十位数PO
30、PBXANDBL, 0FHADDBL, 30HOUTPUTBL;显示个位数OUTPUT0AHOUTPUT0DHJMPAGAININPUTPROCFAR;输入一个4位十进制数的过程BEGIN:MOVCX, 4MOVBX, 0L:SHLBX, 1SHLBX, 1SHLBX, 1SHLBX, 1;BX的值乘以16MOVAH, 1INT21H;输入CMPAL, 1BH;ESC键退出JZDONECMPAL, '0'JBERROR;非数字,出错CMPAL, '9'JAERROR;非数字,出错SUBAL, 30HXORAH, AHADDBX, AX;将输入加到BX中LOOPL
31、RETERROR:LEADX, MSG3MOVAH, 9INT21HJMPBEGINDONE:MOVAH, 4CHINT21HINPUTENDPCODEENDSENDMAIN7、在8086系统下,编写完整程序,实现两个32位带符号数相乘。假设被乘数存放在以字变量MUL1开始的连续4个字节中,乘数存放在以字变量MUL2开始的连续4个字节中中,相乘结果存放在以字变量RES开始的连续8个字节中。解:参考程序:DATASEGMENTMUL1DW0FFFFH,0FFFFH;被乘数MUL2DW5678H,1234H;乘数RESDW4 DUP(0);结果DATAENDSCODESEGMENTASSUMECS
32、:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVCX, MUL1MOVBP, MUL1+2MOVSI, MUL2MOVDI, MUL2+2TESTBP, 8000H;被乘数是否为负数JZNEXT1NOTBP;为负数,则取反加1NOTCXADDCX, 1ADCBP, 0NEXT1:TESTDI, 8000H;乘数是否为负数JZNEXT2NOTSI;为负数,则取反加1NOTDIADDSI, 1ADCDI, 0NEXT2:MOVAX, SI;相乘过程MULCXMOVRES, AXMOVRES+2, DXMOVAX
33、, SIMULBPADDRES+2, AXADCRES+4, DXMOVAX, DIMULCXADDRES+2, AXADCRES+4, DXMOVAX, DIMULBPADDRES+4, AXADCRES+6, DXMOVAX, MUL1+2XORAX, MUL2+2;判断被乘数和乘数是否同号JNSDONE;同号,则结果为正数,无须修改结果NOTRES;不同号,则结果为负数,须取反加1NOTRES+2NOTRES+4NOTRES+6ADDRES, 1ADCRES+2, 0ADCRES+4, 0ADCRES+6, 0DONE:RETMAINENDPCODEENDSENDMAIN8、在8086系
34、统下,编写完整程序,找出字节数组ARRAY中的最大值和最小值。假设ARRAY的长度为100个字节,每个字节为一个无符号数,程序执行后最大值将存放到字节变量MAX中,最小值则存放到字节变量MIN中。解:参考程序:DATASEGMENTARRAYDB100 DUP(?);字节数组MAXDB?;最大值MINDB?;最小值DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXLEASI, ARRAYCLDMOVBH, 0;存放临时最大值的寄存器MOVBL, 0FFH;存放临
35、时最小值的寄存器MOVCX, 100AGAIN:LODSBCMPAL, BHJNANEXT1MOVBH, AL;如果当前数值比临时最大值大,则代替NEXT1:CMPAL, BLJNBNEXT2MOVBL, AL;如果当前数值比临时最小值小,则代替NEXT2:LOOPAGAINMOVMAX, BHMOVMIN, BLRETMAINENDPCODEENDSENDMAIN9、在8086系统下,编写完整程序,将字节数组ARRAY中的所有数据往高地址的方向移动一位,即原来存放在ARRAY中的字节移动到ARRAY+1中,原来存放在ARRAY+1中的字节移动到ARRAY+2中,依此类推。假设ARRAY的长度
36、为100个字节。解:可利用MOVSB指令实现移位,但应该注意,必须从串尾开始移动,因为假如直接从串头开始,将串头移到第二个数,那么第二个数将被覆盖。为使程序能从串尾开始移动,可令方向标志位DF=1。参考程序:DATASEGMENTARRAYDB100 DUP(?), ?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVES, AXLEASI, ARRAY+99;SI指向源串尾LEADI, ARRAY+100;DI指向新串尾STD;DF=1,串尾先移动MOV
37、CX, 100REPMOVSB;循环移动RETMAINENDPCODEENDSENDMAIN10、在8086系统下,编写在长字符串L_STR中查找短字符串S_STR的完整程序,如果找到匹配的字符串,则将字节变量RES置0FFH,否则置0。例如,在字符串“ABABCD”中可找到字符串“ABC”,则RES=0FFH。解:参考程序:DATASEGMENTL_STRDB'ABDABABCD';长串L_LTHDW$-L_STR;长串长度S_STRDB 'ABC';短串S_LTHDW$-S_STR;短串长度RESDB?;存放结果DATAENDSCODESEGMENTASSU
38、MECS:CODE, DS:DATAMAINPROCFARPUSHDSMOVAX, 0PUSHAXMOVAX, DATAMOVDS, AXMOVES, AXLEASI, L_STRLEADI, S_STRCLDMOVCX, L_LTHSUBCX, S_LTHINCCX;作串比较的次数AGAIN:CALLCOMP;进行串比较INCSILOOPAGAINMOVRES, 0RETMAINENDPCOMPPROCFARPUSHCXPUSHSIPUSHDIMOVCX, S_LTHREPZCMPSBJZYES;如果两个串相同,则说明找到POPDIPOPSIPOPCXRETYES:MOVRES, 0FFHM
39、OVAH, 4CH INT21HCOMPENDPCODEENDSENDMAIN11、在80386系统下,编程实现两个64位无符号数相乘。解:参考程序:.386. MODELSMALL.DATAMUL1DD3456789AH, 12345678H;被乘数MUL2DD789ABCDEH, 3456789AH;乘数RESDD4 DUP(0);存放128位结果,初始化为0.CODEMAIN:MOVAX, DATAMOVDS, AXMOVEAX, MUL2MULMUL1MOVRES, EAXMOVRES+4, EDXMOVEAX, MUL2MULMUL1+4ADDRES+4, EAXADCRES+8,
40、EDXMOVEAX, MUL2+4MULMUL1ADDRES+4, EAXADCRES+8, EDXMOVEAX, MUL2+4MULMUL1+4ADDRES+8, EAXADCRES+12, EDXMOVAH, 4CHINT21HENDMAIN第5章 微机总线技术习题与参考答案1. 总线周期的含义是什么?80888086基本总线周期由几个时钟周期组成?解:总线周期是指CPU从存储器或IO端口存取一个字节所需的时间。80888086基本总线周期由4个时钟周期组成。2. 从引脚信号来看,8086和8088有什么不同?解:从引脚信号来看,8086的地址引脚与数据引脚复用,引脚为AD0AD15,而8
41、088同样也采用了地址引脚与数据引脚复用,但引脚为AD0AD7。3. 试说明80868088工作在最小方式下和最大方式下系统基本配置的差别。在最大组态下,80868088的外围电路由哪些器件组成?它们的作用是什么?解:80868088工作在最大方式下时,需要使用8288总线控制器,但是工作在最小方式下时不需要使用。80868088工作在最大方式下时,外围电路包括8284时钟发生器、8286数据发送接收器、8282地址锁存器以及8288总线控制器。8284将晶体振荡器的振荡频率分频,向80868088以及计算机系统提供符合定时要求的时钟信号、准备好信号和系统复位信号。8286数据发送接收器增加数
42、据总线的驱动能力。8282地址锁存器用来锁存CPU地址信号,特别是地址数据线、地址状态线上出现的地址信号。8288根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。4. 80868088数据信号与地址信号是共用引脚的,怎样把这两种不同的信号分离出来?解:80868088工作时,对数据信号与地址信号的公用引脚进行分时复用,采用8282地址锁存器来分离数据与地址信号。在T1状态时,CPU提供ALE地址锁存允许信号,将地址信号锁存到8282地址锁存器。然后,在T2、T3、TW状态,用作传送数据信号。5. 在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要
43、插入等待状态TW?TW在哪儿插入?怎样插入?解:CPU在T1、T2、T3、T4 这四个状态完成一个总线周期。在T1状态,把地址信息从地址线A19A16,A15A8和AD7AD0上输出,且立即发出地址锁存信号ALE,把在A19A16上出现的高4位地址和在AD15AD0(8088则是AD7AD0)上出现的地址,在外部地址锁存器上锁存。在T2状态,CPU发送读写等控制命令。在T3、T4状态,CPU发送或接收数据,并在T4状态结束此总线周期。当外部存储器或I/O端口的时序不能与CPU的时序相配合时,就需要插入TW周期。因此,在CPU中设计了一条准备就绪READY输入线,即存储器或I/O端口输给CPU的
44、状态线。CPU在T3采样READY线,若为高电平,则在T3状态后进入T4状态。若存储器或I/O端口来不及在T4状态的前沿把数据准备好,则当CPU在T3状态采样时应使READY线为低电平,并在T3状态后插入一个等待状态TW。6. 80868088在最大组态下的存储器读/写周期和I/O周期中,8288发出的控制信号为什么能够和80868088发出的地址信号相配合?解:8288总线控制器根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。8288总线控制器接收80868088的状态信号,以确定CPU执行何种操作,发出相应的控制命令信号,以控制系统中有关部件的工作。7. 在T1状态下,
45、80888086CPU数据地址线上是什么信息?用哪个信号可将此信息锁存起来?数据信息是什么时候送出的?在最大组态下,怎样使系统地址总线和系统数据总线上同时分别存在地址信息和数据信息?解:在T1状态下,80888086CPU数据地址线上是地址信息。用ALE信号可将地址信息锁存起来。数据信息在T2开始以后送出。在最大组态下,AD15AD0在8288发出的ALE下降沿控制下将地址信息锁存后送系统地址总线A15A0(对8088则为AD7AD0)。A19S6A16S3 经ALE下降沿控制锁存后送系统地址总线A19A16;CPU的AD0AD7在8288发出的 (数据收发控制信号)和DEN(数据允许信号)信
46、号控制下,经双向总线驱动器连接到系统数据总线D7D0,这样,实现了地址和数据及状态信号的分离,使地址信号和数据信号同时分别出现在系统地址总线和数据总线上。8. RESET信号来到后,80868088系统的CS和IP分别等于多少?解:CSFFFFH,IP0000H9. 在中断响应过程中,80868088往8259A发的两个信号分别起什么作用?解:CPU在每一个中断响应地机器周期,都给出中断响应信号。在第一个机器周期,使AD0AD7浮空。在第二个机器周期,被响应地外设(或接口片子)应向数据线上输送一个字节的中断向量类型,CPU把它读入后,就可以在中断向量表上找到该设备的服务程序的入口地址,转入中断
47、服务。10. 总线保持过程是怎样产生和结束的?画出时序图并说明。解:总线保持过程包括总线保持请求和保持响应操作。当一个系统中具有多个总线主模块时,除CPU之外的其它总线主模块为了获得对总线的控制,需向CPU发出总线保持请求信号,当CPU接到此请求信号,并在同意让出总线时,就向发该请求的主模块发响应信号。具体过程是:在最小模式下,CPU在每个时钟周期的上升沿处,对HOLD引脚进行检测,若HOLD已变为高电平(有效状态),则在总线周期的T4状态或空闲状态TI之后的下一个状态,由HLDA引脚发出响应信号。同时CPU将把对总线的控制权转让给发出HOLD的设备,到发出HOLD信号的设备再将HOLD变为低
48、电平(无效)时,CPU才又收回总线控制权。时序图如下:第6章存储系统习题与参考答案1 简述PC中存储器分级结构的组成。Cache是为了解决什么问题引入的,虚拟存储器又是为解决什么问题而引入的?答:PC中存储器分级结构的组成中包括:CPU中的寄存器、CACHE、主存和辅存。引入CACHE,可以解决主存的速度跟不上CPU的速度的问题,可以提高CPU访问主存的速度。引入虚拟存储器可以解决主存容量不够大时的装载大程序遇到的问题。在虚拟存储技术中,拿出一部分硬盘空间来充当内存使用,当内存占用完时,计算机就会自动调用硬盘来充当内存,以缓解内存使用的压力。2、半导体存储器可分为哪几个类型?试分别说明它们各自
49、的特点。解:从存取方式来分,有读写存储器RAM和只读存储器ROM。RAM也称为随机存取存储器,CPU在执行程序的过程中能对它进行读出和写入操作。在RAM中可分为双极型(Bipolar)和MOS型RAM两大类。双极型RAM具有很高的存取速度,但是双极型RAM的集成度低,单片容量小,功耗大,成本高。MOS型RAM具有功耗低、集成度高、单片容量大的特点,但存取速度则较慢。MOS型RAM又可以分为静态RAM和动态RAM两种。ROM器件的功能是只许读出,不许写入,一旦有了信息,就不能轻易改变,也不会在掉电时丢失,所以它只能用在不需要经常对信息进行修改和写入的地方。ROM可以分为4种:掩膜ROM、可编程R
50、OM、可擦除、可编程ROM和可电擦除的、可编程ROM等。3、列出半导体存储器的主要性能指标。解:半导体存储器的性能指标有:存储芯片容量、存取速度、可靠性、价格、易失性、集成度、功耗和电源种类等。4、试比较SRAM和DRAM的优缺点。解:SRAM用由6管构成的触发器作为基本电路,不需要刷新电路,而且易于用电池作后备电源。DRAM是利用电容的记忆功能保存信息,由于电容存在漏电电流,即使电源不掉电,电荷会随着电容放电而泄露,从而导致信息丢失,所以需要刷新。与SRAM相比,DRAM的主要优点是集成度高、功耗小、价格低。而不足之处是与CPU的接口电路比较复杂,有两个问题要解决:一个是上面所讲的刷新问题,另一个是地址信号的输入问题。DRAM一般用于组成大容量的内存系统。5、若某微机系统的系统RAM存储器由四个模块组成,每个模块的容量为128K字节,若四个模块的地址是连续的,最低地址为00000H,试指出每个模块的首末地址。解:第一个模块:00000H1FFFFH;第二个模块:20000H3FFFFH;第三个模块:40000H5FFFFH;第四个模块:60000H7FFFFH。6、对于下列芯片,它们的片内地址线各有多少根?若分别用以下芯片组成容量为64K字节的模块,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效学习的自我管理技巧2025年计算机二级VB考试试题及答案
- IOT与智能家居的结合技术试题及答案
- 未来公司战略目标与风险管理框架试题及答案
- 法学概论学习重点试题及答案
- 2025年法学概论考试全面解析试题及答案
- 人机交互设计的基础试题及答案
- 2025年数字战略的发展试题及答案
- 基于机器学习的决策支持系统试题及答案
- 2025届福建省龙岩市上杭三中学八年级数学第二学期期末监测模拟试题含解析
- 江苏省连云港市灌南县2025年八年级数学第二学期期末学业质量监测试题含解析
- 2022年山东省威海市中考数学试题及答案解析
- 云南锂电池项目可行性研究报告
- 体育科研方法试卷试题答案
- 《国家电网公司十八项电网反事故措施(试行)》实施细则
- 中国民主同盟入盟申请表(样表)
- 国家标准色卡电子版(WORD版图片)
- 9种基坑坍塌案例
- 《呼吸机的使用管理》PPT课件.ppt
- 《手机摄影》全套课件(完整版)
- 年产10万吨甲醇低压羰基化合成醋酸精制工段工艺设计(共56页)
- 儿童相声剧本43286
评论
0/150
提交评论