微机原理课后习题参考答案_2011_简版
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课后习题参考答案_2011_简版
习题答案
1-6 将下列⼗进制数转换为⼆进制数、⼗六进制数和BCD 数(1)124.625 (6)268.875 解:
(1)124=01111100B =7CH ,0.625×16=10,所以0.625=0.AH=0.1010B
∴124.625=7C.AH=01111100.1010B=000100100100.011000100101BCD
(2)268=256+12=100001100B =10CH ,0.875×16=14,∴0.875=0.EH=0.1110B.
∴268.875=10C.EH=100001100.111B=001001101000.100001110101BCD 1-7 ⽤16位⼆进制数表⽰出下列⼗进制数的原码、反码和补码。
(1)+128 (4)-5 解:
(1)+128 的原码和补码反码均为0000000100000000B
(4)-5的原码为1000000000000101B ,反码为1111111111111010B ,补码为1111111111111011B 。
1-10 试绘出以下⼗六进制数在内存中存放的⽰意图。
设存放地址均为00H 。
解:
(1)F7H (2)03BAH (3)C804326BH (4)1122334455667788H
2-1 请将左边的术语和右边的含义联系起来,在括号中填⼊你选择的代号字母: 1. 字长(i )a. 指由8个⼆进制位组成的通⽤基本单元。
2. 字节(a )b. 是CPU 执⾏指令的时间刻度。
3. 指令(h )c. µPS 所能访问的存储单元数,与CPU 地址总线条数有关。
4. 基本指令执⾏周期(g )d. 唯⼀能代表存储空间每个字节单元的地址,⽤5位⼗六进制数表⽰。
5. 指令执⾏时间(j )e. CPU 访问1次存储器或I/O 操作所花的时间。
6. 时钟周期(b )f. 由段基址和偏移地址两部分组成,均⽤4位⼗六进制数表⽰。
7. 总线周期(e )g.. 指寄存器加法指令执⾏所花时间。
8. Cache (k )h. 完成操作的命令。
C8H 03H 04H 02H 32H 01H 6BH 00H 内容地址 11H
07H 22H 06H 33H 05H 44H 04H 55H
03H 66H
02H 77H 01H 88H 00H 内容地址 F7H 00H
内容地址 03H 01H BAH 00H 内容地址
9. 虚拟存储器(l )i. 指µP 在交换,加⼯,存放信息时信息的基本长度。
10. 访存空间(c )j. 各条指令执⾏所花的时间不同,不同指令,该值不⼀。
11. 实际地址(d )k. 为缓解CPU 与主存储器间交换数据的速度瓶颈⽽建⽴的⾼速存储器。
12. 逻辑地址(f )l. CPU 执⾏程序时看到的⼀个速度接近内存却具有外存容量的假想存储器。
2-4 试将左边的标志和右边的功能联系起来。
要求:
(1)在括号中填⼊右边功能的代号;
(1)填写其类型(属状态标志者填S :属控制标志者填C )。
(2)写出各标志为0时表⽰的状态。
2-6 试画出8086/8088的寄存器结构,并说出它们的主要⽤途。
解:AX 、BX 、CX 、DX ⽤作数据寄存器,⽤作存放操作数、中间结果。
SP 堆栈指针、BP 基址指针、SI 源变趾、DI
⽬的变趾。
IP 指令指针,FH 控制标志、FL 状态标志。
CS 存储代码段⾸趾、DS 存储数据段⾸趾、SS 存储堆栈段⾸趾、ES 附加数据段⾸趾。
2-8 若⼀个程序段开始执⾏之前,(CS )=97F0H ,(IP )=1B40H ,试问该程序段启动执⾏指令的实际地址是什么?解:启动执⾏指令的实际地址PA =97F0H ×10H +1B40H =99A40H
2-9 若堆栈段寄存器(SS )=3A50H ,堆栈指针(SP )=1500H ,试问这时堆栈顶的实际地址是什么?解:栈顶的实际地址=(SS )×10H +(SP )=3A50H ×10H +1500H =3BA00H
2-11 将8086下列⼯作⽅式的特点填于表中。
解:
2-13 有⼀32位的地址指针67ABH :2D34H 存放在00230开始的存储器中,试画出它们的存放⽰意图。
解:⽰意图如下
3-2 分别指出下列指令中源操作数和⽬的操作数的寻址⽅式。
若是存储器寻址,试⽤表达式表⽰出EA =?PA =?
(1) MOV SI,2100H (4) ADC AX,[BX][SI] (7)MOV AX,ES:[BX] 解(1)源操作数是⽴即数寻址,⽬的操作数是寄存器寻址。
(4)源操作数是基址变趾寻址,EA =(BX)+(SI),PA =16×(DS)+(BX)+(SI), ⽬的操作数是寄存器寻址。
(7)源操作数是寄存器间接寻址,其中EA =(BX ),PA =16×(ES)+(BX ), ⽬的操作数是寄存器寻址。
3-3 已知 8086 中⼀些寄存器的内容和⼀些存储单元的内容如图3-20所⽰,试指出下列指令执⾏后,AX 中的内容(即(AX )=?)。
(1)MOV AX,2010H (2) MOV AX,BX
(3) MOV AX,[1200H]
(4) MOV AX,[BX] (5)MOV AX,1100H[BX]
(6)MOV AX,[BX][SI]
(7)MOV AX,1100H[BX+SI]
(8)LEA AX,[SI]
0100H
BX SI DS 3000H
0002H
CPU
12H
30100H 30101H 30102H 30103H 31200H 31201H 31202H 312-3H ┇
B7H
4CH 78H 34H
65H
2AH 56H M
解:(1)(AX )=2010H (2)(AX )=0100H (3)(AX )=4C2AH (4)(AX )=3412H (5)(AX )=4C2AH (6)(AX )=7856H (7)(AX )=65B7H (8)(AX )=0002H
3-5 已知:(SS )=0A2F0H ,(SP )=00C0H ,(AX )=8B31H ,(CX )=0F213H ,试画出下列指令执⾏到位置1和位置2时堆栈区和SP 指针内容的变化⽰意图。
图中应标出存储单元的实际地址PA 。
PUSH AX PUSH CX ;位置1 POPF ;位置2
3-6 识别下列指令的正确性,对错误的指令,说明出错的原因。
(1) MOV DS, 100 (2) MOV [1000H], 23H (3) MOV [1000H], [2000H] (4) MOV DATA, 1133H (5) MOV 1020H, DX
(6) MOV AX, [0100H+BX+BP] (7) MOV CS, AX (8) PUSH AL
(9) PUSH WORD PTR[SI] (10) IN AL, [80H] (11) OUT CX, AL (12) IN AX, 380H (13) MOV CL, 3300H
位置1栈顶
SS SP SS SP
(14) MOV AX, 2100H[BP]
(15) MOV DS, ES
(16) MOV IP, 2000H
(17) PUSH CS
(18) POP CS
(19) LDS CS, [BX]
(20) MOV GAMMA, CS√
解:
(1)×,不能对段寄存器送⽴即数
(2)×,存储单元类型不正确
(3)×,MOV 不能实现两个存储单元间直接传送(4)×,段名不能作⽬的操作数
(5)×,⽴即数不能作⽬的操作数
(6)×,基址寄存器BX和BP只能使⽤其中⼀个(7)×,CS不能⽤作⽬的操作数
(8)×,堆栈操作作为字操作AL应改为 AX (9)√
(10)×,80H为输⼊端⼝号不加⽅括号
(11)×,应输出到端⼝⽽不是通⽤寄存器
(12)×,⽤DX做间址寄存器380H应存 DX (13)×,类型不匹配
(14)√
(15)×,两个段寄存器间不能直接传送
(16)×,IP不能直接⽤作⽬的操作数
(17)√
(18)×,CS不能做⽬的操作数
(19)×,⽬的操作数应是通⽤寄存器⽽不能是段寄存器CS
(20)×,符号名不能作为⽬的操作数
1、试分别说明下列指令中源操作数和⽬的操作数采⽤的寻址⽅式:
答案:
⽬的操作数源操作数
(1)MOV AX,0FFFFH 寄存器⽴即
(2)MOV ES,AX 寄存器寄存器
(3)XOR CL,[100H] 寄存器直接
(4)ADD [SI],DX 寄存器间寄存器
(5)MOV ES:[2000H],CL 直接寄存器
(6)SUB [BX+SI],1 基+变⽴即
(7)ADC AX,[BX+SI+10H] 寄存器相对基+变
(8)PUSH DS 隐含寄存器
(9)CLD 隐含
(10)CMP [BP+DI],CL 基+变寄存器
2、若(BX)=1123H,(SI)=1968H,位移量=0313H,(DS)=1971H,试确定由这些寄
存器和下列寻址⽅式产⽣的有效地址和物理地址:
答案:
EA 物址
(1)直接寻址;0313H 19A23H
(2)⽤BX的寄存器间接寻址;1123H 1A833H
(3)⽤BX的寄存器相对寻址;1436H 1AB46H
(4)⽤BX和SI的基址变址寻址;2A8BH 1C19BH
(5)⽤BX和SI的相对基址加变址寻址。
2D9EH 1C4AEH
3、连续执⾏以下指令,并在空格中填写执⾏指令的结果。
答案:
MOV AX,2060H AL=60H AH=20H CF=
MOV DS,AX DS=2060H AH=20H CF=
ADD AL,AH AL=80H AH=20H CF=0
INC AX AL=81H AH=20H CF=0
MOV DX,512 DL=00H DH=02H CF=0
SUB AX,DX AL=81H AH=1EH CF=0
3-7 已知存储器数据段中的数据如图3-21所⽰。
阅读下列两个程序段后,回答:1. 每个程序段的运⾏结果是什么?2. 两个程序段各占多少字节的内存,执⾏时间是多少?
(1)LEA SI,NUM1;4-2T+6T
MOV AX,[SI];2-10T
ADD AX,4[SI];3-9T+9T
MOV 8[SI],AX;3-10T
ADD SI,2;3-4T
MOV AX,[SI];2-10T
ADC AX,4[SI];3-9T+9T
MOV 8[SI],AX;3-10T
总计23个字节,84个时钟周期运⾏结果如图中SUM
(2)
MOV AX,NUM1;3-10T
ADD AX,NUM2;4-9T=6T
MOV SUM,AX;3-10T
MOV AX,NUM1+2;3-10T
ADC AX,NUM2+2;4-9T+6T
MOV SUM+2,AX;3-10T
总计20个字节,70个时钟周期。
可见
1. 两个程序运⾏结果相同。
2. 第⼆个程序占20个字节,⽐前者少3个字节,运⾏时间⽐前者少14个时钟周期。
3-11 已知数据如图3-21所⽰,低位在前,按下列要求编写程序段:
1. NUM1 和 NUM2 两个字数据相乘(均为⽆符号数),乘积放在SUM开始的单元。
解:
MOV AX,NUM1
MUL WORD PTR NUM2
MOV SUM,AX
MOV SUM+2,DX
2. NUM1 和NUM2 两个字数据相乘(均为带符号数),乘积放在SUM开始的单元。
解:
MOV AX,NUM1
IMUL WORD PTR NUM2
MOV SUM,AX
MOV SUM+2,DX
3. NUM1单元的字节数据除以13(均为⽆符号数),商和余数依次放⼊SUM开始的两个字单元。
解:MOV AL,NUM1 MOV AH,0
MOV CL,13
DIV CL
MOV SUM,AX
4. NUM1字单元的字数据除以NUM2字单元的字,商和余数依次放⼊SUM开始的两个字单元。
MOV AX,NUM1
MOV DX,0
MOV CX,NUM2
DIV CX
MOV SUM,AX
MOV SUM+2,DX
3-13 已知(AL)=0C4H,DATA单元中内容为5AH,写出下列每条指令单独执⾏后的结果。
①AND AL,DATA;(AL)=40H
②OR AL,DATA;(AL)=0DEH
③XOR AL,DATA;(AL)=9EH
④NOT DATA;(DATA)=0A5H
⑤AND AL,0FH;(AL)=04H
⑥OR AL,01H;(AL)=0C5H
⑦XOR AL,0FFH;(AL)=3BH
⑧TEST A L,80H;(AL)=0C4H
所有指令执⾏后都对标志寄存器有影响。
3-19 写出下⾯指令序列完成的数学计算是什么?
解:MOV CL,3;(CL)←3
SHL AX,CL;(AX)←(AX)×8
SHL BL,CL;(BL)←(BL)×8
SHL CX,CL;(CX)←(CX)×8,此时(CL)=18H
SHL DH,CL;DH算术左移24位后(DH)=0,CF=0
3-27试编写⼀个程序段,能完成下列数学表达式的功能。
-1 (X≤-1)
X=0 (-1
1 (X≥1)
解:设带符号数(WORD)在AX中,程序段如下
GETX: TEST AX,AX
JNS TZERO
MOV AX,0FFFFH
JMP TEND
TZERO:JZ TEND
MOV AX,1
TEND: RET
4-2 计算下列表达式的值(设A1=50,B1=20,G1=2 )
解:
1. A1*100+B1=50*100+20=5020
2. A1 MOD G1+B1=50 MOD 2 +20=20
3. (A1+2)*B1-2=(50+2)*20-2=1038
4. B1/3 MOD 5=20/3 MOD 5=1
5.(A1+3)*(B1 MOD G1)=(50+3)*(20 MOD 2)=0
6. A1 GE G1= 50 GE 2 =11111111B
7. B1 AND 7=20 AND 7= 4
8. B1 SHL 2 + G1 SHR 1= 20 SHL 2 + 2 SHR 1= 81
4-3 已知数据段定义如下,设该段从03000H开始:
DSEG SEGMENT
ARRAY1 DB 2 DUP(0,1,?)
ARRAY2 DW 100 DUP(?)
FHZ EQU 20H
ARRAY3 DB 10 DUP(0,1,4 DUP (2),5)
DSEG ENDS
试⽤分析算符OFFSET,LENGTH, SEG,TYPE 求出ARRAY1,ARRAY2,ARRAY3的段、偏移量和类型,以及它们的LENGTH。
解:求段:
SEG ARRAY1=0300H
SEG ARRAY2=0300H
SEG ARRAY3=0300H
求偏移量:
OFFSET ARRAY1=0000H
OFFSET ARRAY2=0006H
OFFSET ARRAY3=00CEH
求类型:
TYPE ARRAY1=1
TYPE ARRAY2=2
TYPE ARRAY3=1
求LENGTH:
LENGTH ARRAY1=2
LENGTH ARRAY2=100
LENGTH ARRAY3=10
4-16 试编写⼀程序,把X和Y中的⼤者存于BIG单元,若X=Y,则把其中之⼀存⼊BIG单元。
解:DATA SEGMENT X DW ?
Y DW ?
BIG DW ?
DATA ENDS
;------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX MOV AX,DATA
MOV
DS,AX
MOV AX,X
CMP AX,Y JNC STOBIG ;⽆符号数判断,有符号数⽤JGE MOV AX,Y STOBIG:MOV BIG,AX RET START ENDP CODE ENDS END START
【例2】数据块间的搬移程序。
程序要求把内存中⼀数据块(称为源数据块)传送到另⼀存储区(称为⽬的数据块)。
图4-11给出源数据块和⽬的数据块在存储器中可能的3种情况:两块分离和有部分重叠。
对于两个数据块分离的情况,如图4-11(a),数据的传送从数据块的⾸址开始,或者从数据块的末址开始均可。
但对于有部分重叠的情况,则要加以分析,否则重叠部分部分会因“搬移”⽽遭破坏,从图4-11(b)和(c)可以得出以下结论:
当源数据块⾸址<⽬的块⾸址时,从数据块末地址开始传送数据。
当源数据块⾸址>⽬的块⾸址时,从数据块⾸地址开始传送数据。
流程图如图4-12所⽰,
00000H 源数据块源数⽬的据块数据块⽬的数据块数据块 FFFFFH
图4-11 数据块之间的三种情况
图4-12
程序如下:
STACK SEGMENT STACK
DW64DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK
START:MOV CX,0010H ;取搬家字节数(16个字节)
MOV SI,3100H ;取源块⾸址
MOV DI,3200H ;取⽬的块⾸址
CMP SI,DI ;从⾸址开始?
JA A2 ;是,转移
ADD SI,CX ;否,以末地址开始搬家
ADD DI,CX
DEC SI
DEC DI
A1:MOV AL,[SI] ;从末址开始搬家
MOV[DI],AL
DEC SI
DEC DI
DEC CX
JNE A1
JMP A3
A2:MOV AL,[SI] ;从⾸址开始搬家
MOV[DI],AL
INC SI
INC DI
DEC CX
JNE A2
A3:MOV AH,4CH
INT21H
CODE ENDS
END START
6、若⾃6000H单元开始有1000个数(字节),试针对下⾯情况编程将它们中的最⼩值、最⼤值找出来,并分别存放在5000H 和5001H字节单元中。
(1)这1000个数为⽆符号数。
(2)这1000个数为带符号数。
程序如下:
DATA SEGMENT
ORG 6000H
BUFFER DB X1,X2,…,X1000 ;⾃定义N个⽆(带)符号数
COUNT E QU $-BUFFER
MAX EQU 5000H ;保存最⼤值
MIN EQU 5001H ;保存最⼩值
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC
START:MOV AX,DATA
MOV DS,AX
MOV CX,COUNT
LEA BX,BUFFER ;⾸地址→BX
MOV AL,[BX] ;AL←最⼤值初值
MOV DL,[BX] ;DL←最⼩值初值
DEC CX ;循环次数减1
AGAIN:INC BX
CMP AL,[BX] ;⽐较
JNC (JGE) NEXT1 ;若最⼤值≥[BX],则转⾄NEXT1
MOV AL,[BX] ;AL←保存最新的最⼤值
JMP NEXT2
NEXT1:CMP DL,[BX] ;⽐较
JC (JL) NEXT2 ;若最⼩值<[BX],则转⾄NEXT2
MOV DL,[BX] ;DL←保存最新的最⼩值
NEXT2:LOOP AGAIN ;循环
MOV MAX,AX ;MAX←存最⼤值
MOV MIN,DX ;存最⼩值→MIN
MOV AH,4CH
INT 21H ;返回DOS
MAIN ENDP
CODE ENDS
END START
4-22 试⽤串操作指令将⼀个数组BLOCK(均为字节数)中的奇数和偶数分开存放。
解:1设数组BLOCK在数据段,程序运⾏后把数组中的奇数存放在数据段数组PODATA、偶数存放在数据段数组PEDATA中。
2程序分两次扫描,第⼀次搜索奇数,并存放于PODA TA中、第⼆次搜索偶数,并存放于PEDA TA 中。
3 两次搜索均⽤FOR语句结构。
DATA SEGMENT
BLOCK DB 1,2,3,4,5,6,7,8,9,90,21,33
COUNT EQU $-BLOCK
PODATA DB COUNT DUP(?)
PEDATA DB COUNT DUP(?)
DATA ENDS
;-----------------------------------------CODE SEGMENT
MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;-----------------------------------------MOV SI,OFFSET BLOCK MOV DI,OFFSET PODATA MOV CX,COUNT
AGAIN: MOV AL,[SI]
INC SI
TEST AL,1
JZ ELOP
MOV [DI],AL
INC DI
ELOP: LOOP AGAIN
;------------------------------------------MOV SI,OFFSET BLOCK MOV DI,OFFSET PEDATA MOV CX,COUNT
AGAIN1: MOV AL,[SI]
INC SI
TEST AL,1
JNZ ELOP1
MOV [DI],AL
INC DI
ELOP1: LOOP AGAIN1
;------------------------------------------RET
;------------------------------------------MAIN ENDP
;------------------------------------------
END START
4-23 编⼀个程序,其功能是将⼀个字数组ARRAY中的正数和负数分开存放于以PLUS和MINNUS 开始的单元中,并在屏幕上显⽰出正数和负数的个数。
设该数组长度放在数组的第⼀个字单元中。
解:①搜索采⽤FOR 语句结构循环程序。
②程序每次循环采⽤正负数分⽀完成该次正数与负数分离存储。
DATA SEGMENT
ARRAY DW 10H,8 DUP(1FH,-12)
PLUS DW 10H DUP(?,?)
MINUS DW 10H DUP(?,?)
DATA ENDS
;--------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
START: PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
;--------------------------------
MOV SI,OFFSET ARRAY
MOV DI,OFFSET PLUS
MOV BX,OFFSET MINUS
LODSW
MOV CX,AX
AGAIN: LODSW
TEST AX,8000H
JNZ MINS
PLS: STOSW
LOOP AGAIN
JMP COMOUT
MINS: XCHG BX,DI
STOSW
XCHG BX,DI
COMOUT: MOV AX,ARRAY SUB DI,OFFSET PLUS SUB BX,OFFSET MINUS MOV AX,DI
MOV CL,10
DIV CL
OR AL,30H
OR AH,30H
MOV DL,AL
PUSH AX
MOV AH,2
INT 21H
POP AX
MOV DL,AH
MOV AH,2
INT 21H
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
INT 21H
MOV AX,BX
MOV CL,10
DIV CL
OR AL,30H
OR AH,30H
MOV DL,AL
PUSH AX
MOV AH,2
INT 21H
POP AX
MOV DL,AH
MOV AH,2
INT 21H
INT 21H
RET
;-----------------------
MAIN ENDP
CODE ENDS
END START
4-25 试编写⼀程序求级数12+22+32+…的前⼏项和刚⼤于1000的项数n。
解:采⽤DO_WHILE循环结构,程序结束时CL 中存放n
DATA SEGMENT
N DB ?
DATA ENDS
;------------------------------ CODE SEGMENT
ASSUME CS:CODE,DS:DATA MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
;--------------------------------
MOV CL,0
MOV BX,0 AGAIN: INC CL
MOV AL,CL MUL CL
ADD BX,AX CMP BX,1000 JBE AGAIN MOV N,CL
MOV AL,CL RET
;---------------------------------- MAIN ENDP
CODE ENDS
END START
4-27 数据区中存放着⼀字节数组BLOCK(其个数为任意),试编写⼀程序求该数组之和,并存⼊SUM单元(和>1字节)。
解:采⽤最简单的FOR语句循环结构,寄存器CX作循环控制即可。
DATA SEGMENT
ARRAY DB 12H,13H,14H,15H
DB 16H,17H,18H,19H
COUNT EQU $-ARRAY
;------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
MAIN PROC FAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV ES,AX
;------------------------------
MOV CX,COUNT
MOV AX,0
MOV SI,OFFSET ARRAY
AGAIN: ADD AL,[SI]
ADC AL,0
INC SI
LOOP AGAIN
MOV SUM,AX
RET
;----------------------------------
MAIN ENDP
CODE ENDS
END START
5-12 CPU 的存储器系统由⼀⽚6264(8K×8 SRAM)和⼀⽚2764(8K×8 EPROM)组成。
6264的地址范围是
8000H~9FFFH、2764的地址范围是0000H~1FFFH。
画出⽤74LS138译码器的全译码法存储器系统电路(CPU)的地址宽度为16)。
解:8K为213需要13根地址线,∴A0~A12接6262、2764的13根地址线。
A13~A15三根地址线接74LS138的A、B、C三个输⼊端。
具体电路如图所⽰:
5-13 某微处理器系统中有1⽚EPROM 2716,它与CPU的连接如图5-21所⽰。
问2716的地址空间的分配是多少?
解:如图可见A11~A15全为0时2716被选中,
∴其地址空间为0000H ~ 07FFH。
1.若⽤4K×1位的RAM芯⽚组成16K×8位的存储器,需要多少芯⽚(32⽚)?A19~A0地址线中哪些
参与⽚内寻址(A0~A11)?哪些参与作芯⽚组的⽚选择信号(A12~A13)?
2.下列RAM各需要多少条地址线进⾏寻址?多少条数据I/O线?
地址线数据线地址线数据线
(1)512×4;9 4 (5)4K×1;12 1
(2)1K×4;10 4 6)16K×4;14 4
(3)1K×8;10 8 (7)64K×1;16 1
(4)2K×1;11 1 (8)256K×4;18 4
3.使⽤下列RAM芯⽚,组成所需的存储容量,各需多少RAM芯⽚?各需多少RAM芯⽚组?共需多少寻
址线?每块⽚⼦需多少寻址线?
⽚数组数总线数⽚内线
(1)512×4的芯⽚, 组成8K×8的存储容量;32 16 13 9
(2)1024×1的芯⽚, 组成32K×8的存储容量;256 32 15 10
(3)1024×4的芯⽚, 组成4K ×8的存储容量; 8 4 12 10 (4)4K ×1的芯⽚, 组成64K ×8的存储容量; 128 16 16 12
⒈已知⼀个SRAM 芯⽚的容量为16K×4位,该芯⽚的地址线为多少条?数据线为多少条?答:芯⽚容量为213B=8KB ,所以该芯⽚的地址线为14条,数据线为4条。
⒉巳知⼀个DRAM 芯⽚外部引脚信号中有4条数据线,7条地址线,计算其存储容量。
答:7
421284?=?位。
3.某存储芯⽚上有1024个存储单元,每个存储单元可存放4位⼆进制数值,则该存储芯⽚的存储容量是多少字节。
答:512B 。
4. 某 RAM 芯⽚的存储容量为 1024×8 位,该芯⽚的外部引脚最少应有⼏条?其中⼏条地址线?⼏条数据线?若已知某 RAM 芯⽚引脚中有 13 条地址线,8 条数据线,那么该芯⽚的存储容量是多少?
答:该芯⽚外部引脚最少应有18条;其中10条地址线,8条数据线。
芯⽚的存储容量是8KB 。
12.Z80CPU 中⽤2⽚6116(2048×8)组成4KB 的RAM 。
⽤CPU 的地址线A 13和A 14分别作2⽚6116的⽚选控制(线选法),各⽚6116的地址范围为多少?(Z80CPU 的地址总线宽度为16位。
)
解:6116芯⽚上有11根地址线(字选线为A 10~A 0),且6116⽚选为低电平有效。
根据题意,系统中有3根地址线未使⽤(可为任意值X ),所以每⽚6116都占有16组地址范围,每组为2K 个地址。
①设⽤A 13选择第⼀⽚6116,则A 13=0。
地址
信号 A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0
第⼀⽚
⾸地址 X 1 0 X X 0 0 0 0 0 0 0 0 0 0 0
第⼀⽚
末地址
X 1 0 X X 1 1 1 1 1 1 1 1 1 1 1
0000H~07FFH (A 15=A 14=A 12=A 11=0);0800H~0FFFH (A 15=A 14=A 12=0,A 11=1); 1000H~17FFH (A 15=A 14=A 11=0,A 12=1);1800H~1FFFH (A 15=A 14=0,A 12=A 11=1); 4000H~47FFH (A 15=A 12=A 11=0,A 14=1);4800H~4FFFH (A 15=A 12=0,A 14=A 11=1); 5000H~57FFH (A 15=A 11=0,A 14=A 12=1);5800H~5FFFH (A 15=0,A 14=A 12=A 11=1); 8000H~87FFH (A 15=1,A 14=A 12=A 11=
0);8800H~8FFFH (A 15=A 11=1,A 14=A 12=0); 9000H~97FFH (A 15=A 12=1,A 14=A 11=
0);9800H~9FFFH (A 15=A 12=A 11=1,A 14=0); 0C000H~0C7FFH (A 15=A 14=1,A 12=A 11=
0);0C800H~0CFFFH (A 15=A 14=A 11=1,A 12=0); 0D000H~0D7FFH (A 15=A 14=A 12=1,A 11=
0);0D800H~0DFFFH (A 15=A 14=A 12=A 11=1);
②设⽤A 14选择第⼆⽚6116,则A 14=0。
地址 A 15 A 14 A 13 A 12 A 11 A 10 A 9 A 8 A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0。