微型计算机原理与接口技术习题答案
第一章
1、因为计算机内部的CPU是一种集成电路,电路的特点就是通路和断路,所以只能用0和1表示
2、解、
①【10101】原=【10101】补=【10101】反=010101B
【10101】移=2n-1-1+010101=11111+10101=110110B
②【-10101】原=110101B
【-10101】反=101010B
【-10101】补=101011B
【-10101】移=11111-10101=001010B
③【11111】原=【11111】补=【11111】反=011111B
【11111】移=11111+11111=111110B
④【-11111】原=111111B
【-11111】反=100000B
【-11111】补=100001B
【-11111】移=11111-11111=000000B
⑤【10000】原=【10000】补=【10000】反=010000B
【10000】移=11111+10000=101111B
⑥【-10000】原=110000B
【-10000】反=101111B
【-10000】补=110000B
【-10000】移=11111-10000=001111B
4、答:利用补码进行加减法运算比用原码进行运算优越性主要表现在只用一套加法器电路就可以进行加减法运算,简化了电路,降低了运算器的成本。
5、设机器字长为8位,最高位为符号位,试对下列各算式进行二进制补码运算。
(1)16+6=?
解:∵【16】补=10H
【6】补=06H
∴【16+6】补=【16】补+【6】补=10H+06H=16H
(2)8+18=?
解:∵【8】补=08H
【18】补=12H
∴【8+18】补=【8】补+【18】补=08H+12H=1AH
(3)9+(-7)=?
解:∵【9】补=09H
【-7】补=F9H
∴【9+(-7)】补=【9】补+【-7】补=09H+F9H=02H
(4)-25+6=?
解:∵【-25】补=E7H
【6】补=06H
∴【-25+6】补=【-25】补+【6】补=E7H+06H=EDH
(5)8—18=?
解:∵【8】补=08H
【-18】补=EEH
∴【8-18】补=【8】补+【-18】补=08H+EEH=F6H
(6)9-(-7)=?
解:∵【9】补=09H
【-(-7)】补=07H
∴【9-(-7)】补=【9】补+【-(-7)】补=09H+07H=10H
(7)16-6=?
解:∵【16】补=10H
【-6】补=FAH
∴【16-6】补=【16】补+【-6】补=10H+FAH=0AH
(8)-25-6=?
解:∵【-25】补=E7H
【-6】补=FAH
∴【-25-6】补=【-25】补+【-6】补=E7H+FAH=E1H
6、(1)43+18=51
解:[43]补=2BH
[8]补=08H
0010 1011
+0000 1000
____________________________________
0011 1000

因为D7CYD6CY=00=0,所以运算结果没有溢出。
(2)-57+7=-45
解:[-52]补=CCH
[7]补=07H
1100 1100
+0000 0100
_______________________
1101 0011B

因为D7CYD6 CY=01=1,所以运算结果产生正溢出。
(4)72-8=64
解;[72]补=48H
[-8]补=F8H
0100 1000
+1111 1000
______________________________
0100 0000B

因为D7CYD6CY=11=0,所以运算结果没有溢出。
(5)-33+(-37)=-70
解[-33]补=DFH
[-37]补=DHB
1101 1111
+1101 1011
______________________
1011 1010B

因为D7CYD6CY=11,所以运算结果没有溢出。
(6)-90+(-70)=-160
[90]补=A6H
[-70]补BAH
1010 0110
+1011 1010
__________________________
0110 000B

