资源描述
微机原理与接口技术(第三版)课堂布置及需要关注习题参考答案 29
第二章作业
2-2简述微处理器的工作方式、各工作方式的含义和区别是什么?它们之间是如何切换的?
答:
1.五种工作方式:实地址方式、保护虚地址方式、虚拟86方式、系统管理方式以及IA-32E方式。
2.含义:
(1)实地址方式是指处理器工作在8086/8088编程环境下的工作方式,其最大地址空间为1MB。
(2)保护地址方式,又称保护虚地址方式,简称保护方式,是真正发挥处理器潜能的一种工作方式。所谓保护是指在执行多任务操作时,对不同任务使用的不同存储空间进行完全隔离,保护每个任务顺利执行,能够寻址的地址空间为实际的物理地址空间即2m(m为处理器外部地址线的引脚条数)。
(3)虚拟86方式是指一个多任务的环境,即模拟多个8086的工作方式。在这个方式之下,处理器被模拟成多个8086微处理器同时工作。
(4) 系统管理方式(SMM)是为实现特定功能及系统安全提供的一种工作方式,SMM的功能主要包括电源管理以及为操作系统和正在运行的程序提供安全性。SMM最显著的应用就是电源管理。
以上四种方式是IA-32所有处理器所具有的工作方式。
(5)从后期的P4到以Core为核心的处理器开始支持64位扩展技术,引入了IA-32E工作方式。在这种方式下,处理器支持两种模式即兼容的工作方式(兼容IA-32处理器的方式)和64位工作方式。在兼容模式下,允许在64位操作系统下运行原来的16位和32位应用程序,可使用前缘REX访问64位数据,最大支持的32位地址空间,而在64位方式下,采用EM64T技术,支持64位操作,同时支持36位的地址(从Pentium Pro开始处理器的外部地址线就提供36条),支持64位线性地址,默认的地址空间为64位,默认的数据宽度为32位,指令允许32/64地址和32/64数据的混合使用,因此又把 Core为核心的处理器称为32/64处理器,与真正64位处理器有区别,可称之为具有64位功能的32位处理器。
3.工作方式的相互转换如下图所示。
以上工作方式中,系统管理方式需要用硬件切换即有/SMI引脚中断方可以从原来的工作方式进入系统管理方式,其它工作方式的切换均可用软件控制来切换工作方式。
2-3 IA-32E方式兼容模式和64位模式下,Cure X系列处理器能够寻址的物理地址空间分别有多大?
答: 具有IA-32E工作方式处理器在兼容模式下,最大支持的32位地址空间即4GB,而在64位方式下,采用EM64T技术,支持64位操作,同时支持36位的物理地址即64GB,支持64位线性地址,默认的地址空间为64位。
2-10 Pentium处理器的U和V两条指令流水线的功能是什么?主频为100MHz的Pentium处理器,最快执行两条指令的时间为多少ns?
答:(1)U流水线主要用于执行复杂指令,而V流水线只能执行简单指令。
(2)最快执行两条指令的时间是一个时钟周期,100MHz主频其一个时钟周期为1/100 (us)=10ns。
2-11简述Pentium处理器的BTB的功能。
答:BTB(分支目标缓冲器)可对分支指令进行预测,目的是提高流水线执行效率。在Pentium微处理器中,使用了BTB预测分支指令,这样可在分支指令进入指令流水线之前预先安排指令的顺序,而不致使指令流水线的执行产生停滞或混乱。
2-18 总结一下8086/8088到Core i7处理器外部地址线、数据线条数、通用寄存器的位数以及所处的工作方式。各自的位长以及所能寻址的物理地址空间有多大?
答:从8086到Corei的相关参数如下表所示表。
处理器
主要参数
8086
80286
80386
80486
Pentium
P6(Pro,PII,PIII)
Pentium 4
Core 2 Duo
Core i7
Corei3/i5/ i7
(二代到六代)
通用寄存器位数
16
16
32
32
32
32
32
32/64
32/64
32/64
外部数据线条数
16
16
32
32
64
64
64
64
64
64
外部地址线条数
20
24
32
32
32
36
36
36
36
36
物理地址空间
1MB
16MB
4GB
4GB
4GB
64GB
64GB
64GB
64GB
64GB
I/O组织(端口个)
64K
64K
64K
64K
64K
64K
64K
64K
64K
64K
工作方式
实方式
实方式
保护方式
实方式
保护V86
实方式
保护、V86
实,保护、V86、系统管理
实、保护、V86、系统管理
实、保护、V86、系统管理
实、保护、系统管理、IA-32E
实、保护、系统管理、IA-32E
实、保护、系统管理、IA-32E
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开始取四字和一个字的值。
解:按照数据低字节存放在低地址的原则,在Intel处理器中,为了保持兼容性,仍然定义一个字为16位(尽管字长已经是32位或64位)
从1FF00000H开始的双四字的值=8877665544332211EFCDAB9078563412H
从1FF00008H开始的双字的值=44332211H
从1FF00010H开始的四字的值=FFEEDDCCBBAA0099H
从1FF00010H开始的一个字的值=0099H
2-32 对于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,PF=1,ZF=0,CF=0,OF=1,SF=1
(2)
2345H+5219H=755EH
0010 0011 0100 0101
+ 0101 0010 0001 1001
0111 0101 0101 1110
AF=0,PF=0,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,PF=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,PF=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,PF=1,ZF=1,CF=1,OF=0,SF=0
2-37 内存数据如表2.26所示,指出实地址方式下,执行下列程序段后AX中的值。
MOV AX,1100H
MOV DS,AX
MOV BX,200H
MOV AX,[BX+62H]
表2.26 题2-38,2-43和2-44表(内存数据分布情况)
地址
数据
地址
数据
地址
数据
地址
数据
:
:
:
:
:
:
:
:
00011267H
00H
00011237H
00H
00001047H
00H
00001007H
00H
00011266H
70H
00011236H
00H
00001046H
01H
00001006H
40H
00011265H
00H
00011235H
11H
00001045H
1EH
00001005H
F3H
00011264H
01H
00011234H
47H
00001044H
13H
00001004H
01H
00011263H
75H
00011233H
32H
00001043H
00H
00001003H
00H
00011262H
39H
00011232H
30H
00001042H
00H
00001002H
00H
00011261H
2AH
00011231H
31H
00001041H
1FH
00001001H
1FH
00011260H
00H
00011230H
36H
00001040H
FFH
00001000H
FFH
解:从程序段知DS=1100H,有效地址(偏移地址)=200H+62H=262H,因此物理地址=11000H+262H=11262H,11262H开始的一个字为7539H,所以AX=7539H
2-38 IA-32处理器描述符中所含有的基地址为089C0000H,段界限为0003FH,求(1)G=0时该描述符所寻址段的地址范围,该段如果要存汉字,能容纳多少个?(2)G=1时,对于4K页,描述的段的地址范围。
解:(1)G=0,段以字节为单位,段大小=段界+1=3FH+1=40H=64,末地址=段基址+段大小-1=段基址+段界=089C0000H+3FH=089C0000H~0x89C0003F,可容纳汉字64/2=32个;
(2)G=1时,段大小以页为单位(4K页),段大小=(段界+1)×4K=(3FH+1)×1000H=40000H=262144,末地址=段基址+段大小-1=089C0000H+40000-1=089C0000H+3FFFFH=089FFFFFH,可容纳汉字262144/2=131072个。
2-39 试定义IA-32处理器的两个段描述符来描述一个存储器段,均为一个可写、向上增长的用户访问的在物理存储器中、未访问过的数据段,(1)地址范围为03000000H~03001FFFH,(2)01000000H~027FFFFFH。
解:(1)定义段描述符就是确定段基址、段界和相关属性
段基址=03000000H,段界=末地址-首地址=1FFFH,段界<FFFF,因此,属性G=0,另外根据IA-32处理器,默认D=1(32位数据),AVL=0,
访问权字节, P=1,DPL=11,S=1, TYPE=001,A=0,对照描述符格式
31…………………24
23
22
21
20
19……16
15
14 13
12
11 10 9
8
7………………0
段基址(B31-B24)
G
D/B
0
AVL
段界(L19-L16)
P
DPL
S
Type
A
基地址(B23-B16)
4
基地址(B15-B0)
段界(L15-L0)
0
所以段描述符为: 03 40 F2 000000 1FFFH
(2) 段基址=01000000H,段大小=027FFFFFH-01000000H+1=017FFFFFH=01800000H>FFFFFH+1因此,G=1,由于段大小=(段界+1)×4K,因此段界=段大小/4K-1=01800000H/4K-1=1800H-1=17FFH,其它属性同上,则段描述符=01C1F200000017FFH
2-41 已知从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]时:
(1) 求源操作数对应的描述符表可存放描述符个数
(2) 求源操作数对应段描述符的值以及该描述符描述段的地址范围
(3) 求源操作数所对应的物理地址
(4) 求指令执行后EAX中的内容。
(5) 从已知条件中还能得到什么信息?
解:DS=000BH=0000 0000 0000 1011B, 对照选择子的格式可知TI=0,选中GDT表,RPL=11为普通用户使用,索引×8=08H
(1)GDT表可存放的描述符的个数由GDTR中的界决定,GDT表的界=1FFFH,因此可存放的段描述符的个数=(1FFFF+1)/8=400H=1K个;
(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的值=32303031H;
(5)由段描述符可知,G=0,D=1为32位数据,此外决定其它属性的主要是访问权字节,访问权字节中为F2H=11110010B,即P=1表示数据在物理存储器中,DPL=11表示一般用户程序访问的数据,S=1表示段描述符,A=0表示该段还没有被访问过,TYPE=001表示该段是向上增长的可写的数据段。
2-42已知内存中的数据如表2.26所示,对于IA-32处理器,已知内部相应寄存器的值为:ESI=00001230H,DS=SS=ES=FS=GS=1003H。GDT表和LDT表的首地址均为0,CR4=0。CR3=000011FFH,内存数据如下所示。
(1)当CR0=70000010H时指令MOV EAX,[ESI]对应源操作数的物理地址及指令执行后EAX中的值。
(2)当CR0=70000011H时 求指令MOV EAX,[ESI]对应源操作数的物理地址及指令执行后EAX中的值。该段的最多能容纳多少字节数据?根据访问权字节说明该段是什么样的段,是否存在存储器中?
地址
数据
地址
数据
地址
数据
地址
数据
:
:
:
:
:
:
:
:
00011267H
00H
00011237H
00H
00001047H
00H
00001007H
00H
00011266H
70H
00011236H
00H
00001046H
01H
00001006H
40H
00011265H
00H
00011235H
11H
00001045H
1EH
00001005H
F3H
00011264H
01H
00011234H
47H
00001044H
13H
00001004H
01H
00011263H
75H
00011233H
32H
00001043H
00H
00001003H
00H
00011262H
39H
00011232H
30H
00001042H
00H
00001002H
00H
00011261H
2AH
00011231H
31H
00001041H
1FH
00001001H
1FH
00011260H
00H
00011230H
36H
00001040H
FFH
00001000H
FFH
解:CR4=0表示没有页的扩展,默认4KB页大小
(1)由CR0=70000010H可知,PE=0,处于实地址方式,因此物理地址=段地址×16+偏移地址=10030H+00001230H=00011260H,由表可知执行完MOV EAX,[ESI]之后,EAX的值=75392A00H;
(2)由CR0=70000011H知PE=1且PG=0为仅分段的保护方式,由DS=1003H=0001000000000011B,可知,TI=0选择的是GDT表,RPL=11表示一般用户访问,索引×8=1000H
段描述符存放的首地址=GDT表首址+索引×8=00001000H,所以通过上表可知,
段描述符=0040F30100001FFFH,段基址=00010000H,段界=01FFFH,G=0,段内偏移量=ESI=00001230H,因此物理地址=段基址+偏移地址=00010000H+00001230H=00011230H,由表可得执行MOV EAX,[ESI]后,EAX的值就是从00011230H开始的4个字节,即EAX=32303136H;
由于G=0时段大小=段界+1=01FFFH+1=2000H=8192字节,即可容纳8192字节的数据
访问权字节=F3H=11110011B,A=1该已经被访问过,同P=1在物理存储器中,是向上增长的可写的数据段。
(3)由CR0=E0000011H知PE=1且PG=10为分段且页的保护方式,
由(2)得线性地址=00011230H,由于CR4=0页大小为4KB(不扩展)
00011230H=0000 0000 0000 0001 0001 0010 0011 0000B,偏移地址=230H
CR3=000011FFH,因此页目录基地址=00001000H,页目录索引*4=0,因此目录项地址=00001000H,从表中找出页目录项为00001FFFH,因此页表基址=00001000H,页表索引*4=11H*4=44H因此页表项地址=00001044H,页表项=00011E13H,页基地址=00011000H,物理地址=页基地址+页内偏移量=00011000H+230H=00011230H,EAX的值就是从00011230H开始的4个字节,即EAX=32303136H;
2-43 已知内存中的据如表2.26所示,IA-32处理器复位后,立即执行以下指令,求出指令执行完EAX中的值并说明处理器的工作状态。(注意自复位后处理器的状态,参见2.3.1中图2.22)。
MOV EAX,CR0
OR EAX,1
MOV CR0,EAX
MOV EAX,00011000H
MOV CR3,EAX
MOV EAX,CR0
OR EAX,80000000H
MOV CR0,EAX
MOV EAX, [23401000H]
地址
数据
地址
数据
地址
数据
:
:
:
:
:
:
00011267H
00H
00011237H
00H
00001007H
00H
00011266H
70H
00011236H
00H
00001006H
40H
00011265H
00H
00011235H
11H
00001005H
F4H
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
解:由前三条指令可知CR0.0(PE)=1转入保护方式,CR3=00011000H,知页目录表基址=00011000H,由第6,7,8条指令可知,CR0.31(PG)=1,即处理器工作在分段和分页的保护方式
由于复位后除代码段外,其它段基地址=0因此段描述符所描述的段基地址也为0,因此线性地址=段内偏移地址=23401000H=0010001101 0000000001 0000 0000 0000B
页目录索引×4=001000110100B×4=234H,页表索引×4=0000000001H×4=00000004H
页目录项基地址=00011000H,因此页目录项的地址为页目录基地址+页目录索引值×4=00011000H+234H=00011234H,因此页目录项=00001147H,页表基地址=00001000H,因此页表项地址为页表基地址+页表索引×4=00001000H+00000004H=00001004H,页表项=00001147H,页基地址=00001000H,物理地址=页基地址+页内偏移地址=00001000H+0=00011000H,因此EAX=00001FFFH
第五章作业
5-2简述半导体存储器的分类及主要性能指标。
答:(1)分类
(2)主要性能指标:存储容量、存取速度和带宽(带宽=存储器总线频率×数据宽度/8 (单位:字节/S))
5-3 说明SRAM、DRAM、MROM、PROM、EPROM及FRAM的特点及简单工作原理。
答:SRAM靠双稳态触发器的两个稳定状态存储信息的;DRAM靠极间电容的充放电来存储信息的;MROM靠光刻技术确定是否保留MOS管决定信息的,跨接MOS管,信息为0,没有跨接MOS管,信息为1;PROM是靠熔丝的通断决定信息的,没有熔断,则信息为1,熔断信息为1;EPROM是靠雪崩注入式场效应管(FAMOS管)的浮置栅是否积累足够的电荷来存储信息的,有足够的电荷积累,则记录信息0,没有足够的电荷积累信息记录;FRAM是靠铁电电容来存储信息的。
5-4 已知一个SRAM芯片的容量为4M×8,该芯片有一个片选信号引脚和一个读/写控制引脚,问该芯片至少有多少个引脚?
解:SRAM的引脚的确定从地址线、数据线、控制线及电源线四方面考虑,地址线m决定字数,2m=4M,因此m=22,容量4M×8,所以n=8,片选一条,读写控制一个,电源和地各一条,芯片共有引脚=22+8+1+1+2=34条。如果算出来为奇数,则加1变偶数,以便于对称,便于制作。
5-6 50ns的512M×8的DRAM芯片,其外部数据线和地址线为多少条?1秒钟至少可存取多少次?如果系统接内存的总线周期40ns的微机系统,在访问存储器时要不要插入等待周期?如果处理器是Pentium,则需要插入多少ns的等待时间?
解:(1)寻址的地址线=log2(单元数)=log2(512M)=log2(229)=29条,由于DRAM的外部地址线是内部的一半,因此DRAM的外部地址线为15条,数据线8条,1s/50ns=109/50=20000000次,即每秒可存取2千万次,总线周期为40ns,因此比 50ns快,因此需要插入等待周期,才能正常访问50ns的存储器。如果是Pentium处理器,,是由于一个总线周期含2个状态,因此一个状态为20ns,因此等待一个状态20ns后,访问时间为40ns+20ns=60ns超过50ns即可访问。因此要插入20ns的等待时间。
5-9 试计算外频(内存模块的核心频率)为200MHz时DDR、DDR2、DDR3、双通道DDR4的带宽。
解:由于DDR、DDR2、DDR3、DDR4数据宽度为64位,200MHz下的速度如下:
(1) DDR:200MHz×2×64/8=1600MB/s
(2) DDR2:200MHz×4×64/8=3200MB/s
(3) DDR3:200MHz×8×64/8=6400MB/s
(4)DDR4:双通道200MHz×8×2×64/8=25600MB/S
5-10已知RAM的容量为
(1) 16K×8 (2) 64K×8 (3) 128K×8 (4) 256K×8
如果RAM的起始地址为3450H,则各RAM对应的末地址为多少?
解:(1)16K×8,单元数16K=24×210=3FFFH+1,所以末地址=首地址+大小-1=3450H+3FFFH=744FH
(2)64K=216=FFFFH+1,末地址=3450H+FFFFH=1344FH
(3)128K=217=1FFFFH+1,末地址=3450H+1FFFFH=2344FH
(4)256K=218=3FFFFH+1,末地址=3450H+3FFFFH=4344FH
5-11如果一个应用系统中ROM为8KB,最后一个单元地址为57FFH,RAM紧接着ROM后面编址,RAM为16KB,求该系统中存储器的第一个地址和最后一个单元地址。
解:ROM最后一个单元为57FFH,8K=213=1FFFH+1,因此首地址=末地址-(大小-1)=57FFH-1FFFH=3800H,由于RAM紧跟ROM后面编址,因此RAM的首地址=57FFH+1=5800H,RAM大小16K=214=3FFFH+1,所以RAM的最后地址就是系统存储器的末地址(最后一个单元的地址)=5800H+3FFFH=97FFH
5-14用4K×8的SRAM芯片构成16K×16的存储器,要求起始地址为08000H,画出联接图,选用8086。
解:需要的芯片数:16K×16/(4K×8)=4×2=8片。起始地址=08000H,容量16K×16=32K×8=32KB(微机是按字节编址的),因此32K=215=7FFFH+1,末地址=08000H+7FFFH=0FFFFH,需要增加的地址线3条,08000H~0FFFFH可变的地址为A14~A0,其中A14、A13为增加的地址线,分别接2-4译码器输入端B和A,A11~A0是芯片本身的地址线接系统地址总线的A12~A1,不变的地址A19~A16均为0,A15=1,A0与逻辑或后接存储器的偶地址(低字节)存储模块的读信号,A0与或后接存储器的偶地址(低字节)存储模块的写信号,与逻辑或后接存储器的奇地址(高字节)存储模块的读信号,与或后接存储器的奇地址(高字节)存储模块的写信号,即当读或写偶地址存储体时,A0=0,能对如1#,3#,5#,7#进行读写操作,当读或写奇地址存储体时,=0,能对2#,4#,6#,8#进行读操作,以保证对奇偶存储体的访问,当A0=0并且=0时,可对一个字(16位)进行访问,连接示意如图所示。
5-16写出图5.43(a)所示的片选信号CS以及(b)中Y0~Y7对应的端口地址。
(a) (b)
图5.43 题5-16图
解:(a)由CS=0可知:A9=0,A8=0,A7=0,A6=1,A5=1,A4=1,A3=1,A2=1,A1=1,A0=1,地址=0001111111B=07FH;
(b)由3-8译码器使能端有效即E3=1,E2=E1=0知:A9=1,A8=0,A7=0,A6=1,A5=0,A4=1,A3=0
Y0:A2A1A0=000,因此Y0的地址=1001010000B=250H
Y1:A2A1A0=001,因此Y1的地址=1001010001B=251H
Y2:A2A1A0=010,因此Y2的地址=1001010010B=252H
Y3:A2A1A0=011,因此Y3的地址=1001010011B=253H
Y4:A2A1A0=100,因此Y4的地址=1001010100B=254H
Y5:A2A1A0=101,因此Y5的地址=1001010101B=255H
Y6:A2A1A0=110,因此Y6的地址=1001010110B=256H
Y7:A2A1A0=111,因此Y7的地址=1001010111B=257H
5-17 简述8088、8086、80386、Pentium、Pentium II、Pentium III、Pentium4以及Core 2系统存储器的组成形式。
解: 8088为8位存储器组织,共一个8位存储体,总容量最大1MB;
8086和80286为16位存储器组织,共2个8位存储体,1个偶地址存储体和1个奇地址存储体,其中8086的每个存储体最大512KB,共1MB,而80286每个8MB,共16MB;
80386为32位存储器组成,共4个8位存储体,每个最大1MB,共4GB;
Pentium~CureX均为64位存储器组织,共8个8位存储体,Pentium每个存储体最大512MB,共4GB,PentiumII~CoreX每个最大8GB,共64GB。
5-19 对于80386/80486设计一个32位存储器模块,使用EPROM芯片,地址范围FFFF0000H~FFFFFFFFH。
解:80386/80486地址线32条,数据线32条,EPROM容量为FFFFFFFFH-FFFF0000H+1=10000H即64KB,
64KB=64K×8=(16×4)×8=16K×32,即可用4片16KB的EPROM 27128通过位扩展构成这一存储器模块。
由地址关系知:不变的地址:A31~A16=全1,变化的就是64KB大小的存储体,存储器的组成如图所示。
5-20 采用SRAM 62512构建的一个64位存储器模块如图5.38所示。
(1)试写出本存储器模块的地址范围。
(2)试编写一段程序,将1号62512的64KB的数据复制到7号62512中
图5.38 SRAM构成的64位存储器模块
答:
(1)A31~A19=0000000000001,A18~A0全0到全1变化,因此地址范围为:00080000H~000FFFFFH
(2)要注意一个62512中的64KB数据的地址是相差8,不是连续的,由64位存储器组成所决定的,因此在写程序时修改地址指针时要特别注意。1号芯片的起始地址为:00080000H,7号芯片起始地址:00080006H,每增加一个数据单元,地址加8,程序片段如下:
MOV CX,0 ;64K个字节单元数据计数器
MOV AX,8000H
MOV DS,AX ;段地址为8000H
MOV SI,0 ;源数据对应偏移地址0,物理地址80000H
MOV DI,6 ;目的数据偏移地址6,物理地址80006H
LP: MOV AL,[SI]
MOV [DI],AL
ADD SI,8
ADD DI,8
LOOP LP
或: 用32位偏移地址
MOV CX,0 ;64K个字节单元数据计数器
MOV ESI,00008000H
MOV EDI,00008006H
LP: MOV AL,[ESI]
MOV [EDI],AL
ADD ESI,8
ADD EDI,8
LOOP LP
5-22 CMOS 的功能是什么?如何对其操作?写出将年月日时分秒的值读出后存入1000H:2000H开始的内存区域的程序片段。
解:CMOS主要包括实时钟及CMOS RAM,因此其主要功能有产生实时钟及保存设置和配置信息。对CMOS的操作分两个步骤:(1)向70H写CMOS地址;(2)对71H读或写数据
第一种方法:由于年月日时分秒地址不连续或规律性不强,可以先在内存缓冲区中定义时间单元,然后就可以构建循环体。
.DATE
DateBuf DB 09H,08H,07H,04H,02H,00H ;定义CMOS年、月、日、时、分、秒地址
.CODE
MOV AX,1000H
MOV ES,AX
MOV DI,2000H
MOV AX,SEG DateBuf
MOV DS,AX
MOV SI OFFSET DateBuf
MOV CX,6
LP1:MOV AL,[SI] ;日期时期单元
OUT 70H,AL
IN AL,71H
MOV ES: [DI],AL
INC DI
INC SI
LOOP LP1
第二种方法一个一个写
MOV AX,1000H
MOV DS,AX
MOV DI,2000H
MOV AL,09H ;年单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
INC DI
MOV AL,08H ;月单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
INC DI
MOV AL,07H ;日单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
INC DI
MOV AL,4 ;时单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
INC DI
MOV AL,2 ;分单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
INC DI
MOV AL,0 ;秒单元
OUT 70H,AL
IN AL,71H
MOV [DI],AL
第六章作业
6-2简述微处理器与I/O设备之间的接口信息。
答:接口信息:微处理器与外设之间交换的信息概括起来有数据信息、状态信息和控制信息。
微机中的数据信息通常有数字量、模拟量和开关量三种基本形式。
状态信息是外部设备向微处理器提供外设当前工作状态的信息,微处理器接收到这些状态就可以了解外设的情况,适时准确地进行有效的数据传送。
常见的外设状态信息如输入设备准备好信号(READY)、输出设备是否忙(BUSY)等等。
控制信息是微处理器通过I/O接口向外部设备发送控制命令的信息。控制命令主要用于I/O设备的工作方式设置等。
6-3简述I/O编址方式。
答:I/O端口地址的编址有两种基本方法:存储器映射编址(统一编址)和I/O映射编址(独立编址)。
存储器映射I/O编址就是I/O端口的地址与存储器的地址统一混合编址,即把一个I/O口地址看作是一个存储单元。
I/O映射编址是指I/O端口与存储器分开独立编址,即I/O端口和存储器都有自己的一套地址空间,而且互不相干。这样,I/O端口不占用内存空间,但在这种编址方式下,必须采用专用的I/O指令(IN或OUT指令)才能访问I/O设备。
从8086到Pentium,仅支持I/O映射的编址方法,而P6架构及之后的处理器既支持I/O映射编址又支持存储器映射编址,即除了用IN/OUT等专用I/O指令外,还可以用访问存储器的指令访问被映射的I/O端口。
6-4微机系统中的16位、32位以及64位I/O组织的特点是什么?各自由哪些信号线访问I/O端口?
答:16位采用2个8位I/O体,32位采用4个8位I/O体,64位采用8个8位I
展开阅读全文