《Intel微处理器(第七版)》第二至第八章作业
- 格式:docx
- 大小:25.58 KB
- 文档页数:14
同济大学电信学院2.3 Intel 80386/486 CPU2.3.1 80386/80486的主要特点2.3.2 80386/80486的内部结构2.3.3 80386/80486的三种工作方式2.3.1 80386/80486的主要特点●采用全32位结构,其内部寄存器、ALU和操作是32位,数据线和地址线均为32位●提供32位外部总线接口,最大数据传输率为32MB/s,具有自动切换数据总线宽度的功能●具有片内集成的存储器管理部件MMU,可支持虚拟存储和特权保护,虚拟存储器空间可达64太字节(TB)●具有实地址方式、保护方式和虚拟8086方式3种工作方式●采用了比8086更先进的流水线结构,使其能高效、并行地完成取指、译码、执行和存储管理功能(指令队列16字节长)同济大学电信学院2.3.2 80386/80486内部结构同济大学电信学院同济大学电信学院80386内部结构●总线接口部件(BIU )●指令预取部件(IPU )●指令译码部件(IDU )●指令执行部件(EU )●分段部件(SU )●分页部件(PU )80386内部结构●总线接口部件(BIU)◆微处理器与系统的接口,其功能是:在取指令、取数据、分段部件请求和分页部件请求时,有效地满足微处理器对外部总线的传输要求。
◆BIU能接收多个内部总线请求,并且能按优先权加以选择,最大限度地利用所提供的总线宽度,为这些请求服务。
●指令预取部件(IPU)◆职责是从存储器预先取出指令◆有一个能容纳16条指令的队列同济大学电信学院同济大学电信学院80386内部结构●指令译码部件(IDU )◆职责是从预取部件的指令队列中取出指令字节,对它们进行译码后存入自身的已译码指令队列中,并且作好供执行部件处理的准备工作。
◆如果在预译码时发现是转移指令,可提前通知总线接口部件BIU去取目标地址中的指令,取代原预取队列中的顺序指令。
80386内部结构●指令执行部件(EU)◆由控制部件、数据处理部件和保护测试部件组成。
《Intel微处理器(第七版)》第二至第八章作业第二章2、80286可寻址的寄存器为8位和16位宽。
例如:AL为8位,AX为16位。
两种寄存器都可以用于各种寻址。
8、如果带符号数FFH与01H相加,会溢出吗?答:不会。
FFH = -1;-1与1相加的结果为0。
14、为处理器工作在实模式下,对于下列CS:IP组合,找出要执行下一条指令的存储器地址。
(a)CS = 1000H和IP = 2000H(b)CS = 2000H和IP = 1000H(c)CS = 2300H和IP = 1A00H(d)CS = 1A00H和IP = B000H(e)CS = 3456H和IP = ABCDH答:利用“地址= CS*10H + IP”,可以得出(a)12000H;(b)21000H;(c)24A00H;(d)25000H;(e)3F12DH20、80286工作在实模式下下,给出下列寄存器组合所寻址的存储单元地址。
(a)DS = 1000H,DI = 2000H(b)DS = 2000H,SI = 1002H(c)SS = 2300H,BP = 3200H(d)DS = A000H,BX = 1000H(e)SS = 2900H,SP = 3A00H答:本题考查对默认寄存器组合的认识,(a)DS:DI为数据地址,结果为12000H;(b)DS:SI为数据地址,结果为21002H;(c)SS:SP为堆栈地址,结果为26200H;(d)DS:BX为数据地址,结果为A100H;(d)SS:SP为堆栈地址,结果为32A00H。
28、一个Pentium 4微处理器的描述符中含有基地址00280000H,界限00010H,并且G = 1,由这个描述符寻址的起始地址和结束地址是什么?答:本题考查对保护模式寻址方式的理解。
保护模式下,段寄存器中包含选择子,由选择子从描述符表中选择一个描述符,描述符中包含有段的基地址和界限等信息。
第2章微处理器2.1 概述微型计算机的大脑或发动机是处理器(有时也称作微处理器),即中央处理单元(CPU)。
CPU进行系统的计算和处理。
Intel公司拥有推出第一片微处理器的荣誉,即1971年Intel公司推出的称为4004的芯片是历史上第一枚微处理器芯片。
现在,Intel和AMD两家公司在处理器市场、至少是PC系统市场上居主导地位。
2.2 处理器的性能在谈论处理器性能的时候常常引用许多容易引起混乱的性能术语。
这些术语主要有,速度、数据总线、和地址总线。
而这三个术语常常是与微处理器的性能密切相关,它们分别对应处理器主要的三个方面的性能——处理速度、数据宽度和寻址能力,概括起来即是:速度和宽度。
处理器的速度是一个相对简单的概念,但常常有错误的理解。
速度以MHz来度量,1MHz是指每秒1百万个时钟周期——当然速度越快越好。
处理器的宽度涉及到与处理器相关的三个总线。
它们是:·内部寄存器(内部数据总线)――寄存器大小决定了处理器可以操作的数据大小。
·外部数据总线――外部数据总线宽度决定了一个周期内传入或传出处理器的数据位数。
·地址总线――地址总线的大小(或宽度)指明了芯片可寻址的最大的RAM容量。
在进行处理器性能介绍之前,有必要简要说明一下处理器的模式。
处理器模式是指各种影响处理器可以执行的指令以及芯片功能的操作环境。
处理器模式控制着处理器如何看到并管理内存以及使用内存的任务方式。
所有从Intel 386及后来的32位处理器都有三种不同的操作模式:·实模式(16位软件)。
·保护模式(32位软件)。
·虚拟实模式(在32位环境下执行16位程序)。
早期的处理器是工作在实模式之下的,Intel 286以后引入了保护模式,而在Intel 386以后保护模式又进行了很大的改进。
对PC而言,启动的时候,CPU都处在实模式状态,相当于只是一个Intel 8086处理器,只能运行16位软件,最大只能访问1M的内存空间。
同济大学电信学院课内实验安排●3月22日前,学生完善各自CPU (调试期间遇到问题,可直接到王力生老师实验室电信学院246房间寻求帮助)。
●3月23日开始,每周一个实验,最后一个实验给两周时间,具体安排表在mips246网站的ppt 模块中。
同济大学电信学院Vcc(5V)HLDA (RQ/GT 1)ALE (QS 0)AD 15A 17/S 4A 16/S 3A 18/S 5A 19/S 6INTA (QS 0)HOLD (RQ/GT 0)DT/R (S 1)DEN (S 0)GND NMI GNDINTR CLK 1247113581216691317201014181519BHE/S 7MN/MX WR (LOCK)AD 14AD 12AD 9AD 5AD 13AD 11AD 8AD 4AD 0AD 10AD 7AD 3AD 6AD 2AD 1RDM/IO (S 2)RESETTEST READY 40393734303836332925353228242131272326228086CPUGND A 14A 12A 9AD 5A 13A 11A 8AD 4AD 0A 10AD 7AD 3NMI GNDAD 6AD 2INTR AD 1CLK 1247113581216691317201014181519Vcc(5V)A 15A 17/S 4SS 0HLDA (RQ/GT 1)A 16/S 3A 18/S 5MN/MX WR (LOCK)ALE (QS 0)A 19/S 6RDM/IO (S 2)INTA (QS 0)RESETHOLD (RQ/GT 0)DT/R (S 1)TEST DEN (S 0)READY 40393734303836332925353228242131272326228088CPU2.1.4 8086/8088芯片的引脚信号同济大学电信学院地址数据及状态信号线Vcc(5V)HLDA (RQ/GT 1)ALE (QS 0)AD 15A 17/S 4A 16/S 3A 18/S 5A 19/S 6INTA (QS 0)HOLD (RQ/GT 0)DT/R (S 1)DEN (S 0)GND NMI GNDINTR CLK 1247113581216691317201014181519BHE/S 7MN/MX WR (LOCK)AD 14AD 12AD 9AD 5AD 13AD 11AD 8AD 4AD 0AD 10AD 7AD 3AD 6AD 2AD 1RDM/IO (S 2)RESETTEST READY 40393734303836332925353228242131272326228086CPU1. AD 15--AD 0 :地址/数据复用引脚(双向、三态)●在总线周期的T 1状态用来输出要访问的存储器或I/O 端口地址。
第二章Intel32位微处理器Intel公司生产的80386,80486,MMX Pentium,PentiumⅡ以及PentiumⅢ都属于32位的微处理器。
然而它们在电路结构,芯片性能、主频等方面差异甚大,由不同的微处理器组成的微机系统,其系统功能也有明显的差异。
但是,从用户编程的角度,由这些微处理器组成的微机系统,其基本工作原理相同,在基本编程结构、基本工作模式、存储器管理模式、中断管理模式、任务管理模式等方面大同小异,它们的指令集保持向上兼容。
因此本节在讨论微机原理时,主要论述这些微处理器的共同特点。
从讨论微机系统基本工作原理的观点看,80486在Intel32位微处理器的体系演化过程中,具有承上启下的地位。
一方面它上承80386,从芯片特征上可看出其将80386及运算协处理器80387、高速缓存器集成于一体。
另一方面它下启Pentium系列微处理器的基本体系结构。
虽然Pentium采用了超标量设计,有两条流水线及配套的辅助部件,有多媒体控制能力等,但在涉及微机系统基本工作原理的部分,仍然保持了80486的逻辑部件及功能。
因此本书以80486作为论述Intel32位微处理器的基本模型。
所谓32位微处理器是指在微处理器内部以32位寄存器为单位进行数据处理。
而在数据传送时,根据发送端与接收端处理数据的速度不同,可能以128位、64位、32位、16位或8位二进制位为单位,进行数据的传送。
但在内存中总是以8位二进制位(字节)为单位来存放数据。
2.1 微处理器的基本结构2.1.1微处理器的内部基本结构对每一种类型的微处理器,从不同的观点都可以勾划出差别很大的内部详细结构框图。
本节我们只以80486为例,给出32位微处理器的基本结构框图,图2.1描述了32位微处理器内部的基本逻辑部化部件之间的基本联系、各部件的主要功能、数据在微处理器中的主要流动趋向。
其中每个图框都可以进一步细化成一个局部结构图,用于反映该部件内的情况。
第二章2、80286可寻址的寄存器为8位和16位宽。
例如:AL为8位,AX为16位。
两种寄存器都可以用于各种寻址。
8、如果带符号数FFH与01H相加,会溢出吗?答:不会。
FFH = -1;-1与1相加的结果为0。
14、为处理器工作在实模式下,对于下列CS:IP组合,找出要执行下一条指令的存储器地址。
(a)CS = 1000H和IP = 2000H(b)CS = 2000H和IP = 1000H(c)CS = 2300H和IP = 1A00H(d)CS = 1A00H和IP = B000H(e)CS = 3456H和IP = ABCDH答:利用“地址= CS*10H + IP”,可以得出(a)12000H;(b)21000H;(c)24A00H;(d)25000H;(e)3F12DH20、80286工作在实模式下下,给出下列寄存器组合所寻址的存储单元地址。
(a)DS = 1000H,DI = 2000H(b)DS = 2000H,SI = 1002H(c)SS = 2300H,BP = 3200H(d)DS = A000H,BX = 1000H(e)SS = 2900H,SP = 3A00H答:本题考查对默认寄存器组合的认识,(a)DS:DI为数据地址,结果为12000H;(b)DS:SI为数据地址,结果为21002H;(c)SS:SP为堆栈地址,结果为26200H;(d)DS:BX为数据地址,结果为A100H;(d)SS:SP为堆栈地址,结果为32A00H。
28、一个Pentium 4微处理器的描述符中含有基地址002800H,界限00010H,并且G = 1,由这个描述符寻址的起始地址和结束地址是什么?答:本题考查对保护模式寻址方式的理解。
保护模式下,段寄存器中包含选择子,由选择子从描述符表中选择一个描述符,描述符中包含有段的基地址和界限等信息。
描述符中的G位表示粒度,G = 1,则该地址寻址的单位为4KB,所以这里的起始地址是002800H,结束地址=起始地址+(界限+1)*寻址单位-1,结果为290FFFH。
44、如果微处理器将线性地址002000H送到具有分页机制的系统,哪个页目录项被访问?哪个页表项被访问?答:本题考查内存的分页机制。
线性地址通过页目录和页表的转化将成为物理地址,具体而言线性地址的22~31位访问对应的页目录项,12~21位访问对应的页表项。
这里给出的线性地址将访问页目录第0H项和页表第200H项。
第三章6、指令MOVBL, CX存在什么错误?答:BL寄存器和CX寄存器的xx不匹配。
20、符号[]指示什么?答:指示间接寻址。
22、指令MOV [BX], [DI]的错误是什么?答:存储器到存储器之间的数据传输时非法的,处理MOVS指令。
26、说明MOV BX, DATA和MOV BX, OFFSET DATA指令之间的区别。
答:MOV BX, DATA将DATA所指向内存的内容复制到BX中,而MOV BX, OFFSETDATA将DATA在内存中的偏移地址复制到BX。
30、给定DS = 1100H,BX = 0200H,LIST = 0250H和SI = 0500H。
假定按实模式操作,确定下面每条指令寻址的存储器地址。
(a)MOV LIST [SI], EDX(b)MOV CL, LIST[BX + SI](c)MOV CH, [BX +SI]答:本题主要考察各种寻址方式。
(a)由LIST地址加SI的地址,然后和DS的地址组合成寻址的地址。
结果为11750H。
(b)与(a)类似,结果为11950H。
(c)与(a)类似,结果为11700H。
34、给出有5个字段的字数据结构,字段名是F1, F2, F3, F4和F5,结构名是FIELDS。
答:FIELDS STRUCF1WORD?F2WORD?F3WORD?F4WORD?F5WORD?FIELDS ENDS第四章10、如果MOVSI, [BX + 2]指令出现在程序中,与它等效的机器语言是什么?答:本题考查Intel机器语言与汇编语言的转换,这里默认使用16位指令系统。
通过查询课本的附录B,我们可以知道“MOVreg,mem”的机器语言格式为“100010dw oorrrmmm disp”,而这里是从mem到reg传送数据,所以d = 1;SI 为16位,所以w=1;寻址方式为寄存器相对寻址,包含8位的偏移量,所以oo = 01;查表可知rrr = 110,mmm = 111;disp(偏移量)= 00010B;综上,可得“MOVSI, [BX + 2]”的机器码为:“B”=“8B 77 02H”。
12、MOVCS, AX指令会带来什么错误?CS是指令段寄存器,仅仅改变该寄存器的值将导致程序的下一条指令成为不可知的指令,这在多数情况下将导致系统的混乱。
24、LEA SI, NUMB指令和MOV SI, OFFSET NUMB指令直接的区别是什么?答:这里考查LEA指令和OFFSET指令的区别。
题目中的两条指令都将NUMB的偏移量存入SI寄存器,但是执行LEA指令需要更多的时钟周期,因为LEA指令是在微处理器执行时才计算NUMB的偏移量的,而OFFSET是在执行该指令前就由汇编程序计算好了NUMB的偏移量。
32、说明LODSB指令的操作。
答:将DS:[SI]所指向的存储器中的字节存入AL寄存器中。
36、设计指令序列,将12个字节的数据由SOURCE寻址的存储区域复制到由DEST寻址的存储区域内。
答:MOVS指令可以实现从存储器到存储器的数据转移,所以这里主要采用该条指令实现。
MOVSI,OFFSET SOURCEMOVDI,OFFSET DESTMOVCX,12REPMOVSB60、设计近过程,将AL的内容存入数据段中用DI寄存器寻址的4个连续存储单元中。
STOSB指令可以将AL寄存器的内容存储到由ES:[DI]寻址的存储器中。
题目要求将AL的内容存入数据段中用DI寄存器寻址的4个连续存储单元中,所以要将DS的值赋给ES,可以通过POSH和POP指令实现。
近过程的伪指令为PROCNEAR。
STOREPROCNEARPUSHDSPOPESMOVCX, 4REPSTOSBSTOREENDP第五章10、INC [BX]指令的错误是什么?答:对于只有一个操作数的算术或逻辑运算指令,如果操作数采用寄存器间接寻址方式,则必须由BYTE/WORD/DWROD PTR来指定该内存单元的大小。
12、如果DL = 0F3H,BH = 72H,列出从DL内容减去BH内容以后的差,并且给出标志寄存器各位的内容。
答:减法运算包括带符号和不带符号两种,这两种运算对寄存器的操作完全相同,只是无符号减法不考虑符号位标志寄存器。
采用双符号位计算法,可知结果为DL = 81 H,无溢出O = 0,无进位C = 0,有半进位A = 1,结果为负S = 1,不为零Z = 0。
16、说欧盟SUB和CMP指令之间的区别。
答:这两条指令都通过操作数的减法而改变标志寄存器,不同之处在于CMP不改变被减数,而SUB改变被减数。
36、设计短指令序列,将DH中的最左3位清0,而不改变DH中其它位,结果存入BH中。
答:通过AND指令可以实现对部分位的屏蔽。
MOVBH,DHANDBH,000111B40、设计短指令序列,把AX中的最右4位置为1,将AX中的最左3位清0,并且把AX中的7、8、9位取反。
答:XOR指令可以实现对个别位的取反。
ORAX,000FHANDAX,1FFFHXORAX,00 0011 1000 00B44、选择正确的指令实现以下的任务:(a)DI右移3位,并把零移入最高位(b)AL中所有位左移1位,并使0移入最低位(c)AL循环xx3位(d)EDX带进位位循环右移1位(e)DH寄存器右移1位,并且使结果的符号位与原数符号相同答:逻辑移位指令不考虑符号位,算术移位指令需要考虑符号位。
带进位的循环移位指令顾名思义,不带进位的循环移位指令只是进位不会移入寄存器中,但移位操作仍然影响进位位。
(a)SHRDI,3(b)SHLAL,1(c)ROLAL,3(d)RCREDX,1(e)SARDH,1第六章12、比较JMP [DI]与JMP FAR PTR[DI]指令的操作。
答:两条指令都是采用间接寻址方式的转移指令,系统默认为16位位移量,即近转移。
如果程序中出现JMP FAR PTR[SI]指令,或者用DD伪指令定义TABLE数据的JMPTABLE[SI]指令,则微处理器认为转移表中包含32位的双字地址(IP和CS)。
所以,题目中第一条指令将跳转到由CS作为段地址和DS:[DI]的内容作为偏移量的新地址;第二条指令将跳转到由DS:[DI+2]的内容作为段地址和DS:[DI]的内容作为偏移量的新地址。
22、Pentium 4的LOOPD指令使ECX寄存器减1,并且为了决定是否发生转移测试它是否为0。
24、设计指令序列,吧00H存储到附加段起始地址为DATAZ的150H个字节的存储区中。
必须用LOOP指令帮助实现这个任务。
答:通过将CX赋值为150,采用LOOP指令可以实现题目要求的功能。
MOVCX, 150HMOVDI, OFFSET DATAZMOVAL, 00HCLDL1:STOSBLOOP L138、写一个近过程,求CX寄存器内容的三次方,这个过程除了CX寄存器以外不影响任何其他的寄存器。
答:在PROC伪指令后加上USES伪指令可以使其他寄存器不受影响。
CUBEPROCNEARUSES AX DXMOVAX, CXMULCXMULCXMOVCX, AXRETCUBEENDP44、0号向量xx的用途是什么?答:通过查表可知0号向量用来处理除法错误,即除法运算中除数为0的情况。
50、什么指令控制INTR引脚的功能?答:STI指令时能INTR;CLI指令禁止INTR。
第七章2、在内嵌汇编程序中可以用伪指令DB定义字节吗?答:不可以。
内嵌汇编中的变量都是由C/C++语言定义的,而C/C++语言本身无法识别DB伪指令。
4、在汇编语言(内嵌汇编程序或链接模块)中,哪些寄存器不需要保留就可以使用?答:由于Microsoft C/C++没有使用AX、BX、CX、DX和ES寄存器,所以在汇编和C/C++混合编程中不需要保留。
如果使用80386或更高的处理器作为程序的基础,则EAX、EBX、ECX、EDX和ES寄存器不需要保留。
10、注意在例7-5中没有用到C++的库(#include),你认为这个程序的编译代码比用C/C++语言完成相同任务的程序的编译代码小吗?为什么?答:C++程序包含库之后所有库的内容都会是编译代码的一部分,这使得没有包含库的C++程序的编译代码会小很多。