《微机基本知识与接口技术课后知识题目解析(详细完全版).pdf》由会员分享,可在线阅读,更多相关《微机基本知识与接口技术课后知识题目解析(详细完全版).pdf(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 第一章 第一章 1.1 解: 五代,详细见书 1.2 解: 微型计算机:以大规模、超大规模集成电路为主要部件,以集成了计算机主要部件 控制器和运算器的微处理器为核心,所构造出的计算机系统 。 PC 机:PC(Personal Computer)机就是面向个人单独使用的一类微机 。 单片机:用于控制的微处理器芯片,内部除 CPU 外还集成了计算机的其他一些主要 部件,如:ROM、RAM、定时器、并行接口、串行接口,有的芯片还集成了 A/D、D/A 转换 电路等。 数字信号处理器 DSP:主要面向大流量数字信号的实时处理,在宿主系统中充当数据 处理中心,在网络通信、多媒体应用等领域正得到越来越
2、多的应用 1.3 解: 微机主要有存储器、I/O 设备和 I/O 接口、CPU、系统总线、操作系统和应用软件组 成,各部分功能如下: CPU:统一协调和控制系统中的各个部件 系统总线:传送信息 存储器:存放程序和数据 I/O 设备:实现微机的输入输出功能 I/O 接口:I/O 设备与 CPU 的桥梁 操作系统:管理系统所有的软硬件资源 1.4 解: 系统总线:传递信息的一组公用导线,CPU 通过它们与存储器和 I/O 设备进行信息交 换 。 好处:组态灵活、扩展方便 三组信号线:数据总线、地址总线和控制总线 。 其使用特点是:在某一时刻,只能由一个总线主控设备来控制系统总线,只能有一 个发送者
3、向总线发送信号;但可以有多个设备从总线上同时获得信号。 1.5 解: (1)用于数值计算、数据处理及信息管理方向。采用通用微机,要求有较快的工作 速度、较高的运算精度、较大的内存容量和较完备的输入输出设备,为用户提供方便友 好的操作界面和简便快捷的维护、扩充手段。 (2)用于过程控制及嵌人应用方向。 采用控制类微机,要求能抵抗各种干扰、适应现场的恶劣环境、确保长时间稳定地工作, 要求其实时性要好、强调其体积要小、便携式应用强调其省电。 1.6 解: 2 1.7 解: I/O 通道:位于 CPUCPU 和设备控制器之间,其目的是承担一些原来由 CPUCPU 处理的 I/OI/O 任 务,从而把
4、CPUCPU 从繁杂的 I/OI/O 任务中解脱出来。由 10 根信号线组成(A9-A0)。 1.8 解: BIOS:基本输入输出系统。 主要功能:用来驱动和管理诸如键盘、显示器、打印机、磁盘、时钟、串行通信接 口等基本的输入输出设备 1.9 解: 基本 RAM 区:640KB 保留 RAM 区:128KB 扩展 ROM 区:128KB 基本 ROM 区:128KB 1.10 解: (1)、数用来直接表征量的大小,包括:定点数、浮点数。 (2)、码用来指代某个事物或事物的某种状态属性,包括:二进制、八进制、十 进制、十六进制。 区别:使用场合不同,详见 P16. 1.11 解: (1) 3 1
5、02 1016 174.66)(10101110.10101) 174.66)(. 8)AE A ( ( (2) 210 216 100011101011.01011)(2283.34375) 100011101011.01011)(8.58)EB ( ( (3) 162 1610 F18A6.6)(11110001100010100110.0110) F18A6.6)(989350.375) ( ( 1.12 解: 原码 反码 补码 +37 00100101/25H 00100101/25H 00100101/25H -37 10100101/A5H 11011010/DAH 1101101
6、1/DBH 1.13 解: +37 -37 16 位 32 位 16 位 32 位 00 25H 00 00 00 25H FF 5BH FF FF FF 5BH 1.14 解: 无符号数:70D 补码有符号数:70D BCD 码:46D ASCII:F 1.15 解: 1)、相加后若出现和大于 9,则将和减去 10 后再向高位进 1 2)、若出现组间进位,则将低位加 6 1.16 解: 详见课本 16 页。 1.17 解: C3 40 20 00 1.18 解: 50 50H 十进制值 50 80 二进制 十六进制 二进制 十六进制 4 0011 0010B 32H 0101 0000B 5
7、0H 1.19 解: D:44H d:64H CR:0DH LF:0AH 0:30H SP:20H NUL:00H 1.20 解: 国标码:36 50H 机内码:B6 B0H 第 3 章 第 3 章 3.2 解: (1)完整的汇编语言源程序由段组成 (2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与 段之间的顺序可随意排列 (3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序 只有一个起始点 (4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任 一段内 (5)通常,程序还需要一个堆栈段 3.3 解: 存储模式存储模式 特 点特
8、 点 TINYTINY COM 类型程序,只有一个小于 64KB 的逻辑段(MASM 6.x 支持)COM 类型程序,只有一个小于 64KB 的逻辑段(MASM 6.x 支持) SMALLSMALL 小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于 64KB小应用程序,只有一个代码段和一个数据段(含堆栈段),每段不大于 64KB COMPACTCOMPACT 代码少、数据多的程序,只有一个代码段,但有多个数据段代码少、数据多的程序,只有一个代码段,但有多个数据段 MEDIUMMEDIUM 代码多、数据少的程序,可有多个代码段,只有一个数据段代码多、数据少的程序,可有多个代码段,只
9、有一个数据段 LARGELARGE 大应用程序,可有多个代码段和多个数据段(静态数据小于 64KB)大应用程序,可有多个代码段和多个数据段(静态数据小于 64KB) 5 HUGEHUGE 更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制)更大应用程序,可有多个代码段和多个数据段(对静态数据没有限制) FLATFLAT 32 位应用程序,运行在 32 位 80 x86CPU 和 Windows 9x 或 NT 环境32 位应用程序,运行在 32 位 80 x86CPU 和 Windows 9x 或 NT 环境 3.4 解: 开始位置:用标号指明 返回 DOS:利用 DOS 功能调用的
10、 4CH 子功能来实现 汇编停止:执行到一条 END 伪指令时,停止汇编 3.5 解: 段定位、段组合和段类型。 3.6 解: stack segment stack db 1024(0) stack ends data segment string db Hello,Assembly!,0dH,0aH,$ data ends code segment code assume cs:code,ds:data,ss:stack start: mov dx,offset string mov ah,9 int 21h code ends end start 3.7 解: (1). EXE 程序 程
11、序可以有多个代码段和多个数据段,程序长度可以超过 64KB 通常生成 EXE 结构的可执行程序 (2). COM 程序 只有一个逻辑段,程序长度不超过 64KB 需要满足一定条件才能生成 COM 结构的可执行程序(MASM 6.x 需要采用 TINY 模式) 3.8 解: 符号定义伪指令有“等价 EQU”和“等号”: 符号名 EQU 数值表达式 符号名 EQU 符号名 数值表达式 EQU 用于数值等价时不能重复定义符号名,但“”允许有重复赋值。例如: X= 7 ;等效于:X equ 7 X= X+5 ;“X EQU X+5”是错误的 6 3.9 解: (1) al=67h (2) ax=133
12、h,dx=4h (3) ax=0230h (4) al=41h (4) ax=7654h 3.10 解: (1) 41 h 4 2 h 4 3 h 1 0 1 0 h 45h 46h -1 ? 4 4 4 -1 ? 4 4 4 -1 ? 4 4 4 (2) 10h 00h 0fbh 0ffh ? ? ? ? ? ? 3.11 解:.data my1b db Personal Computer my2b db 20 my3b db 14h my4b db 00010100b my5w dw 20 dup(?) my6c = 100 my7c = 3.12 解: 利用定位伪指令控制,如 org,e
13、ven,align 3.13 解: 包括逻辑地址和类型两种属性。 3.14 解: ;数据段 org 100h varw dw 1234h , 5678h varb db 3 , 4 vard dd 12345678h buff dd 10 dup(?) mess db Hello ;代码段 mov ax , offset varb + offset mess mov ax , type buff + type mess + type vard mov ax , sizeof varw+ sizeof buff+ sizeof mess 7 mov ax , lengthof varw+ len
14、gthof vard 3.15 解: (1) 1000 超过一个字节所能表达的最大整数 (2)SI 应为偶数 (3)两个内存单元不能直接运算 (4)应改为al+1 (5)条件转移指令后面应接标号,而不是变量 3.16 解: mov ah,1 ;只允许输入小写字母 int 21h sub al,20h ;转换为大写字母 mov dl,al mov ah,2 int 21h ;显示 3.17 解: mov bx,offset LEDtable mov al,lednum xlat 3.18 解: mov ax, bufX cmp ax, bufY jae done mov ax, bufY don
15、e: mov bufZ, ax 3.19 解: .model small .stack .data bufX dw -7 signX db ? .code .startup cmp bufX,0 ;test bufX,80h jl next ;jnz next mov signX,0 jmp done next: mov signX,-1 done: .exit 0 end 8 3.20 解: mov dl,2 mov ax,bufX cmp ax,bufY je next1 dec dl next1: cmp ax,bufZ je next2 dec dl next2: mov ah,2 i
16、nt 21h 3.21 解: ;代码段 mov al,number mov bx,0 ;BX记录为 1 的位数 restart: cmp al,0 ;AL0 结束 jz done again: shr al,1 ;最低位右移进入 CF jc next ;为 1,转移 inc bx ;不为 1,继续 jmp again next: push ax push bx shl bx,1 ;位数乘以 2(偏移地址要用 2 个字节单元) jmp addrsbx ;间接转移:IPtableBX ;以下是各个处理程序段 fun0: mov dl,0 jmp disp fun1: mov dl,1 jmp di
17、sp fun2: mov dl,2 jmp disp fun3: mov dl,3 jmp disp fun4: mov dl,4 jmp disp fun5: mov dl,5 jmp disp fun6: mov dl,6 jmp disp fun7: mov dl,7 jmp disp 9 ; disp: mov ah,2 ;显示一个字符 int 21h pop bx pop ax jmp restart done: 3.22 编制程序完成 12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H 和 34H 等 10 个字节数据之和,并将结果存入字节变量 SUM 中
18、(不考虑溢出和进位) 。 ;wjxt322.asm .model small .stack .data b_data db 12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h ;原始数据 num equ 10 ;数据个数 sum db ? ;预留结果单元 .code .startup xor si, si ;位移量清零 xor al, al ;取第一个数 mov cx, num ;累加次数 again: add al, b_datasi ;累加 inc si ;指向下一个数 loop again ;如未完,继续累加 mov sum, al ;完了,存结果 .e
19、xit 0 end 3.23 求主存 0040h:0 开始的一个 64KB 物理段中共有多少个空格? ; wjxt323.asm .model small .code start: mov ax,0040h ;送段地址 mov ds, ax mov si, 0 ;偏移地址 mov cx, si ;计数(循环次数) xor ax, ax ;空格计数器清零 again: cmp byte ptr si, 20h ;与空格的 ASCII 码比较 jne next ;不是空格,转 inc ax ;是空格,空格数加 1 next: inc si ;修改地址指针 loop again ;cxcx1,如 c
20、x0 退出循环 .exit 0 10 end start 3.24 编写计算 100 个 16 位正整数之和的程序。如果和不超过 16 位字的范围(65535) , 则保存其和到 wordsum,如超过则显示overflow 。 答: ;数据段 count equ 100 parray dw count dup(?) ;假设有 100 个数据 wordsum dw 0 msg db overflow,$ ;代码段 mov cx,count mov ax,0 mov bx,offset parray again: add ax,bx jnc next mov dx,offset msg mov
21、ah,9 int 21h ;显示溢出信息 jmp done ;然后,跳出循环体 next: add bx,2 loop again mov wordsum,ax done: 3.25 编程把个 16 位无符号二进制数转换成为用 8421BCD 码表示的 5 位十进制数。转 换算法可以是:用二进制数除以 10000,商为“万位” ,再用余数除以 1000,得到“千位” ; 依次用余数除以 l00、10 和 l,得到“百位” 、 “十位”和“个位” 。 ;wjxt325.asm .model small .stack 256 .data array dw ? ;源字数据 dbcd db 5 dup
22、(?) ;五位 bcd 结果,高对高低对低 .code .startup mov dx, array ;取源数据(余数) mov bx, 10000 ;除数 mov cx, 10 ;除数系数 mov si, 4 ;目的数据高位位移量 again: mov ax, dx ;dx.ax 中存放被除数 mov dx, 0 div bx ;除于 bx,商 ax,余数 dx mov dbcdsi, al ;商10,存结果 11 push dx ;暂存余数 mov ax, bx ;除数除于 10 mov dx,0 div cx ;dx.ax 除于 cx,商 ax、余数 0 存在 dx mov bx, ax
23、 ;bx 是除数 pop dx dec si ;目的数据位移量减 1 jnz again mov dbcd, dl ;存个位数( 10 ) .exit 0 end 3.26 解: (1)汇编语言中,子程序要用一对过程伪指令 PROC 和 ENDP 声明,格式如下: 过程名 PROC NEAR|FAR ;过程体 过程名 ENDP (2)保护用到的寄存器内容,以便子程序返回时进行相应的恢复。 (3)改错: crazy proc pish bx push cx xor ax,ax xor dx,dx again:add a,bx adc dx,0 inc bx inc bx loop again p
24、op cx pop bx 3.27 解(不需调用 HTOASC 子程序): again: mov ah,1 int 21h cmp al,1bh ;ESC 的 ASCII 码是 1bh je done mov dl,al mov ah,2 int 21h ;是大写字母则转换为小写字母 jmp again done: 3.28 解答: 12 asctob proc push cx and dh,0fh ;先转换十位数 shl dh,1 ;十位数乘以 10(采用移位指令) mov ch,dh shl dh,1 shl dh,1 add dh,ch and dl,0fh ;转换个位数 add dh,
25、dl ;十位数加个位数 mov al,dh ;设置出口参数 pop cx ret asctob endp 3.29 解: DIPASC proc ;入口参数:AL要显示的一个 16 进制数 push cx push dx push ax mov cl,4 ;转换高位 shr al,cl call HTOASC mov dl,al ;显示 mov ah,2 int 21h pop ax ;转换低位 call HTOASC mov dl,al ;显示 mov ah,2 int 21h mov dl,H ;显示一个字母“H” mov ah,2 int 21h pop dx pop cx ret DI
26、PASC endp HTOASC proc ;将 AL 低 4 位表达的一位 16 进制数转换为 ASCII 码 and al,0fh cmp al,9 jbe htoasc1 add al,37h ;是 0AH0FH,加 37H 转换为 ASCII 码 ret ;子程序返回 13 htoasc1: add al,30h ;是 09,加 30H 转换为 ASCII 码 ret ;子程序返回 HTOASC endp 3.30 解: lucase proc push bx mov bx,offset string cmp al,0 je case0 cmp al,1 jz case1 cmp al
27、,2 jz case2 jmp done case0: cmp byte ptr bx,0 je done cmp byte ptr bx,A jb next0 cmp byte ptr bx,Z ja next0 add byte ptr bx,20h next0: inc bx jmp case0 case1: cmp byte ptr bx,0 je done cmp byte ptr bx,a jb next1 cmp byte ptr bx,z ja next1 sub byte ptr bx,20h next1: inc bx jmp case1 case2: cmp byte p
28、tr bx,0 je done cmp byte ptr bx,A jb next2 cmp byte ptr bx,Z ja next20 add byte ptr bx,20h jmp next2 next20: cmp byte ptr bx,a jb next2 cmp byte ptr bx,z 14 ja next2 sub byte ptr bx,20h next2: inc bx jmp case2 done: pop bx ret lucase endp 3.31 解: (1)用寄存器传递参数: 最简单和常用的参数传递方法是通过寄存器,只要把参数存于约定的寄存器中就可以 了
29、由于通用寄存器个数有限,这种方法对少量数据可以直接传递数值,而对大量数据只 能传递地址 采用寄存器传递参数,注意带有出口参数的寄存器不能保护和恢复,带有入口参数的 寄存器可以保护、也可以不保护,但最好能够保持一致 (2)用共享变量传递参数 子程序和主程序使用同一个变量名存取数据就是利用共享变量(全局变量)进行参数 传递 如果变量定义和使用不在同一个源程序中,需要利用 PUBLIC、EXTREN 声明 如果主程序还要利用原来的变量值,则需要保护和恢复 利用共享变量传递参数,子程序的通用性较差,但特别适合在多个程序段间、尤其在 不同的程序模块间传递数据 (3)用堆栈传递参数 参数传递还可以通过堆栈
30、这个临时存储区。主程序将入口参数压入堆栈,子程序从堆 栈中取出参数;子程序将出口参数压入堆栈,主程序弹出堆栈取得它们 采用堆栈传递参数是程式化的,它是编译程序处理参数传递、以及汇编语言与高级语 言混合编程时的常规方法 3.32 解: 方法:主程序将入口参数压入堆栈,子程序从堆栈中取出参数;子程序将出口参数 压入堆栈,主程序弹出堆栈取得它们 注意:压栈与弹栈必须要一一对应。 3.33 解: 方法 1: neg32 proc ;入口参数:DX.AX32 位有符号数 neg ax ;实现 0DX.AX 功能 neg dx sbb dx,0 ;这条指令也可以用 dec dx 代替 ret neg32
31、endp ;出口参数:DX.AX32 位有符号数的补码 方法 2: neg32 proc ;入口参数:DX.AX32 位有符号数 15 not ax ;实现 DX.AX 求反加 1 not dx add ax,1 adc dx,0 ret neg32 endp ;出口参数:DX.AX32 位有符号数的补码 3.34 解: ;数据段 array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h ;数组 count equ $-array ;数组元素个数 result db ? ;校验和 ;代码段 mov bx,offset array ;BX数组的偏移地址
32、 mov cx,count ;CX数组的元素个数 call checksum ;调用求和过程 mov result,al ;处理出口参数 mov ax,4c00h int 21h ;计算字节校验和的通用过程 ;入口参数:DS:BX数组的段地址:偏移地址,CX元素个数 ;出口参数:AL校验和 ;说明:除 AX/BX/CX 外,不影响其他寄存器 checksum proc xor al,al ;累加器清 0 sum: add al,bx ;求和 inc bx ;指向下一个字节 loop sum ret checksum endp end 3.35 解: .model small .stack .d
33、ata wdata dw 34abh .code .startup mov ax,wdata call dispa .exit 0 ; 16 dispa proc push cx push dx mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx pop cx ret dispa endp ; dldisp proc push ax or dl,30h cm
34、p dl,39h jbe dldisp1 add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp endp end .model small .stack .data wdata dw 34abh wordtemp dw ? .code .startup mov ax,wdata mov wordtemp,ax call dispa 17 .exit 0 ; dispa proc push cx push dx mov cl,4 mov dl,byte ptr wordtemp+1 shr dl,cl call dldisp mov dl,by
35、te ptr wordtemp+1 and dl,0fh call dldisp mov dl,byte ptr wordtemp shr dl,cl call dldisp mov dl,byte ptr wordtemp and dl,0fh call dldisp pop dx pop cx ret dispa endp ; dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp endp end .model small .stac
36、k .data wdata dw 34abh .code .startup push wdata call dispa 18 pop ax ;add sp,2 .exit 0 ; dispa proc push bp mov bp,sp push ax push cx push dx mov ax,bp+4 mov cl,4 mov dl,ah shr dl,cl call dldisp mov dl,ah and dl,0fh call dldisp mov dl,al shr dl,cl call dldisp mov dl,al and dl,0fh call dldisp pop dx
37、 pop cx pop ax pop bp ret dispa endp ; dldisp proc push ax or dl,30h cmp dl,39h jbe dldisp1 add dl,7 dldisp1: mov ah,2 int 21h pop ax ret dldisp endp end 3.36 解: 如果利用共享变量传递函数,且变量定义和使用不在同一个源程序中,需要利用 19 PUBLIC、EXTERN 声明。 3.37 解: (1)宏定义 (1)宏定义由一对宏汇编伪指令 MACRO 和 ENDM 来完成,格式如下: 宏名 MACRO 形参表 ;宏定义体 ENDM 宏定义
38、之后就可以使用它,即宏调用: 宏名 实参表 (2)宏调用2)宏调用的格式同一般指令一样:在使用宏指令的位置写下宏名,后跟实体参数; 如果有多个参数,应按形参顺序填入实参,也用逗号分隔 (3)宏展开(3)宏展开:在汇编时,宏指令被汇编程序用对应的代码序列替代,这就是宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的 宏定义体完全替代源程序的宏指令,同时用位置匹配的实参对形参进行取代 3.38 解: 宏调用的参数通过形参、实参结合实现传递,简捷直观、灵活多变。宏汇编的一大特 色是它的参数。宏定义时既可以无参数,也可以有一个或多个参数;宏调用时实参的形式 也非常灵活,
39、可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是 表达式;只要宏展开后符合汇编语言的语法规则即可。 3.39 解: 宏:仅是源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减 小目标程序,执行速度没有改变 通过形参、实参结合实现参数传递,简捷直观、灵活多变 子程序:还是目标程序级的简化:子程序调用在执行时由 CALL 指令转向、RET 指令返 回;形成的目标代码较短,执行速度减慢 需要利用寄存器、存储单元或堆栈等传递参数 选择:宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法。通 常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小
40、目标代码时,要 选用子程序 3.40 编写一个宏指令 move doprnd,soprnd,它实现任意寻址方式的字量源操作数 soprnd 送到目的操作数 doprnd,包括存储单元到存储单元的传送功能。 答: move macro doprnd,soprnd mov ax,soprnd mov doprnd,ax endm 3.41 定义一个宏 logical,用它代表 4 条逻辑运算指令:and/or/xor/test。注意需要 利用 3 个形式参数,并给出一个宏调用以及对应宏展开的例子。 答: logical macro lcode,dopd,sopd 20 lcode dopd,sop
41、d endm 例如,如果使用“and ax,bx”指令,可以利用该宏定义,写出宏指令如下: logical and,ax,bx 3.42 解: utol macro local next cmp al,A ;小于“A”不转换 jb next cmp al,Z ;大于“A”不转换 ja next add al,20h ;是大写字母则转换为小写字母 next: endm 3.43 定义一个宏 movestr strn,dstr,sstr,它将 strn 个字符从一个字符区 sstr 传送 到另一个字符区 dstr 解: (假设它们都在数据段) movestr macro strn,dstr,sst
42、r mov cx,ds mov es,cx mov cx,strn mov di,offset dstr mov si,offset sstr cld rep movsb ;重复传送 ES:DIDS:SI endm 第五章 第五章 5.1 解: 主存的作用:保存正在使用的、处于活动状态的程序和数据。 辅存的作用:长期保存程序文件和数据文件,在需要时将这些文件调入 RAM 内存并 激活使用。 cache 的作用:提高对存储器的访问速度。 虚拟存储:由容量较小的主存和容量较大的辅存构成,其目标是扩大程序员眼中的 主存容量。 区别:通过存储器访问指令用户可对主存进行随机访问;用户利用操作系统提供的
43、用户命令和功能调用对辅存进行访问。 5.2 在半导体存储器中,RAM 指的是 随机存取存储器 ,他可读可写,但断电后信息一 般会 丢失 ;而 ROM 指的是 只读存储器 ,正常工作时只能从中 读取 信息,但断电后 信息 不会丢失 。以 EPROM 芯片 2764 为例,其存储容量为 8K8 位,共有 8 条数据线 21 和 13 条地址线。用它组成 64KB 的 ROM 存储区共需 8 片 2764 芯片。 5.3 解: 双译码方式使得地址译码器的输出线的数目大为减少,使得芯片设计得时候复杂度 就低了。 地址线 A9A0 4 根数据线 I/O4I/O1 片选 CS* 读写 WE* 5.4 解:
44、 假想的 RAM 有 12 根地址线、4 根数据线 片选端 CS*或 CE*:有效时,可以对该芯片进行读写操作,通过对系统高位地址线的译 码来选中各个存储芯片 输出 OE*:控制读操作。有效时,芯片内数据输出,该控制端对应系统的读控制线 MEMR*(MRDC*) 写 WE*:控制写操作。有效时,数据进入芯片中,该控制端对应系统的写控制线 MEMW*(MWTC*) 5.5 解: 位片结构:每个存储单元具有一个唯一的地址,可存储 1 位。(4116) 字片结构:每个存储单元具有一个唯一的地址,可存储多位。(2114) 5.6 解: 组成单元 速度 集成度 应用 SRAM 触发器 快 低 小容量系统
45、 DRAM 极间电容 慢 高 大容量系统 NVRAM 带微型电池 慢 低 小容量非易失 掩膜 ROM:信息制作在芯片中,不可更改 PROM:允许一次编程,此后不可更改 EPROM:用紫外光擦除,擦除后可编程;并允许用户多次擦除和编程 EEPROM(E2PROM):采用加电方法在 线进行擦除和编程,也可多次擦写 Flash Memory(闪存):能够快速擦写的 EEPROM,但只能按块(Block)擦除 5.7 解: 位扩充存储器芯片数据位数小于主机数据线数时,利用多个存储器芯片在数据 “位”方向的扩充; 22 地址扩充(字扩充)当一个存储器芯片不能满足系统存储容量时,利用多个存 储器芯片在“地
46、址”方向的扩充 组成 32KB 存储空间,用 SRAM 2114(1K4)需要 64 个芯片; 组成 32KB 存储空间,用 DRAM 4116(16K1)需要 16 个芯片; 它们都需要进行位扩充和地址扩充 5.8 解: 片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个 存储器芯片组成大容量的存储空间 存储器片选信号通常与 CPU 地址总线的高位地址线相关联,可以采用“全译码”、 “部分译码”、“线选译码”方式 采用全译码方式可以避免地址重复 采用部分或线选译码可以节省译码硬件 5.9 解: 2416 5.10 解: 5.11 解: 23 5.12 解: 5.13 解
47、: 5.14 解: 动态随机存取存储器 (DRAM) 的存储单元电路 动态存储单元是由 MOS 管的栅极电 容 C 和门控管组成的。数据以电荷的形式存储在栅极电容上,电容 上的电压高表示存 储数据 1 ;电容没有储存电荷,电压为 0 ,表明存储数据 0 。因存在漏电,使电容 存 储的信息不能长久保持,为防止信息丢失,就必须定时地给电容补充电荷,这种操作称 为 “ 刷新 ” 由于要不断地刷新,所以称为动态存储。 方法:采用“仅行地址有效”方法刷新; 刷新周期:15s 刷新次数:128 24 5.15 解: 4 256KB A19-A16 4 5.16 解: 访问的局部性原理:在一个较短的时间间隔内,由程序产生的地址往往集中在存储 器逻辑地址空间的很小范