资源描述
第三章
1. 分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。
(1) ,2408H (2) ,0 (3) ,[]
(4) 5[], (5) [100H], (6) [],’$’
(7) ,:[] (8) [],
(9) ,05H (10) ,
答:(1)立即数,寄存器 (2)立即数,寄存器 (3)寄存器间接,寄存器
(4)寄存器,寄存器相对 (5)寄存器,寄存器相对 (6)立即数,基址变址
(7)基址变址,寄存器 (8)寄存器,相对基址变址
(9)直接端口寻址,寄存器 (10)寄存器,寄存器
2. 已知:1000H,0200H,02H,内存10200H~10205H 单元的内容分别为10H,
2,3,46H,59H,6。下列每条指令执行完后 寄存器的内容各是什么?
(1) ,0200H (2) ,[200H] (3) ,
(4) ,3[] (5) ,[] (6) ,2[]
答:(1)0200H (2)2A10H (3)0200H
(4)5946H (5)463 (6)6B59H
3. 设1000H,2000H,3500H,00A0H,0024H,0100H,0200H,
数据段中变量名为 的偏移地址值为0030H,试说明下列源操作数字段的寻址方式是什
么?物理地址值是多少?
(1) ,[100H] (2) , (3) ,[]
(4) ,:[] (5) ,[] (6) ,[10H]
(7) ,[] (8) ,[][]
(9) ,[][] (10) ,[][]
答:(1)直接,10100H (2)直接,10030H (3)寄存器间接,10100H
(4)寄存器间接,20100H (5)寄存器间接,100A0H (6)寄存器相对,10110H
(7)寄存器间接,35200H (8)相对基址变址,352D0H
(9)相对基址变址,10154H (10)基址变址,35224H
4. 写出下列指令的机器码
(1) , (2) , (3) [100H],3150H
答:(1)10001B
(2)10001B
(3)11000111 10000111 00000 01010B
5. 已知程序的数据段为:
A ‘$’,10H
B ‘’
C 1234H, 0
D 5 (?)
E 1200459
求下列程序段执行后的结果是什么。
, A
, C
, A
, B
, 3[]
, D
, E
, E
答: , A 24H
, C 1234H
, A 24H, 34H
, B 2
, 3[] 5550H
, D 000
, E 1200H, 459
, E 1200H, 459
6. 指出下列指令中哪些是错误的,错在什么地方。
(1) , (2) 8650H, (3) ,0200H
(4) [],[1200H] (5) ,0 (6) [3],
(7) ,[][] (8) ,:[] (9) ,[][]
(10) , 0A20H (11) ,
(12) ,50H (13) ,05H (14) ,0
答:(1)长度不匹配 (2)立即数不能做目的操作数
(3)段寄存器不能用立即数赋值 (4)两个内存单元不能直接传送数据
(5) 不能用指令直接修改 (6)指令中不能出现
(7) 应和 搭配 (8)正确
(9) 应和 搭配 (10) 后应跟内存单元
(11)偏移地址为16 位, 长度不够 (12)立即数不能用于
(13) 必须用 (14)操作数顺序反向;地址应为 8 位
7. 已知当前数据段中有一个十进制数字0~9 的7 段代码表,其数值依次为40H,79H,24H,
30H,19H,12H,02H,78H,00H,18H。要求用 指令将十进制数57 转换成相应的
7 段代码值,存到 寄存器中,试写出相应的程序段。
答:
40H,79H,24H,30H,19H,12H,02H,78H,00H,18H
……
,5
,
,
,7
,
,
8. 已知当前1050H,0100H,4860H,1287H,试用示意图表示执行下列指
令过程中,堆栈中的内容和堆栈指针 是怎样变化的。
(1)指
9. 下列指令完成什么功能?
(1) , (2) , (3) ,2710H
(4) (5) (6)
(7) (8)
答:(1)→ (2)→ (3)2710H→
(4)1→ (5)0→ (6)1→
(7)*→, (8) 商→,余数→
10. 已知2508H,0F36H,0004H,1864H,求下列每条指令执行后的结果
是什么?标志位 等于什么?
(1) , (2) ,30H (3)
(4) ,00H (5) ,0 (6) ,00H
(7) , (8) ,1 (9) ,
(10) ,1 (11) ,1 (12) ,
答:(1)0408H,0 (2)0F36H,0
(3)07H, 不变 (4)04H,0
(5)01864H,0 (6)0004H,0
(7)0186H,0 (8)2504H,0
(9)0F036H,0 (10)4A10H,0
(11)16C1E6,0 (12)4186H,0
11. 假设数据段定义如下:
‘ & ’
试用字符串操作等指令编程完成以下功能:
(1)把该字符串传送到附加段中偏移量为 开始的内存单元中。
(2)比较该字符串是否和’ ’相同,若相同则将 寄存器的内容置1,否则置
0。并要求将比较次数送到 寄存器中。
(3)检查该字符串是否有’&’,若有则用空格字符将其替换。
(4)把字符串大写字母传送到附加段中以 开始的单元中,其余字符传到以
开始的单元中。然后将数据段中存储上述字符串的单元清0。
答:(1)
,26
(2)补充在附加段定义
1 ‘ ’
,1
1
,12
,0
: ,12
(3) ,
,
,'&'
,26
:
: [1], ' '
:
(4)
,26
: , []
,’A’
,’Z’
:[]
: :[]
: [],0
12. 编程将 寄存器中的内容以相反的顺序传送到 寄存器中,并要求 中的内容不
被破坏,然后统计 寄存器中‘1’的个数是多少。
答:: ,0
,0
,16
: ,1
: ,1
:
13. 设1200H,0100H,5000H,0400H,2000H,3000H,0300H,
(20300H)=4800H,(20302H)=00,0500H, 标号的地址为1200:
0278H, 标号的地址为3400H:0。说明下列每条指令执行完后,程序将分别
转移到何处执行?
(1)
(2)
(3) []
(4)
(5) []
如将上述指令中的操作码 改成,则每条指令执行完后,程序转向何处执行?并
请画图说明堆栈中的内容和堆栈指针如何变化。
答:(1)1200H:0278H
(2)1200H:0300H
(3)1200H:4800H
(4)3400H:0
(5)00:4800H
将操作码 改成 后:
(1)1200H:0278H
指令长度为3,则01003=0103H,入栈
(5)00:4800H
指令长度为2,则01002=0102H,入栈
14. 在下列程序段括号中分别填入以下指令
(1) (2) (3)
试说明在这三种情况下,程序段执行完后,,,, 的内容分别是什么。
: ,01H
,02H
,03H
,04H
:
,1
( )
答:(1) 05H 10H 0 0
(2) 02H 04H 03H 01H
(3) 03H 07H 02H 0
15. 某班有7 个同学英语成绩低于80 分,分数存在 数组中,试编程完成以下工作:
(1)给每人加 5 分,结果存到 数组中
(2)把总分存到 单元中
答:
?,?,?,?,?,?,?
7 (?)
0
,
,
(1)
,7
: ,[]
AL, 5
[], AL
(2) ,
5000H:0000H
5000H:03
5000H:03
5000H:0400H
, 7
1: ,[]
, 0
,
LOOP 1
16. 中断向量表的作用是什么?它放在内存的什么区域内?中断向量表中的什么地址用于
类型3 的中断?
答:中断向量表用来存放中断服务程序的入口地址。8086 的256 类中断的入口地址要占用
1K 字节,位于内存00000H~003 的区域内。中断向量表中0000~0000 用于类型
3 的中断。
17. 设类型2 的中断服务程序的起始地址为0485:0016H,它在中断向量表中如何存放?
答:物理地址 内容
00008H 16H
00009H 00H
0000 85H
0000 04H
18. 若中断向量表中地址为0040H 中存放240,0042H 单元里存放的是D169H,试问:
(1)这些单元对应的中断类型是什么?
(2)该中断服务程序的起始地址是什么?
答:(1)10H
(2)D169H:240
19. 简要说明8086 响应类型0~4 中断的条件是什么?
答:类型0:除法错中断
执行除法指令时,若除数为0 或所得商超过寄存器能容纳的范围,则自动产生类型0
中断。
类型1:单步中断
若 的单步标志1,则每执行完一条指令后,自动产生类型1 中断。
类型2:不可屏蔽中断
当8086 的 引脚上接收到由低变高的电平变化时,将自动产生类型2 中断。
类型3:断点中断
若在程序中某位置设置断点,当程序执行到该断点时,则产生类型3 中断。
类型4:溢出中断
若溢出标志1,则可由溢出中断指令 产生类型4 中断。
第四章
1. 下列变量各占多少字节?
A1 23H,5876H
A2 3 (?),0,0, ‘$’
A3 5 (1234H, 567890H)
A4 4 (3 (1, 2,’’))
答:A1 占4 个字节
A2 占6 个字节
A3 占40 个字节
A4 占60 个字节
2. 下列指令完成什么功能?
,00 11223344H
,15 1111B
,00 255+6/5
AL, 50 4
, 0F00 1234 00
答:(1)将0066H 传送给
(2)将0 传送给
(3)将0 传送给
(4) ,02H
(5) ,00
3. 有符号定义语句如下:
3,4,5,’123’
0
L
求L 的值为多少?
答:6
4. 假设程序中的数据定义如下:
?
16 (?)
?
$
求 的值为多少?表示什么意义?
答: 的偏移地址为0, 当前偏移地址$=2+16+4=22, $22,故
的值为22。
若在 所在行有变量定义,则$表示该变量的偏移地址,即$表示 所在
行的当前偏移地址。故 表示从当前行到 之间定义的变量所占的字节个数。
5. 对于下面的数据定义,各条 指令执行后,有关寄存器的内容是什么?
1 ?
2 10 (?)
3 ‘’
, 1
, 2
, 3
答:1201
6. 下段程序完成后, 等于什么?
, 5
, 80H
L1
, 0
L1: , 0
:
答:讨论从端口5 输入的数据最高位的情况。若最高位为1,则0;若最高位为0,
则0。
7. 编程序完成下列功能:
(1)利用中断调用产生5 秒延时。
(2)利用中断调用,在屏幕上显示1~9 之间随机数。
答:(1)可以利用中断类型1 来处理,因为在系统时钟的中断处理程序中,时钟中断一
次要调用一次 1,即每隔55,产生一次1 中断,要产生5 秒延时,只要中断
55591 次即可。又因1 中断处理程序中只有一条 指令,故可将用户的程序代
替原有的 1 程序。
91 ;计数器
‘5 s !’,0,0,’$’
:
,0
,1 ;得到原中断向量
,35H
21H
;存储原中断向量
; 的偏移地址和段地址
,1 ;设置中断向量
,25H
21H
,21H ;设置中断屏蔽位
,0
21
,2000H ;主程序延迟,在执行此段程序期间
A1: ,3000H ;产生中断
A2:
A2
A1
;取原中断向量
,1
,25H
21H
;5 秒计数
;显示信息
,09H
21H
,91 ;5 秒的值
:
(2)可以利用 1,读取当前时间的1/100 秒为随机数。
: ,0
1 ;读取当前时间:时:分
;:秒:1/100 秒
,0
,9
,30H
,2
21H
,4
21H
8. 编两个通过过程完成将 中存放的二进制数转换成压缩型 码以及将 码转换
成二进制数。
答:(1)将 中的二进制数先后除以1000,100 和10,每次除法所得的商,即是 数
的千位、百位和十位数,余数是个位数。
子程序名:B2
输入参数:十六位二进制数
输出参数:0,则4 位压缩型 码。1,则要转换的数大于9999, 不
变。
使用寄存器::存放除数,:存放中间结果。
B2
,9999 ;>9999,则 置1
:
; 清0
,1000 ;计算千位数
;商在 中,余数在 中
,4
; 左移4 位
,100 ;计算百位数
;百位数加到 中, 左移4 位
,4
;余数保留在 中
,10 ;计算十位数
;十位数加到 中, 左移4 位
,4
;加个位数
;结果送到 中
:
B2
(2)将 中4 位 码顺序乘以1000,100,10 和1,然后求和即得。
子程序名:2
输入参数:4 位压缩 码
输出参数:十六位二进制数
使用寄存器::暂存数据,:存放乘数,:存放中间结果
2
,4
,000
,1000 ;乘以1000
,8
,000
,100 ;乘以100
,4
,000
,10 ;乘以10
,000
2
9. 编写两个通用过程,一个完成 码转换成二进制数功能,另一个完成 字符显
示输出功能。
答:(1)将 中两位 码先转化成数字,然后*10。
子程序名:2
输入参数:2 位 码
输出参数:转换后二进制数
使用寄存器:,,
2
,30H
,10 ;乘以10
,30H
,0
2
(2)使用2 号 功能调用显示字符。
子程序名:
输入参数:2 位 码
输出参数:无
使用寄存器:,
,2
21H
,2
21H
10. 编制两个通用过程,完成十六进制数转换成 码并将 码字符显示。
答:(1)子程序名:
输入参数::4 位十六进制数
输出参数::4 位 码 高2 位, 低2 位
使用寄存器:
,4 ;转换 高4 位
,0F00H
,30H
,3
A1
,7
A1:
;转换 低4 位
,0F00H
,30H
,3
A2
,7
A2:
;转换 高4 位
,4
,30H
,3
A3
,7
A3:
,0 ;转换 低4 位
,30H
,3
A4
,7
A4:
(2)子程序名:
输入参数:,:4 位 码
输出参数:无
使用寄存器:
,02H
21H
21H
21H
21H
,’H’
21H
11. 某程序可从键盘接收命令(0~5),分别转向6 个子程序,子程序入口地址分别为P0~
P5,编制程序,用跳转表实现分支结构。
答:
6 (?)
:
,
[] P0
[2] P1
[4] P2
[6] P3
[8] P4
[10] P5
,1
21H
,30H
,1
,0
[]
P0:
P1:
P2:
P3:
P4:
P5:
,4
21H
12. 在首地址为 的数组中按递增次序存放着100 个16 位补码数,编写一个程序,把
出现次数最多的数及其出现次数分别存放于 和 中。
答:
100 (?) ;数组中的数据是按增序排列的
?
0
: , :
: ;设置返回
,
,
, ;给 赋值
: , 100 ;循环计数器
, 0
: , 0
, []
: [], ;计算一个数的出现次数
, 2
: , ;此数出现的次数最多吗?
, ;目前此数出现的次数最多,记下次数
, ;记下此数
: ;准备取下一个数
, ;出现最多的次数存入()
, ;出现最多的数存入()
;以上定义代码段
13. 将键盘上输入的十六进制数转换成十进制数,在屏幕上显示。
答:
' 4 :',0,0,'$'
10 (?)
:
;显示提示信息
,9
21H
,4
,0
: ,4 ;输入4 位十六进制数
D1: ,1
21H
,'0'
D1
,'F'
D1
,'A'
A1
,7
A1: ,30H
,0
,0 ;将 转换成十进制数,再转换成 码—>
,0
,10
D2:
,30H
[]
,0
,0
D2
: ,0 ;显示十进制数
,2
21H
,0
21H
D3:
[]
,2
21H
D3
,4
21H
14. 将 中的无符号二进制数转换成 字符串表示的十进制数。
答:将13 题输入过程和输出过程去掉即得。
10 (?) ;转换后 码按倒序存放于
:
, ×××× ;无符号二进制数
,0 ;将 转换成十进制数,再转换成 码—>
,0
,10
D2:
,30H
[]
,0
,0
D2
: ,4
21H
15. 从键盘输入20 个有符号数,将它们排序并在屏幕上显示。
答:
20 (?) ;存放20 个有符号数
10 (?) ;输出时暂时保存每一个数的 码
:
,20
,10
,0
,0
: ,0 ;输入20 个有符号数(十进制),并
A1: ,1 ;转化为二进制数存放于 数组
21H
,' ' ;判断是否空格
A2
,0 ;是否回车符
A2
,'-' ;是否‘-’
A3
A4
A3: ,1
A1
A4:
,30H
,0
A1
A2: ,1
A5
;若为负数,则取负
A5: []
,0
,2
,0 ;回车换行
,2
21H
,0
21H
,0 ;对20 个有符号数按由小到大顺序排序
,19 ;采用冒泡法,排序后依然存放于 数组
L1:
L2: []
[2]
1
[2]
[]
1: ,2
L2
,0
L1
,20 ;将20 个有符号数(二进制)转换为十进制数
,0 ;再转换为 码并输出屏幕
D1: []
,2
,1000H
D4
,'-'
,2
21H
D4: ,0
,0
,10
D2:
,30H
[]
,0
D3
,0
D2
D3: [1]
,2
21H
D3
,' '
,2
21H
D1
,4 ;返回
21H
16. 编写多字节有符号数的加法程序,从键盘接收两个加数,在屏幕上显示结果。
答:
1 ' ():',0,0,'$'
2 ' ():',0,0,'$'
3 ' ():',0,0,'$'
1 0,0 ;存放加数1
2 0,0 ;存放加数2
0,0,0,0 ;存放结果
:
1 ;输入第一个加数(4 位十六进制数)
,9
21H
,2
,8
:
,4
B1
,2
B1: ,4
1[]
C1: ,1
21H
,'0'
C1
,'F'
C1
,'A'
A1
,7
A1: ,30H
,0
1[]
,0 ;回车换行
,2
21H
,0
21H
2 ;输入第二个加数(4 位十六进制数)
,9
21H
,2
,8
1:
,4
B2
,2
B2: ,4
2[]
C2: ,1
21H
,'0'
C2
,'F'
C2
,'A'
A2
,7
A2: ,30H
,0
2[]
1
,0 ;回车换行
,2
21H
,0
21H
1 ;两数相加
2
,4
: ,[]
,[]
[]
3 ;显示结果(4 位十六进制数)
,9
21H
,4
,3
:
[]
,4
,30H
,3
D1
,7
D1: ,2
21H
[]
,0
,30H
,3
D2
,7
D2: ,2
21H
,4 ;返回
21H
17. 编写2 位非压缩型 码相乘的程序。
答:转化成加法进行累加运算。
1 09H,09H
2 09H,08H
4 (0)
:
2+1 ;计算加法次数
,10
2
,0
: ,0 ;通过循环做累加
1
1
,0
1+1
1
2
,0
2
3
,0
3
,4 ;返回
21H
18. 编写完整的程序求N!,求N 大于6 时的运算结果,并在屏幕上显示结果。
答:
N 8 ;求8 的阶乘
:
,0
;调用过程求N!,,!
B2 ;调用过程将结果转换为十进制,然后屏幕显示
,4
21H
,0
,1
:
;递归调用N!*(1)!
B2
,10000
,1000
,100
,10
,1
B2
,0
,30H
,2
21H
19. 在附加段有一个数组,首地址为,数组中第一个字节存放了数组的长度。编一个
程序在数组中查找0,找到后把它从数组中删去,后续项向前压缩,其余部分补0。
答:
10, 1,0,2,3,4,0,5,6,7,0 ;10 个数
M 0
, ,
: , ; 初始化,
,
,
, M ; 关键字M 存入
,
, [] ; 数组长度存入
, 0
;指向数组起始地址
;清方向标志
L1: ;重复搜索关键字
; 未找到,转 结束
; 最后一个数是M,转
;关键字下一单元地址和循
;环次数入栈保护
: , [] ; 前移,末尾补0
[1],
[1], 0
; 恢复,
; 由于 已自动加1
L1
: , 4
21H
20. 编程完成将第二个字符串插入到第一个字符串的指定位置上。
答:
1 ' !','$'
100 (0) ;缓冲区
1 ? ;字符串1 的长度
2 ' !','$'
2 ? ;字符串2 的长度
8 ;插入位置
:
1 ;求字符串1 的长度存入1
,'$'
1,0
D1:
D2
1
D1
D2: 2 ;求字符串2 的长度存入2
,'$'
2,0
D3:
D4
2
D3
D4: 1 ;将字符串1 自插入位置开始的字符向后移动,
1 ;空出位置以便插入字符串2
2
1
2 ;将字符串2 插入到字符串1 指定位置
1
2
1
,9
21H
,4
21H
21. 将学生的班级、姓名、学号、课程名、成绩定义为一个结构,用结构预置语句,产生5
个学生的成绩登记表,编程序将成绩小于60 分的学生姓名、成绩显示出来。
答:
? ;班级
'$' ;姓名
? ;学号
'' ;课程
? ;成绩
1 <1,'$',001,'',70>
2 <1,'$',002,'',80>
3 <1,'$',003,'',50>
4 <1,'$',004,'',90>
5 <1,'$',005,'',55>
:
,5 ;通过循环结构进行筛选
,0
: 1[] ;取成绩
,60
D1
1[] ;小于60 则显示姓名和成绩
,9
21H
,' '
,2
21H
1[] ;成绩转换为 码显示
,0
,10
,30H
,2
21H
,30H
,2
21H
,0
,2
21H
,0
21H
D1: ,13
,4
21H
22. 编程序统计学生的数学成绩,分别归类90 分~99 分,80 分~89 分,70 分~79 分,60
分~69 分及60 分以下,并将各段的人数送入内存单元中。
答:设学生人数为字节,成绩为压缩 码,且都是合法的。
,…….
$
5 (0) ;存放各类成绩统计结果
1 (0) ;存放60 分以下成绩
2 (0) ;存放60 分~69 分成绩
3 (0) ;存放70 分~79 分成绩
4 (0) ;存放80 分~89 分成绩
5 (0) ;存放90 分以上成绩
: :
: ,
;取学生人数
,0
,0
D1: ,[]
,60H
1
,[]
1[]
[]
5
1: ,69H
2
,[1]
2[]
[1]
5
2: ,79H
3
,[2]
2[]
[2]
5
3: ,89H
4
,[3]
3[]
[3]
5
4: ,[4]
4[]
[4]
5:
D1
,4
21H
23. 编制宏定义,将存储器区中一个用’$’结尾的字符串传送到另一个存储器区中,要求源地
址、目的地址、串结尾符号可变。
答: , ,
, ; 用于解决宏定义内的标号问题
; 源串地址, 目的串地址
; 串结尾符号
, 0
: , []
[],
,
:
24. 定义宏指令名:它完成比较两个数X 和Y,若X>Y,则执行2*Y 结果送到
,若X≤Y,则执行2* 结果送到。
答: X, Y,
X Y
, Y
, 1
, X
,
, X
, 1
, Y
,
25. 功能调用需要在 寄存器中存放不同的功能码,试将这些功能调用定义成宏指令
,再定义宏指令,完成显示字符的功能,并展开宏调用 ‘*’。
答:
,
21H
,
02H
宏调用: ‘*’
宏展开: , ‘*’
, 02H
21H
26. 编一段程序产生乐曲。
答:演奏儿歌《一闪一闪亮晶晶》
1 1|5 5|6 6|5-|4 4|3 3|2 2|1-|
5 5|4 4|3 3|2-|5 5|4 4|3 3|2-|
1 1|5 5|6 6|5-|4 4|3 3|2 2|1-
65535,262,294,330,349,392,440,494 ;各音阶频率,65535 对应0,
523,578,659,698,784,880,988 ;表示不发声
1046,1175,1318,1397,1568,1760,1976
0,8,8,12,12,13,13,12,0, 11,11,10,10,9,9,8,0 ;乐谱各音符频率在
12,12,11,11,10,10,9,0, 12,12,11,11,10,10,9,0 ; 中的相对
8,8,12,12,13,13,12,0, 11,11,10,10,9,9,8,0 ;位置
:
,49
: ,[]
,1
,[]
: ,4
21H
,10110110B
43
,12H
,34
42
42
,61H
,03H
61
,0
: ,1700H
:
,61H
,0
61
,0
1: ,100H
1:
1
1
第五章
1. 静态 和动态 有何区别?
答:(1)静态 内存储的信息只要电源存在就能一直保持,而动态 的信息需要定
时刷新才能保持
(2)静态 的集成度比较低,运行速度快,而动态 的集成度高,运行相对较
慢
(3)静态 造价成本高,动态 价格便宜
2. 、、、 在功能上各有何特点?
答: 是只读存储器,根据写入方式的不同可以分为四类:掩膜型、、
和。
掩膜型 中信息是厂家根据用户给定的程序或数据,对芯片图形掩膜进行两次光刻
而写入的,用户对这类芯片无法进行任何修改。 出厂时,里面没有信息,用户采用
一些设备可以将内容写入,一旦写入,就不能再改变了,即只允许编程一次。
可编程固化程序,且在程序固化后可通过紫外光照擦除,以便重新固化新数据。
可编程固化程序,并可利用电压来擦除芯片内容,以重新编程固化新数据。
3. 的和输入的用途是什么?
答:为列地址选通信号,用于指示地址总线上的有效数据为列地址; 行地址选
通信号,用于指示地址总线上的有效数据为列地址。
4. 什么是?作用是什么?它处在微处理机中的什么位置?
答: 也称为高速缓存,是介于主存和 之间的高速小容量存储器。
为了减少 和内存之间的速度差异,提高系统性能,在慢速的 和快速
之间插入一速度较快、容量较小的,起到缓冲作用,使 既可以以较快速度存取
中的数据,又不使系统成本上升过高,这就是 的作用。
在微处理机中的位置如下图:
5. 直接映像 和成组相联 的组成结构有什么不同?
答:直接映象 是将主存储器中每一页大小分成和 存储器大小一致, 中
每一块分配一个索引字段以确定字段,这样可以通过一次地址比较即可确定是否命中,但如
果频繁访问不同页号主存储器时需要做频繁的转换,降低系统性能;
成组相联 内部有多组直接映象的 ,组间采用全关联结构,并行地起着高
速缓存的作用。访问时需要进行两次比较才能确定是否命中。
6. 为什么要保持 内容和主存储器内容的一致性?为了保持 和主存储器内容的
一致性应采取什么方法?
答:由于 的内容只是主存部分内容的拷贝,故应当和主存内容保持一致。数据不一致
问题通常是由于更新了 的数据而没有更新和其关联的存储器的数据,或更新了存储器
数据却没有更新 的内容所引起的。
为了保持 和主存储器内容的一致性,有两种写入策略:
(1)通写法
在此方法中,当 写入数据到 中后, 就立即将其写入主存中,使主存
始终保持 中的最新内容。此方法简单,更新内容不会丢失,但每次对 的修改同
时要写入主存储器,总线操作频繁,影响系统性能。
(2)回写法
此方法中, 的作用好像缓冲区一样,当 写入数据到 中后, 并不
立即将其回写到主存中,而是等到系统总线空闲时,才将 中的内容回写到主存中,此
方法使得 可以持续运行而不必等待主存的更新,性能比通写法要提高很多,但其
控制器复杂,价格高。
7. 用1024×1 位的 芯片组成16K×8 位的存储器,需要多少芯片?在地址线中有多少
位参和片内寻址?多少位组合成片选择信号?(设地址总线为16 位)
答:由于所用的芯片为1024×1 位,构成1024×8 位(即1K×8 位)的存储器需要8 片,
因此组成16K×8 位的存储器需要16×8=128 片。
片内有1024 个单元,需要10 根地址线。
16 组(每组8 片)存储器需要16 根片选信号,至少需要4 根地址线经译码器输出。
8. 现有一存储体芯片容量为512×4 位,若要用它组成4 的存储器,需要多少这样的芯
片?每块芯片需要多
展开阅读全文