因为D7CYD6CY=11,所以运算产生负溢出。
7、答:“字符串”是以字节、字、双字的相邻序列;
例如:
字节串
| 元素1
| 元素2
| 元素3
| 元素4
| .
| .
| .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
字串
| 元素1
| 元素2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
双字串
| 元素3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| +231-1位串-231
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8、解:bi的字节索引为92除以8取整数商:11;
bi的位余数为92mod8:4
答:bi位在m+11字节的D4位。
解:bj的字节索引为-88除以8取整:11;
bj的位余数为-88mod8:0
答bj位在m-11字节的D0位。
9、(1)8069
答;8069对应的8421BCD码为1000 0000 0110 1001
(2)5324
答0101 0011 0010 0100
10、(1)01111001B
答;(01111001B)=79=1001111B
(2) 10000011B
答;(10000011B)=83=1010011B
11、(1)51
答 35H31H
(2) 7F
答 37H46H
AB
答 41H42H
C6
答 43H36H
第二章
1.答;BIU由4个段寄存器(CS,DS,ES,SS)一个指令寄存器IP1个20位地址加法器,1个指令队列缓冲器(8086为6个字节,8088为4个字节)和总线控制电路等组成。主要功能一是从内存中取指令代码送入指令队列缓冲器中;二是相应EU的总线要求负责与内存或输入/输出接口之间的数据传送;三是在执行转移指令时,BIU使指令队列缓冲器复位,从指定的新地址取指令,并立即传给EU但愿执行。
EU部件是由1个16位ALU寄存器(45个通用寄存器AX,bx,CX,DX,2个指针寄存器BP,SP,2个变址寄存器DI,SI)一个标志寄存器FLAGS和执行控制电路(指令译码和时序产生电路等)等组成。其功能一是从指令队列缓冲器中依次指令代码,译码并执行;二是执行含存储器或I/O口的指令时,形成存储器操作数的段内偏火移地址I/O口地址送BIU;三是执行转移,调用,中断指令时通知BIU复位指令队列缓冲器,立即从新地址开始取指令代码。
在8086/8088CPU中,追踪指令地址的寄存器是IP(指令指针寄存器),由CS:IP指出要执行指令的地址。
2.8X86系列微型存储器的堆栈如下图所示:

(1)堆栈是由内存中按照“先进后出”原则组织起来的一片连续存储单元组成;
(2)SP作为堆栈指针,始终指向“栈顶”
(3)堆栈操作
进栈操作(PUSH)先把SP-2,再把源操作数存入SP所指的字存储在存储单元中;

出栈操作(POP)先把SP所指字单元的内容取到目的操作数,再将SP+2。

3.8086/8088CPU有6个状态标志,含义各是
CF进位借位标志,指示加减法运算中的最高位进位借位,进位借位时CF为1,反之0
PF奇偶标志,指示运算/逻辑运算结果低8位中的1的各数是奇数/偶数,结果中有偶数个为1时,PF为1,反之为0
AP半进标志,示加减法运算中D3位向D4位的进/借位状态,有进/借位时AF为1,反之0
AF0标志,指示算数/逻辑运算结果是ALU中是否全是0,全是0时ZF为1,反之为0
SF符号标志指示算数/逻辑运算结果最高位的状态,最高位为1SF为1反之为0
OF溢出标志,指示带符号算术运算结果是否超出其表示范围,用双高位法判断,有溢出时OF为1,反之0
注意 CFZF SFOF与操作数数的位数有关,80386支持8位,16位和32位运算。
PF AF与其无关.。
8086/8088CPU有3个控制标志,个标志的含义是;
TF单步标志,用来控制COU指令的方式,TF=1,每执行一条指令便产生一次单步中断,当TF=0,连续执行指令。
DF方向标志,控制串操作指令的步进方向,当DF=1,串操作指令从高地址到底地址方向进行。当DF=0时,串操作指令从低地址到高地址进行
IF可屏蔽中断允许标志,当IF=1时,允许响应可屏蔽中断请求,反之禁止
4. 8086/8088CPU存储器组织采用分段结构优势(1)有效利用 8086/8088CPU的2个16为寄存器和1个20位地址加法方便构成20位地址,使 8086/8088CPU的寻找能力达到1MB;(2)方便实现不同的信息的分类存储和共享;(3)有利于模块化程序,多道程序和多用户程序的设计。
逻辑地址是编程者使用的地址,不是程序代码或数据在计算机的实际地址,而物理地址是系统中的每个存储器单元或I/O端口所在的地址,由处理器的地址线状态确定。
逻辑地址必须转化威力地址才能使用,在 8086/8088系统中,器转化方法是;
物理地址=段地址*10H+偏移地址
一个逻辑地址只对应一个物理地址。
本题物理地址=B100H*10H+A300H=BB300H
而一个物理地址可以对应多个逻辑地址,例如本题中物理地址BB300H,可以对应逻辑地址:
B100H: A3OOH
B000H: B3OOH
BB00H: 0300H
BB30H: 0000H
…
5.逻辑地址:2000H:101EH
物理地址:2000H*10H+101EH=2101EH
6.(1)栈顶的逻辑地址:3000H:1FCH;物理地址:3000H*10H+1FCH=3001FCH
(2)栈顶的逻辑地址:3000H:202H;物理地址:3000H*10H+202H=300202H
(1)运算后各标志的状态为:OF=0,CF=1,ZF=0,SF=0,PF=1,AF=0
(2)运算后各标志的状态为:OF=0,CF=0,ZF=0,SF=0,PF=1,AF=1
(3)运算后各标志的状态为:OF=0,CF=1,ZF=0,SF=1,PF=1,AF=1
(4)运算后各标志的状态为:OF=1,CF=0,ZF=0,SF=1,PF=1,AF=0
8.80286 CPU具有存储器管理和保护机构。采用分段的方法管理存储器,每段最大为64KB。支持虚拟存储器。有两种工作方式:实地址方式和虚地址方式。运行实地址方式时,相当于一个快速的8086 CPU,从逻辑地址到物理地址的转换与8086 CPU相同,物理地址空间为1MB。运行虚拟保护方式时,可寻址16MB物理地址,提供1GB的虚地址空间,并能实现段寄存器保护、存储器访问保护及特权级保护和人物之间的保护等。
由总线接口部件BIU、指令预取部件、指令译码部件,执行部件、分段部件和分页部件。
总线接口部件BIU:由请求判优控制器、地址驱动器、流水线总宽度控制、多路转换MUX/收发器等部件组成,主要用于将CPU与外部总线连接起来。
指令预取部件:由预取器及预取队列组成。
指令译码部件:包括指令译码器及已译码指令队列两部分。从代码预取部件的预取队列中读预取的指令字节并译码,变成很宽的内部编码。
执行部件:由控制部件、数据处理部件和保护测试部件组成。
分段部件:由三输入地址加法器、段描述符高速缓冲器及界限和属性检验用可编程逻辑整列组成。
分页部件:将分段部件或代码预取部件产生的线性地址转化成物理地址。
10.答:80386 CPU有三种工作方式,各方式的主要特点是:
在实地址方式,80386只能寻址1MB物理地址空间,相当于一个高速8080 CPU;
在虚地址保护方式,80386可寻址4GP物理地址空间和64TB虚地址空间,对内存再用分段和分页管理方式,更好的兼顾了程序设计的逻辑性和内存管理的高效灵活两者的矛盾。
在虚拟8080方式,8080的程序可以在保护方式的基础上作为任务加以执行,实现多个用户程序同时进行。
11.80386内部寄存器的组成和主要特点归纳如下:
通用寄存器

