6 《微型计算机及接口技术》
2-20 通过复位后寄存器的特点,说明各处理器复位后程序第一条指令存放的地址。
答:复位后16位处理器8086/8088以及80286系统复位后内部除CS=FFFFH外,其余各寄存器全 为0,段的起始地址为段寄存器的内容左移4位,因此复位后第一条指令的地址FFFF0H(CS×16+IP)。
IA-32处理器复位后内部地址相关寄存器的状态为:EIP=0000FFF0H,CS=F000H,CS.BASE(代码段基地址)=FFFF0000H,SS=DS=ES=FS=GS=0000H,其它段的段基地址均为0,GDTR=00000000FFFFH,IDTR=00000000FFFFH。即GDTR和IDTR描述的基地址全为0,界限均为FFFFH。LDTR=0,对应的基地址为0,界限为FFFFH,
IA-32处理器复位后的第一条指令的地址为=段基地址+偏移地址=FFFF0000 + FFF0H = FFFFFFF0H。
即8086~80286复位地址FFFF0H,80386~Cure 2 Duo复位地址为FFFFFFF0H。
2-22 IA-32处理器的CR0、CR2、CR3和CR4的名称及功能是什么?CR0中与寻址有关的控制位有哪些?CR4中对于具有36条地址线的处理器有哪里相关控制位?
答:(1)控制寄存器名称及功能如下表所示 标识 CR0 CR2 CR3 CR4 机器状态寄存器 页故障地址寄存器 页目录表基址寄存器 扩展控制寄存器CR4(从Pentium开始) 名称 功能 存放处理器的状态和控制位,决定处理器的工作模式 保存着发生页故障,产生异常中断之前所访问的最后一个页的线性地址。 保存着页目录表的物理基地址及两个属性 36位物理地包括了几个结构的扩展并指示对特殊处理器性能的支持,址及不同而大小的支持等 (2)CR0与寻址有关的主要控制位有CR0.0(PE)保护允许,CR0.31(PG)分页允许
CR4中与36位地址相关的控制位有:CR4.5(PAE)页地址扩展,对于基于36位地址的处理器,PAE=1允许使用36位地址,访问64GB的存储空间,PAE=0只有访问使用32位地址线,寻址4GB;
CR4.7(PGE)页全局允许,针对基于36条地址线的处理器(P6开始引入)的页全局允许,PGE=1允许全局页特征,PGE=0禁止全局页特征;
2-26 已经从内存1FF00000开始存放12H, 34H, 56H, 78H, 90H, ABH, CDH, EFH, 11H, 22H, 33H, 44H, 55H, 66H, 77H, 88H,99H,00H,AAH,BBH,CCH,DDH,EEH,FFH,试说明从1FF00000H开始取一个双四字的值,从1FF00008H开始取双字的值,以及从1F00010H开始取四字和一个字的值。
解:从1FF00000H开始的双四字的值=8877665544332211EFCDAB9078563412H
从1FF00008H开始的双字的值=44332211H
从1FF00010H开始的四字的值=FFEEDDCCBBAA0099H 从1FF00010H开始的一个字的值=0099H 2-28 对于8086最小模式填写下列表格 DT/R M/IO RD 0 0 0 0 1 0 1 0 1 1 1 1 WR 1 1 0 0 对应的操作 读I/O接口 读存储器 写I/O接口 写存储器 指令示例 IN AL,DX MOV AL,[SI] OUT DX,AL MOV [DI],AL 2-29 8086/8088的外部时钟接5MHz,试问在RESET引脚需要多少uS时间的高电平,系统才能复
国家十一五规划教材《微机原理与接口技术(第二版)》思考题与习题参考答案 7
位,复位后8086/8088内部的状态如何?在读内存时如果需要插入2个等待周期,这2个等待周期的位置如何?如果该内存单元54300H中的数据为3AH,54301H中的数据为B6H,读内存这一个字需要多少uS的时间?试画出读取由54300H开始一个字的时序图。
答:(1)8086/8088需要至少4个时钟周期才可复位,每个时钟周期为1/5us,因此在RESET引脚需4×1/5=0.8us的时间才能复位,复位后除CS=FFFFH外,其它寄存器全为0,指令队列也清除
(2)插入的等待周期在T3和T4之间
(3)读内存在插入2个等待周期时需要4+2=6个时钟周期的时间即6×0.2=1.2us
物理地址=54300H,高4位地址为5(0101B),低16位地址为4300H,数据B63AH,因此对应读时序如图所示。
CLK M/IO A19~A16AD15~A0 BHE/S7 ALE RD DT/R DEN 5 4300H B63AH T1 T2 T3 Tw Tw T4
2-30 对于80386~Pentium处理器,填写下表。 操作类型 指令示例 M/IO W/R D/C 0 0 1 IN AX,DX 读I/O 0 1 1 OUT DX,AX 写I/O 1 0 0 读存储器代码 无 1 0 1 读存储器数据 MOV AX,[SI] 1 1 1 写存储器数据 MOV [DI],AX 2-35 对于IA-32或Intel 64处理器采用16位运算(用16位寄存器),求以下运算结果及相应各标志位:
(1) 5439H+4567H (2) 2345H+5219H (3) 54E3H-27A0H (4) 1A9FH+E561H 解:(1)
5439H+4567H=99A0H 0101 0100 0011 1001 + 0100 0101 0110 0111 1001 1001 1010 0000
AF=1,PE=1,ZF=0,CF=0,OF=1,SF=1 (2)
2345H+5219H=755EH
8 《微型计算机及接口技术》
0010 0011 0100 0101 + 0101 0010 0001 1001 0111 0101 0101 1110
AF=0,PE=1,ZF=0,CF=0,OF=0,SF=0 (3)法1直接相减 54E3H-27A0H=2D43H 0101 0100 1110 0011 - 0010 0111 1010 0000 0010 1101 0100 0011
AF=0,PE=0,ZF=0,CF=0,OF=0,SF=0 法2变减为加
54E3H-27A0H=54E3+D860H=2D43H 0101 0100 1110 0011 + 1101 1000 0110 0000 1 0010 1101 0100 0011
AF=0,PE=0,ZF=0,CF=1,OF=0,SF=0
(4)
1A9FH+E561=0000H 0001 1010 1001 1111 + 1110 0101 0110 0001 1 0000 0000 0000 0000
AF=1,PE=1,ZF=1,CF=1,OF=0,SF=0
2-36 8086/8088,80386,80486,Pentium,Pentium Pro,Pentium II,Pentium III,Pentium 4,Cure 2内部通用寄存器的位数、段寄存器的位数、外部地址线和数据线的条数分别为多少?求其寻址范围及带符号数表示范围。
答:相应参数见下表所示。
处理器 主要参数 通用寄存器位数即位长 段寄存器位数 外部数据线条数 外部地址线条数 寻址范围 Core 2 Duo Core 2 Quad (双核) 32/64 16 64 36 (四核) 32/64 16 64 36 Core 2 Extreme (至尊) 32/64 16 64 36 8086、8088 80386 80486 Pentium Pentium Pro Pentium II Pentium III Pentium 4 16 16 16 20 0-FFFFFH 151532 16 32 32 32 16 32 32 32 16 64 32 32 16 64 36 32 16 64 36 32 16 64 36 32 16 64 36 00000000H-FFFFFFFFH -2~2-1 3131000000000H-FFFFFFFFFH -231~231-1 支持-263~263-1 有符号数表示的范围 -2~2-1
2-40简述段基址、偏移地址、逻辑地址和物理地址的含义及其相互关系。
答:段基址是该段物理地址的起始地址或首地址,偏移地址指的是离段基的偏移量,将存放在段寄存器中的内容与偏移地址合称为逻辑地址,通常用段寄存器内容:偏移地址表示逻辑地址。在实地址方式下,逻辑地址包含了段地址(20位段起始物理地址的高16位)和偏移地址,在保护方式下逻辑
国家十一五规划教材《微机原理与接口技术(第二版)》思考题与习题参考答案 9
地址包含了段选择子(决定起始物理地址存放位置)和偏移地址。物理地址可由逻辑地址来决定,物理地址=段基址+偏移地址。只是段基址在不同模式下的求法不同。
2-43 内存数据如下表所示,指出实地址方式下,执行下列程序段后AX中的值。 MOV AX,1100H MOV DS,AX MOV BX,200H
MOV AX,[BX+62H]
表2.26 题2-43和2-50表(内存数据分布情况) 地址 数据 地址 数据 地址 数据 : : : : : : 00011267H 00H 00011237H 00H 00001007H 00H 00011266H 70H 00011236H 01H 00001006H 40H 00011265H 00H 00011235H 11H 00001005H F2H 00011264H 01H 00011234H 47H 00001004H 01H 00011263H 75H 00011233H 32H 00001003H 00H 00011262H 39H 00011232H 30H 00001002H 00H 00011261H 2AH 00011231H 30H 00001001H 1FH 00011260H 00H 00011230H 39H 00001000H FFH 解:从程序段知DS=1100H,有效地址=200H+62H=262H,因此物理地址=11000H+262H=11262H,11262H开始的一个字为7539H,所以AX=7539H
2-45 IA-32处理器在实地址方式下各寄存器的值如下,求当前的存储单元地址。(偏移量在EAX、ECX、ESP、ESI和EDI中)
(1) DS=2000H, EAX=00003000H (2)DS=1A00,ESI=00002000H (3) SS=C000H, ESP=0000A000H (4)DS=1239H,EDI=0000A000H 解:(1)物理地址=DS×16+EAX=20000H+00003000H=00023000H
(2)物理地址=DS×16+ESI=1A000H+00002000H=0001C000H (3)物理地址=SS×16+ESP=C0000H+0000A000H=000CA000H (4)物理地址=DS×16+ESI=12390H+0000A000H=00001C390H
2-46 试定义IA-32处理器的两个段描述符来描述一个存储器段,均为一个可写、向上增长的用户访问的在物理存储器中、未访问过的数据段,(1)地址范围为03000000H~03001FFFH,(2)01000000H~027FFFFFH。
解:(1)定义段描述符就是确定段基址、段界和相关属性
段基址=03000000H,段界=末地址-首地址=1FFFH,属性G=0,D=1,AVL=0, 访问权字节, P=1,DPL=11,S=1, TYPE=001,A=0,对照描述符格式
31???????24 23 22 21 20 19??16 15 14 13 12 S 段基址(B31-B24) G D/B 0 AVL 段界(L19-L16) P DPL 基地址(B15-B0) 8 7??????0 基地址Type A (B23-B16) 段界(L15-L0) 11 10 9 4 0
所以段描述符为: 03 41 F2 000000 1FFFH
(2) 段基址=01000000H,段大小=027FFFFFH-01000000H+1=017FFFFFH=01800000H>FFFFFH+1因此,G=1,由于段大小=(段界+1)×4K,因此段界=段大小/4K-1=01800000H/4K-1=-180H-1=0017FH,其它属性同上,则段描述符=01C1F2000000017FH
2-48 已知从00100000H开始存放FFH,01H,00H,04H,10H,F2H,0AH,06H,FFH,03H,00H,00H,10H,F2H,40H,02H,从02100000H开始存放35H,36H,31H,30H,30H,32H,39H,38H,3AH,DS=000BH,EBX=0000002H,GDTR=001000001FFFH,CR0=60000011H,CR3=00034000H,对于IA-32处理器,执行指令MOV EAX,[EBX]时:
10 《微型计算机及接口技术》
(1) 求源操作数对应的描述符表可存放描述符个数
(2) 求源操作数对应段描述符的值以及该描述符描述段的地址范围 (3) 求源操作数所对应的物理地址 (4) 求指令执行后EAX中的内容。 (5) 从已知条件中还能得到什么信息?
解:DS=000BH=0000 0000 0000 1011B, 对照选择子的格式可知TI=0,选中GDT表,RPL=11为普通用户使用,索引×8=08H
13
(1)GDT表可存放的描述符的个数由索引决定,由于索引共有13位,因此可寻找2=8K个描
述符;
(2)先找出描述符存放的首地址=GDT表首址(GDTR高32位)+索引×8=00100000H+08H=00100008H,以段描述符为0240F210000003FFH,描述符描述的段的大小取决于段界和G,对照段描述符的格式可知G=0,段界=003FFH,段基址=02100000H,因此段地址范围为02100000H~0210003FFH;
(3)CR0=600000011H,因此PE=1,PG=0,是分段而不分页的保护方式,因此CR3多余,段内偏移地址=EBX的值=00000002H,因此物理地址=段基址+段内偏移地址=02100000H+00000002H=02100002H;
(4)021000002H开始的4个字节就是EAX的值=39323031H;
(5)由段描述符可知,G=0,D=1为32位数据,此外决定其它属性的主要是访问权字节,访问权字节中为F2H=11110010B,即P=1表示数据在物理存储器中,DPL=11表示一般用户程序访问的数据,S=1表示段描述符,A=0表示该段还没有被访问过,TYPE=001表示该段是向上增长的可写的数据段。
2-49 已知内存中的数据如表5.16所示,对于IA-32处理器,已知内部相应寄存器的值为:ESI=00001230H,DS=SS=ES=FS=GS=1003H。GDT表和LDT表的首地址均为0,CR4=0。内存数据如下所示。
(1)当CR0=60000010H时指令MOV EAX,[ESI]对应源操作数的物理地址及指令执行后EAX中的值。
[ESI]对应源操作数的物理地址及指令执行后EAX(2)当CR0=60000011H时 求指令MOV EAX,中的值。该段的最多能容纳多少字节数据?根据访问权字节说明该段是什么样的段,是否存在存储器中?
地址 : 00011267H 00011266H 00011265H 00011264H 00011263H 00011262H 00011261H 00011260H 数据 : 00H 70H 00H 01H 75H 39H 2AH 00H 地址 : 00011007H 00011006H 00011005H 00011004H 00011003H 00011002H 00011001H 00011000H 数据 : 00H 01H 11H 47H 32H 30H 30H 39H 地址 : 00001007H 00001006H 00001005H 00001004H 00001003H 00001002H 00001001H 00001000H 数据 : 00H 40H F3H 01H 00H 00H 1FH FFH 解:CR4=0表示没有页的扩展,默认4KB页大小
(1)由CR0=60000010H可知,PE=0,处于实地址方式,因此物理地址=段地址×16+偏移地址EAX的值=75392A00H; =10030H+00001230H=00011260H,由表可知执行完MOV EAX,[ESI]之后,
(2)由CR0=60000011H知PE=1且PG=0为仅分段的保护方式,由DS=1003H=0001000000000011B,可知,TI=0选择的是GDT表,RPL=11表示一般用户访问,索引×8=1000H