其他集存器

| CR1
| 保留
|
|
CR2
| 页故障线性地址
|
CR3
| 页故障线性地址
|
调试存储器
| DR0
| 线性断点地址0
|
|
DR1
| 线性断点地址1
|
DR2
| 线性断点地址2
|
DR3
| 线性断点地址3
|
DR4
| Intel保留
|
DR5
| Intel保留
|
DR6
| 断点状态
|
DR7
| 断点控制
|
测试寄存器
| TR6
| 测试控制(命令)
|
|
TR7
| 测试状态(数据)
|
段寄存器
| 150
|
|
CS
|
|
|
DS
|
|
|
ES
|
|
|
SS
|
|
|
FS
|
|
|
GS
|
|
|
|
|
|
描述符高速缓存器
|
|

|
|
|
|
|
|
|
|
110 310 190
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
属性
| 基地址
| 边界
|
|
|
|
|
|
|
|
|
|
系统地址寄存器
|
|
150
|
|
|
|
|
|
|
|
|
|
描述符高速缓存器
|
|
|
|
|
|
110 310 190
|
|
|
|
|
|
|
|
|
|
|
|
选择器
|
| 属性
| 基地址
| 边界
|
|
|
|
|
|
| 310 19
| 190
|
|
|
GDTR
|
|
|
|
|
IDTR
| 线性基地址
| 边界
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第三章
EA是存储单元与段基址间的字节距离——段内偏移地址。实际物理地址位段址乘以10H与段内偏移地址之和。逻辑地址由段寄存器和有效偏移地址二者共同标记的。
有效地址可由以下几个部分组成:(1)基址寄存器内容(2)变址寄存器内容(3)比例因子(4)位移量。可组合成(1)直接寻址(2)寄存器间接寻址(3)基址寻址(4)变址寻址(5)比例变址寻址(6)基址、变址寻址(7)带位移的基址、变址寻址(8)基址加变址寻址(9)带位移的基址加变址寻址。
目的操作数源操作数物理地址
寄存器寻址40EEH
寄存器寻址基址加变址寻址50500H
寄存器寻址立即寻址
寄存器寻址间接寻址
寄存器寻址基址加变址寻址
寄存器寻址带位移基址变址
寄存器寻址基址变址
间接寻址寄存器寻址
寄存器寻址基址变址
(1)×,段寄存器不能直接赋立即数。
(2)×,操作数类型不匹配
(3)×,立即数不能用于交换指令
(4)×,端口直接寻址不能超出00-FFH
(5)√
(6)√
(7)×,不能同时用两个变址寄存器间接寻址
(8)√
(9)×,操作数类型不匹配
(10)√
前面指令表示存入有效地址内容,后面指令表示存入有效地址。
(1)ADD DX,BX
(2)ADD [BX+0B42H],CX
(3)ADD EAX,[EBP][ESI]
(1)06H,0004H(2)EEEEH,17C6H(3)0004H,0004H(4)8094H,0
(5)87H(6)CCH,0(7)0009H(8)94H
(9)84H,04H(10)17C6H
8.009AH,2000H,0F178H,9EH,3DH,50H,40H
SBUFO-6,BX
3126H,0,0
(1)3456H(2)3456H,1FFEH,1FFFH,6789H
(1)(03F8H)=60H(2)(AL)=40H(3)(03F8H)=60H,(03F9H)=80H(4)(AX)=8040H(5)(84H)=60H,(85H)=80H
第四章
(1)第一代语言(机器语言)、第二代语言(汇编语言)、第三代语言(高级语言)、混合语言
(2)汇编语言可编出语句简介,节省内存空间、运行速度快、效率高的程序。
伪指令语句是用于指示汇编程序如何汇编源程序,所以这种语句又叫命令语句。例如源程序中的伪指令语句告诉汇编程序:该源程序如何分段,有哪些逻辑段在程序段中哪些是当前段,它们分别由哪个段寄存器指向;定义了哪些数据,存储单元是如何分配的等等。伪指令语句除定义的具体数据要生成目标代码外,其他均没有对应的目标代码。伪指令语句的这些命令功能是由汇编程序在汇编源程序时,通过执行一段程序来完成的,而不是在运行目标程序时实现的。
机器指令:每一条指令语句在源程序汇编时都要产生可供计算机执行的指令代码(即目标代码),所以这种语句又叫可执行语句。每一条指令语句表示计算机具有的一个基本能力,如数据传送,两数相加或相减,移位等,而这种能力是在目标程序(指令代码的有序集合)运行时完成的,是依赖于汁算机内的中央处理器(CPU)、存储器、I/O接口等硬件设备来实现的。
(1)对
(2)错,DX不能作为寻址内存的指针
(3)错内存存储器单元之间不能直接传递。
(4)对
(5)错,内存存储器单元之间不能直接传递。
(6)对
(7)错,不能直接相加
(8)对
(9)对
(10)对
4.当两个操作数没有寄存器时,一定要指定PTR操作符。
5.DATA SEGMENT
BUF DB 100(?)
RESULT DB?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV CX,99
MOV SI,OFFSET BUF
MOV AH,0
MOV BP,2
L1: MOV BX,0
MOV AL,[SI]
CMP AL,0
JG NEXT1
MOV BX,1
NEXT1:INC SI
PUSH BX
DEC BP
JNZ L1
POP DX
POP DI
CMP DX,DI
JZ NEXT2
ADD AH,1
NEXT2:MOV BP,2
DEC SI
LOOP L1
MOV RESULT,AH
MOV AH,4CH
INT 21H
CODE ENDS
END START
6.DATA SEGMENT
X DW 111H
Y0 LABEL WORD
Y DD 110011H
Z0 LABEL WORD
Z DQ ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV BX,Y0
MUL BX ;Y的低16位与x相乘
MOV Z0,AX
MOV CX,DX
MOV AX,X
MOV BX,Y0+2
MUL BX ;Y的高16位与x相乘
ADD AX,CX ;
MOV Z0+4,DX
MOV AH,4CH
INT 21H
CODE ENDS
END START
DATA SEGMENT
VAR1DW 3C46H
VAR2DW F678H
VAR3DW 0059H
ADDRTABLDD VAR1
DD VAR2
DD VAR3
DATA ENDS
(1)X* Y-Z = 60*70 -8 =4192 =1060H
(2) X/8 + Y = 60/8 +70 =77.5 =4DH
(3)XMOD(Y/ Z) =60MOD(70/ 8) = 60MOD 8 =4
(4) X * (YMOD2) = 60 * (70MOD2 )= 60 *0 =0
(5) XGEY = 60 GE70不成立,所以关系运算结果为0
(6)YANDZ = 70AND8 =01000110AND0000 1000 =0
10.(1)在有符号数组中找到最大数的程序
DATASEGMENT
Mequ10
Datdw1234, -5555,986 ,-3456,5200
dw -1000,2222, 635 , 4360 ,5550
maxdw?
DATAENDS
CODESEGMENT
Assumecs : code ,ds : data
Start : movax , data
Movds ,ax
Movax, dat
Movmax, ax
Cld
Lea si , dat
Movcx , m
St 1:lodsw;把(DS : SI)字单元的内容读入AX中
Cmpax , max
Jnglab
Movmax, ax
Lad :loopst1
Movax , 4c00h
Int21h
CODEENDS
ENDSTART
(2)在有符号数组中找出绝对值最大数的程序
在LODSW指令后插入:
Andax , ax;产生标志
Jnslab1
Negax;是负数则求补
Lab1 : cmpax , max
初始化时,(MAX) =0(最小的绝对值)
(3)在无符号数组中找出最大数的程序
把条件判断指令:
Jnglab改为: jbelab
11、DATASEGMENT
NUMDB 1,2,...,20;这个你随便写20个字节的数据
PDB 20 DUP(?);正数组
PNUMDB 0;正计数
NDB 20 DUP(?);负数组
NNUMDB 0
DATAENDS
CODESEGMENT
ASSUME CS:CODE,DS:DATA
MAINPROCFAR
START: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX;初始化完毕
MOV BX,0
MOV SI,BX
MOV DI,BX
MOV CX,20;设置相关参数
LOP1:MOV AL,NUM [BX] ;取原始数组元素
CMP AL,0
JGE P1;为正则转P1
MOV N [DI],AL
INC DI
INC NNUM;负数组增加,计数变化
JMP NEXT
P1:MOV P [SI],AL
INC SI;正数组增加,计数变化
INC PNUM
NEXT:INC BX;原始数组指针偏移
LOOP LOP1;循环20次--CX
RET;结束
MAINENDP
CODEENDS
END START
12.Data segment
Str1db’microcomputer’
Str2db’microcomputer’
Numequstr2 -str1
Dataends
Codesegment
Assumecs:code,ds:data
Start :mov ax,data
Mov ds,ax
Mov es,ax
Lea si,str1
Lea di,str2
Mov cx,num
Repz cmpsb
Jnz labne
Mov al,’Y’
Jmp exit
Labne:mov al,’N’
Exit:mov ah,4ch
Int 21h
Code ends
Ends startcode ends
End start
第五章
1.在8086CPU中,段长度为64K,对应地址为0000H-FFFFH,根据题意,各段的首末地址分别是:
DS段首地址:021FH*10H+0=021F0H,末地址:021FH*10H+0FFFFH=121EFH
ES段首地址:0A32H*10H+0=0A320H,末地址:0A32H*10H+0FFFFH=1A31FH
CS段首地址:234EH*10H+0=234EOH,末地址:234EH*10H+0FFFFH=334DFH
2.线根据题意求段内偏移地址25432H-234E*10H=1F52H;
当(CS)的内容变为1A31H时,则物理地址应为:1A31H*10H+1F52H=1C262H
在8086中,堆栈操作是按字操作。在题目所给条件下执行PUSH AX后,(SP)=(SP)-2=0004H,(AX)的内容存在内存物理地址1050H*10H+0004H=10504H字单元中;在执行 PUSH AX指令时,8086输出的状态信息为:SOS1S2=110(写内存),S4S3=01(访问堆栈段),S5=0,禁止可屏蔽中断,S6=0,8086与总线相连;总线信号中:WR#、BHE#/S7为低电平,RD#、MIO#、DT/R#为高电平。
6.8086与8088CPU的主要区别有:
内部:指令队列长度8086为6字节,8088为4字节;
外部引脚:8086的M/IO#引脚,在8088中为IO/M#,
8086的ADO-AD15引脚为地址数据复用,而8088只有ADO-AD7为地址数据复用;
8086的BHE/S7引脚高字节数据有效和状态S7,而8088为SSO#。
第六章
分为内存储器与外存储器。内存储器的存取速度较快,存取周期从几ns到几十ns,其存储容量随着微处理器技术的发展而增长很快。外存储器容量大,存储速度慢,其存储容量从几百MB到几十GB,寻址时间为若干ms。
ROM是机器运行期间只能读出信息,而不能随时写入信息的存储器。ROM控制信号引线端通常有芯片允许引线端/CS或芯片开放引线端/CE,同时还有输出禁止引线端/OD或输出开放引线端/OE。
3、(1)掩膜型ROM(ROM),其特点是:用户要写入芯片的数据提供给芯片供应商,在生产该芯片的最后一道掩膜工艺时,将数据写入芯片,用户以后只能读出不能写入。
(2)现场可编程ROM(PROM),其特点是:由于内部器件的一次性编程,不可再生特性,所以用户只可在现场一次性对芯片编程,不能更改。
(3)可改写的ROM(EPROM)其特点是:用户可多次对其编程,其中用紫外线擦除再用电编程的EPROM。必须从用户板上拆下后用紫外线擦除。再用专用编程器对其改写,使用不方便,使用不方便,目前很少使用可用电擦除的E²PROM,可在用户板上用电信号对其进行字节或全部擦除和改写,使用很方便;FLASH是一种新型的电擦除EPROM,它具有E²PROM的所有特性,还具有集成度高,速度快,成本低等特点,是目前使用最广泛的ROM存储器。
5、(1)1K×4位芯片组成16K×8位存贮空间;
解:当用单片容量为1K×4的RAM组成总容量为16K×8的存储器时
需要的总芯片数位(16×1024/1×1024)×(8/4)=32片
需要的芯片组数为16×1024/1×1024=16组
片内地址线数为log2(210)=10根
芯片组选择地址线数为log2(16×210)-10=4根
(2)8K×8位芯片组成512K×8位存贮空间。
解:当用芯片容量为8K×8位的RAM组成总容量为512×8的存储器时;
要芯片的总数为(512×1024/8×1024)×(8×8)=64片
需要的芯片组数为512×1024/8×102=64组
片内地址线数为log2(8×2)=13根
芯片组选择地址线数为log2(512×213)-13=6根
6、解:根据题意,128KB模块的末地址为2的37次方减一等于1FFFFH,所以各模块的首末地址分别为:
模块1首地址:10000H,末地址:10000H+1FFFFH=2FFFFH
模块2首地址:30000H,末地址:30000H+1FFFFH=4FFFFH
模块3首地址:50000H,末地址:50000H+1FFFFH=6FFFFH
模块4首地址:70000H末地址:70000H+1FFFFH=8FFFFH
7、解:(1)根据8088CPU的特点,可以用4K乘4位SRAM芯片组成8K乘8位SRAM,则需要4K乘4位SRAM
(8K/4K)*(8/4)=4片
再用1片8K乘8位EPROM芯片,作为读存储器。
(2)4K乘4位SROM的片内地址线有1g2(4乘2的39次方)=12(根)
8K乘4位EPROM的片内地址线有1g2(8乘2的39次方)=13(根)
(3)假若该16乘8位储存空间链接,且末地址为FFFFFH,则各地址芯片分配:
8KROM的末地址:FFFFH,首地址位:FFFFH-1FFFH=FEOOOH
4K乘8位SRAM2#末地址:FDFFFH,首地址为:FDFFFH-FFFH=FDOOOH
4K乘8位SRAM1#末地址:FCFFFH,首地址为:FCFFFH-FFFH=FCOOOH
画出SRAM、EPROM与8088CPU的连线图
确定片选线
CBA芯片内地址芯片
A19 A18 A17 A16 A15 A14 A13A12...A2 A1 A0
1111110000... 0004K乘8位SROM2#
1111110011...1114K乘8位SROM2#
1111110100...0004K乘8位SROM2#
1111110111...1114K乘8位SROM2#
1111111000...0008KROM
1111111111...1118KROM
画出逻辑电路图:

但是,上述电路不能满足8088自启动。需将8K*8位SRAM移到地址00000H-00FFFH。(包括中断向量区)。

第七章
1.答:80386有实模式和保护模式两种工作模式;
80486有实模式、保护模式和虚拟8086模式三种工作模式。
2、答:在实地址模式下,20位物理地址的形成方法是:
物理地址=段地址*10H+段内位移量
若逻辑地址为C018;FE7FH,则物理地址为:
物理地址=C018H*10H+FE7FH=CFFFFH
3、答:虚拟存储器是程序占有的空间。虚拟存储器地址是一种概念性的逻辑地址,并非实际物理地址。虚拟存储系统是在存储体系层次结构(辅存---内存---高速缓存)基础上,通过存储器管理部件MMU,进行虚拟地址和实地址自动变换而实现的,变换过程对每个编程者完全透明的。所以,虚拟存储器的大小由CPU的体系结构确定。
11、若已知某数据段描述符的内容如下图所示,它所对应的段选择符为020DH,试回答下列问题:

(1)该数据段描述符在局部描述符LDT中还是在全局描述符表GDT中?
(2)该描述符所描述的数据段的基地址和段界限是多少?
(3)指令序列:
MOVAX,020DH
MOVDS,AX
执行时,DS段寄存器高速缓存存储器的内容是什么?试分别说明32位基地址值、20位界限值及12位存取权字段的具体内容。
解:(1)段选择符的值020DH展开:0000001000001101,T1位为1,说明该数据段描述符在局部描述符表LDT中。
该描述符所描述的数据段的基地址为:000A0000H(图中蓝色区域)
段界限为:003FFH (图中红色区域)
(3)执行时,DS段寄存器告诉缓冲存储器的内容对应020DH所指向的段描述符;
32位基地址值:000A000H
20位界限值:003FFH
12位存取权字段:4B2H
14、解:(1)将线性地址25674890H分解为页目录项、页表项和位移量
00100101011001110100100010010000
页目录项页表项位移量
(2)根据(CR3)的内容确定页目录基地址为28345000H,页目录寻址项的地址为:
页目录基地址+目录索引地址x4=28345000H+095Hx4=28345254H
(3)由于访问页目录前内存中已有5个页表,所以(28345254H)=00005H,则页表基地址为:00005000H
页表寻址项的地址为:
页表基地址+页表索引地址x4=00005000H+274Hx4=000059D0H
(4)由于访问页表前内存中已有60页被定位,所以(000059D0H)=0003CH,则页帧基地址为:0003C000H
(5)要寻址的存储单元的物理地址为:
页帧基地址+线性地址低12位(位移量)=0003C000H+890H=0003C890H
第八章
5、何为中断向量,向量地址和中断向量表?
答:中断向量是指中断服务程序的首地址;
例如:在8259实验中,PC键盘中断服务程序的首地址为3ED3:00C1H
向量地址:是指中断“服务程序的首地址”所存放处的第一字节的地址
例如:在8259实验中,PC键盘中断在主片8259的IRQI上,向量的地址为:(08H+01H)*4=0024H,即0000:0024H.
中断向量表:是指处理器所有的中断向量集中存放在一起所形成的一个表格。
例如:80X86系列微处理共有256个中断向量,其中断向量表为:0000:0000-0000:03FFH
14、何为初始化命令字?8259A有哪几个初始化命令字?各命令字的主要功能是真么?
答:初始化命令字是可编程芯片在正式工作前,进行工作方式设定的命令字,用来指定可编程芯片按照与硬件连接相匹配的一种工作方式;8259A共有4个初始化命令字,各命令字功能是:
ICW1主要是用来设置中断请求信号的有效形式、单片或级联使用、有/无ICW4;
ICW2设置中断类型码的基值;
ICW3只用于级联方式下表明主从片8259A之间的链接方式;
ICW4用来设置中断嵌套方式、缓冲方式、结束方式和工作在何种CPU系统。
15、何为操作命令字?8259A有哪几种操作命令字?个命令字主要功能是什么?
答:(1)操作命令字是8259A初始化后,在正常工作运行中为了达到某种运行要求而使用的操作命令:
(2)8259A有3个操作命令字分别是ICW1,ICW2,ICW3
(3) 8259A命令字主要功能是:
ICW1用来设置中断源的屏蔽状态(中断屏蔽寄存器)
ICW2用来控制终端结束方式和修改优先权管理方式
ICW3用来管理特殊屏蔽方式和查询方式以及中断状态的查询(读IRR和ISR)