微机原理知识点总结.docx
《微机原理知识点总结.docx》由会员分享,可在线阅读,更多相关《微机原理知识点总结.docx(20页珍藏版)》请在冰豆网上搜索。
微机原理知识点总结
第一章
1.辨析三个概念:
微处理器、微型计算机、微型计算机系统
微处理器:
简称μP或MP(Microprocessor)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理器部件,又称为微处理机。
微型计算机:
简称μC或MC,是指以微处理器为核心,配上存储器、输入/输出接口电路及系统总线所组成的计算机(又称主机或微电脑)。
微型计算机系统(主机+外设+软件配置)(Microcomputersystem)简称μCS或MCS,是指以微型计算机为中心,以相应的外围设备、电源和辅助电路(统称硬件)以及指挥微型计算机工作的系统软件所构成的系统。
2.微机系统结构(三种总线结构):
数据总线,地址总线,控制总线
第三章
内部结构
由两部分组成:
总线接口单元BIU(BusInterfaceUnit);执行单元EU(ExecutionUnit).
(1).总线接口单元BIU
组成:
4个16位的段寄存器(CS、DS、ES、SS);
1个16位的指令指针寄存器IP;
1个20位的地址加法器;
1个指令队列(长度为6个字节);
I/O控制电路(总线控制逻辑);
内部暂存器。
BIU的功能:
根据EU的请求负责CPU与内存或I/O端口传送指令或数据。
①BIU从内存取指令送到指令队列
②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。
(2)执行单元EU(ExecutionUnit)
组成:
①ALU(算术逻辑单元);
②通用寄存器组AX,BX,CX,DX(4个数据寄存器)
BP(基址指针寄存器)
SP(堆栈指针寄存器)
SI(源变址寄存器)
DI(目的变址寄存器)
③数据暂存寄存器
④标志寄存器FR
⑤EU控制电路
作用:
负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。
4.物理地址与逻辑地址有什么区别
答:
逻辑地址是指未定位之前在程序中存在的地址,由段地址和偏移地址组成。
物理地址是实际访问存储器时的地址(通过20位地址总线传递)。
5.在什么情况下8086的执行单元(EU)才需要等待总线接口单元(BIU)提取指令
答:
EU在执行完转移、调用(包括子程序调用和中断调用)和返回指令时,因指令的执行顺序发生跳转,原来预取到指令队列中的指令将不再执行,需清空指令队列缓冲器。
在此情况下,EU才需要等待BIU从新的地址重新开始提取指令。
6.存储器为什么要分段(段加偏移)
答:
有1M的存储空间,有20根地址线,而CPU的指令指针和堆栈指针都是16位的,只能直接寻址64KB的地址空间,为了能寻址1MB的空间,需要把存储器分为若干段。
2.存储器的分段的机制允许重定位,由于段寄存器里的段地址可以由程序来重新设定,因而使得程序和数据不需要进行任何修改,就能使他们重定位。
7.段地址和段基址概念辨析
1)段地址:
段寄存器的内容,出现在汇编后的机器指令中。
2)段基址:
段地址左移4位后形成的20位段起始地址。
8.8086CPU系统中为什么要用地址锁存器
8086CPU由于引脚数量少,其地址总线采用了分时复用的双重总线,仅在总线周期的Tl时钟周期输出地址信号,而在整个总线周期中地址信号需保持不变,这就需用地址锁存器将T1周期发出的地址信号锁存起来以在整个总线周期中都能使用,为此8086CPU在T1周期提供地址锁存允许信号ALE(正脉冲),用ALE的下降沿将地址信息锁存在地址锁存器中(3分)共需3片73LS373芯片用作地址锁存器,锁存信息A19—A0和BHE
的最大工作模式和最小工作模式的区别
答:
最小工作方式即单处理器系统方式;在此方式下,全部控制信号由CPU本身提供,它适合于较小规模的应用。
CPU工作于最大工作方式时,系统的控制信号由8288总线控制其提供,通常,在最大方式系统中一般包含两个或多个处理器。
10.什么叫重定位
答:
重定位是指一个完整的程序块或数据块可以在存储器所允许的空间内任意浮动并定位到一个新的可寻址的区域。
11.8086指令系统的特点
答:
8086与8088的指令系统由8位的8080/8085指令系统扩展而来的,同时又能在其后续的80x86系列的CPU上正确运行。
其主要特点是:
(1)采用可变长指令,指令格式比较复杂。
(2)寻址方式灵活多样,处理数据的能力比较强。
(3)有重复指令和乘、除运算指令。
扩充了条件转移、移位/循环指令。
(4)为加强软件中断功能和支持多处理器系统的工作,增设了有关的指令。
12.总线周期
概念:
总线周期通常是指微处理器完成一次访存或I/O端口操作所需的时间。
(类似于机器周期)
在8086/8088中,一个最基本的总线周期由4个时钟周期组成,分别称为4个状态,即T1、T2、T3与T4这4个状态。
T1状态:
CPU往多路复用总线上发送地址信息,以选中所要寻址的存储单元或外设端口的地址。
T2状态:
CPU从总线上撤消地址,并使总线的低16位浮置成高阻状态,为传送数据做准备。
T3状态,多路总线的高4位继续提供状态信息,而其低16位(对8088CPU则为低8位)上将出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
说明:
若访问设备未准备好,则CPU会在T3之后自动插入1个或多个附加的时钟周期Tw,这个Tw就叫等待状态(CPU在每个总线周期的T3状态开始对READY信号采样。
)
T4状态:
CPU采样数据总线,完成本次读/写操作,总线周期结束。
(要对INTR信号进行采样)
说明:
只有BIU与内存或I/O端口交换数据,以及填充指令队列时,BIU才执行总线周期。
除此之外,既不需要填充指令队列,EU也没有向BIU发出总线周期请求时,系统总线就处于空闲状态,进入空闲周期,空闲周期由一个或几个Ti状态组成。
13.RESET
复位后,标志寄存器与指令队列缓冲器的原有信息被清除,IP与DS、SS和ES也被清零,而CS被置为FFFFH。
当RESET信号变为低电平时,CPU就从FFFF0H开始执行程序。
在程序执行时,RESET线保持低电平。
14.指令数据在存储器中的存放
若存放的信息为1个字时,则将字的低位字节放在低地址中,高位字节放在高地址中。
(注:
对存放的字,若低位字节从奇数地址开始存放,为非规则字;反之,为规则字。
读一个规则字需要访问一次存储器,读一个非规则字需要访问两次存储器)
当存放的是双字形式(这种数一般作为指针),其低位字是被寻址地址的偏移量;高位字则是被寻址地址所在的段地址。
15.8086的存储器为什么要分段
答案见6
16.8086/8088指令的分类
8086/8088的指令按功能可分为6大类:
数据传送、算术运算、逻辑运算、串操作、程序控制和CPU控制
数据传送指令(细分成4类)
通用数据传送指令
MOV、PUSH、POP、XCHG、XLAT
目标地址传送指令
LEA、LDS、LES
标志位传送指令
LAHF、SAHF、PUSHF、POPF
I/O数据传送指令
IN、OUT
传送指令:
MOVDST,SRC
执行操作:
(DST)(SRC)
说明:
可实现一个字节或字的传送(例子见教材P66)。
注意:
*DST、SRC不能同时为段寄存器MOVDS,ES
*立即数不能直接送段寄存器MOVDS,2000H
*DST不能是立即数和CS
*DST、SRC不能同时为存储器寻址
*不影响标志位
进栈指令:
PUSHSRC
注意:
*堆栈操作必须以字为单位。
*不影响标志位
*不能用立即寻址方式PUSH1234H
*DST不能是CSPOPCS
*并非局限在栈顶操作MOVAX,[BP][SI]
交换指令:
XCHGOPR1,OPR2
执行操作:
(OPR1)(OPR2)
注意:
*不影响标志位
*不允许使用段寄存器
*不能在存储器单元之间交换
换码指令:
XLAT或 XLATOPR(通过查表实现)
执行操作:
(AL)((BX)+(AL))
例:
MOVBX,OFFSETTABLE;(BX)=0040H(表预先建立在内存)
MOVAL,3;索引值
XLATTABLE
指令执行后(AL)=30H
注意:
*不影响标志位
*字节表格(长度不超过256字节)
首地址(BX)
*需转换的代码位移量(AL)
目标地址传送指令
有效地址送寄存器指令:
LEAREG,SRC
执行操作:
(REG)SRC(存储器)
指针送寄存器和DS指令:
LDSREG,SRC
执行操作:
(REG)(SRC)(DS)(SRC+2)
相继二字寄存器、DS
指针送寄存器和ES指令:
LESREG,SRC
执行操作:
(REG)(SRC)(ES)(SRC+2)
相继二字寄存器、ES
注意:
*不影响标志位
*REG不能是段寄存器
*SRC必须为存储器寻址方式
标志位传送指令
标志送AH指令:
LAHF
执行操作:
(AH)(FLAGS的低字节)
AH送标志寄存器指令:
SAHF*(置位/复位)
执行操作:
(FLAGS的低字节)(AH)
标志进栈指令:
PUSHF(转子/中断调用)
执行操作:
(SP)(SP)-2
((SP)+1,(SP))(FLAGS)
标志出栈指令:
POPF*(转子/中断调用)
执行操作:
(FLAGS)((SP)+1,(SP))
(SP)(SP)+2
*影响标志位
二、算术运算类指令(共20条指令)
加法指令
ADD、ADC、INC
减法指令
SUB、SBB、DEC、NEG、CMP
乘法指令
MUL、IMUL
除法指令
DIV、IDIV、CBW、CWD
执行REPMOVS之前,应先做好
(初始化工作):
(1)源串首地址(末地址)→SI
(2)目的串首地址(末地址)→DI
(3)串长度→CX(最大64KB)
(4)建立方向标志
(CLD使DF=0,STD使DF=1)
一个串传送的例子:
datasegment
mess1db‘personal_computer’;字符数组
dataends
extrasegment
mess2db17dup()
extraends
codesegment
movax,data;不能:
movds,data(×)
movds,ax;立即数不能直接送段寄存器
movax,extra;不能:
leads,data(×)
moves,ax;用于取变量的有效地址
leasi,mess1;源串首地址
leadi,mess2;目标串首地址
movcx,17;串长度
cld;建立方向标志(CLD使DF=0,STD使DF=1)
repmovsb;串传送
…
codeends
例(续):
把附加段中的10个字节缓冲区置为20H
leadi,mess2
moval,20H
movcx,10
cld
repstosb
比较例中两串是否完全相同,若两串相同,则BX寄存器内容为0;若两串不同,则BX指向源串中第1个不相同字节的地址,且该字节的内容保留在AL寄存器中。
CLD
MOVCX,100
MOVSI,2500H
MOVDI,1400H
REPECPMSB;串比较,直到ZF=0或CX=0
JZEQQ;两串相同,置BX为0
DECSI;将指针修改回第1个不相同字节处
MOVBX,SI
MOVAL,[SI]
JMPSTOP;必须跳转,否则仍继续执行EQQ
EQQ:
MOVBX,0
STOP:
HLT
例:
试比较两个无符号数80H和79H,则用下面的指令,即
MOVAL,80H
CMPAL,79H
JAABOVE
例:
试比较两个有符号数80H和79H,则用下面的指令,即MOVAL,80H
CMPAL,79H
JGGREATER
第三章习题答案整理
答:
由两部分组成:
总线接口单元BIU(BusInterfaceUnit),执行单元EU(ExecutionUnit).BIU的功能是根据执行单元的请求负责CPU与I/O端口或则存储器之间的数据传输。
EU单元的作用是:
负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。
答:
组成:
4个16位的段寄存器(CS、DS、ES、SS);
1个16位的指令指针寄存器IP;1个20位的地址加法器;
1个指令队列(长度为6个字节);
I/O控制电路(总线控制逻辑);内部暂存器。
段寄存器和地址加法器:
8086的内存空间为1M,地址线为20根,但是8086的内部寄存器只有16位,因此采用“段加偏移”技术来解决这一问题,由段寄存器提供段地址,左移4位形成段基址,通过地址加法器与有效地址相加得到20位物理地址。
指令队列:
指令队列由6字节的寄存器组成,最多可以存入6字节的指令代码,8086执行指令时,将从内存或则存储器中取出一条或则几条指令依次存入指令队列缓冲器里,他们采用“先进先出”的原则,顺序取到EU中去执行
16位指令指针:
IP的功能相当于8位CPU中的PC,正常运行时,IP中含有BIU要去的销一条指令的偏移地址,在程序运行时能自动加1修正,使之指向下一条指令。
答:
并行操作方式是指EU和BIU着两部分同时工作,EU但愿从指令队列头中取指令,只要指令队列不是空,他就一直执行,无需等待。
由于8086中的BIU和EU是分开独立设计的,因此,在一般情况下,CPU执行完一条指令后就可以立即执行下一条指令,无需等待。
因此说8086可以并行操作。
当EU在执行完转移、调用(包括子程序调用和中断调用)和返回指令时,因指令的执行顺序发生跳转,原来预取到指令队列中的指令将不再执行,需清空指令队列缓冲器。
在此情况下,EU才需要等待BIU从新的地址重新开始提取指令。
答:
逻辑地址是指未定位之前在程序中存在的地址,由段地址和偏移地址组成。
物理地址是实际访问存储器时的地址(通过20位地址总线传递)。
为什么要引入段加偏移思想:
有1M的存储空间,有20根地址线,而CPU的指令指针和堆栈指针都是16位的,只能直接寻址64KB的地址空间,为了能寻址1MB的空间,需要把存储器氛围若干段。
2.存储器的分段的机制允许重定位,由于段寄存器里的段地址可以由程序来重新设定,因而是的程序和数据不需要进行任何修改,就能使他们重定位。
段加偏移的含义是:
利用16位的段寄存器的内容确定20位起始地址的高16位,由IP或由EU按照寻址方式找出的16位偏移地址,然后将段基址与偏移地址相加得到一个20位的实际地址,以对存储单元寻址。
答:
指令队列缓冲器的作用是存放从内存或则存储器中取出的指令,供EU执行。
8086的指令队列由6字节的寄存器组成,8088的指令队列由4字节的寄存器组成。
答:
不同。
段地址左移4位就得到了段基址;是;段寄存器中的内容左移4位得到段基址。
答:
当CPU取指或与I/O端口或者存储器交换数据的时候才执行总线周期。
T1~T4状态。
如果存储器或则外设的速度比较慢,不能及时跟上CPU的速度时,存储器或则外设通过一个READY信号在T3启动之前发送一个“没有准备好”的信号,并且CPU会在T3启动后插入1个或多个Tw等待状态。
答:
ALE信号时地址锁存信号(AddressLockEnable),它通知地址锁存器8282当前地址为有效地址,可以锁存。
不能。
DT/R(非)控制8286的数据传输方向。
当DMA请求时,它被置于高阻状态。
答:
最大工作方式和最小工作方式。
MN/MX(非)(非:
就是对MX取反)引脚来控制。
最小工作方式即单处理器系统方式;在此方式下,全部控制信号由CPU本身提供,它适合于较小规模的应用。
CPU工作于最大工作方式时,系统的控制信号由8288总线控制其提供,通常,在最大方式系统中一般包含两个或多个处理器。
答
(1)立即数寻址
(2)直接寻址(3)变址寻址(4)变址寻址(5)寄存器寻址(6)寄存器相对间接寻址(7)隐含寻址(8)寄存器寻址(9)I/O间接寻址(10)基址寻址
(1)PA=(DS)*16+(DI)
(2)PA=(DS)*16+(BX)+(SI)
(3)PA=(DS)*16+8+(BX)+(DI)
(4)PA=(ES)*16+(BX)
(5)PA=(DS)*16+2400H
(6)PA=PA=(DS)*16+(BX)+(DI)+1200H
(7)PA=(SS)*16+(BP)+(SI)
(8)PA=(DS)*16+(BX)+(DI)+1200H
(1)IP不可编程访问,或IP不可作为源操作数出现在普通指令中。
(CS,IP,FLAG等都不可编程访问)
(2)cs不可编程访问。
(3)SI+2是对寄存器的非法使用(应为[SI+2])
(4)MOV指令的目标操作数不能为立即数
(5)PUSH指令的操作数不能为立即数
(6)未指明数据长度(可以改为INCWORDPTR[BX])
(7)乘数不能为立即数且MUL只能完成无符号数的乘法
(8)未知名数据长度(可改为ADDWORDPTR[2400H],2AH)
(9)MOV指令的两操作数不能同时为存储器操作数
(10)数据类型不匹配(可改为MOVSI,AX)
(1)AX=0ABCH
(2)AX=0ABBH(3)AX=00BBH(4)CL=04H
(5)AL=76H(6)CL=76H(7)CL=EEH(8)AX=0076H
(9)BX=0076H
(2)PA=(DS)*16+list+(bx)+(si)=11950H
(1)ANDAH,0FH
(2)XORAL,F0H
(3)MOVCL,4
SHRAL,CL
(4)MOVCL,4
SHLAL,CL
3.50ADDAX,AX;AX=6264H
JZDONE
SHLCX,1;CX=0008H
RORAX,CX;AX=6462H
DONE:
ORAX,1234H;AX=7672H
3.57AX+DX=000B
所以CF=0,AF=1,SF=0ZF=0,OF=0PF=1
MOVAL,BL
CBW
IDIVCL
MOVDL,2
IMULDL
MOVDX,AX
3.70(5)AND[BP],CX
(6)ANDBYTEPTR[WAIT1],AL
(3)ORSI,DX
(5)OR[BP],CX
ORDI,001F
MOVSI,DI
(1)MOVCL,3
SHRDI,CL
(2)SHLAL,1
1)JMP[DI]:
该指令为段内间接转移。
DI中的内容为指向存储单元的偏移地址,从该地址开始的2个字节中存放着要跳转到的指令的偏移地址,执行指令时,将该偏移地址(DS:
DI和DS:
DI+1)中的内容送IP,段地址不变。
2)JMPFARPTR[DI]:
该指令为段间间接远转移。
DI中的内容为指向存储单元的偏移地址,从该地址开始的4个字节中存放着要跳转到的指令的目标地址,其中,前2个字节为偏移地址,后2个字节为段地址。
执行指令时,将该偏移地址送IP,段地址送CS。
CLD
MOVCX,100
MOVSI,6180H
MOVDI,2000H
REPMOVSB
DECDI
STD;也可直接用MOVDI,2000H
MOVCX,100
SCAN:
SCASB
JNZNEXT
INCDI
MOVBYTEPTR[DI],‘’(或20H)
DECDI
NEXT:
LOOPSCAN
MOVAH,4CH;终止程序,返回DOS
INT21H
答:
答案参见p95④RET弹出值p99IRET
第四章
17.汇编语言是直接面向微处理器编程的程序设计语言,具有执行速度快和易于实现对硬件的控制等独特的优点,所以至今仍然是使用得较多的编程语言。
特别是在对于程序的空间和时间要求很高的场合,以及需要直接控制设备的应用场合,汇编语言更是必不可少。
18.汇编语句的4个字段是:
1)名字或标号;
2)操作码(指令助记符)或微操作命令;
3)操作数表(操作数或地址)
4)注释
汇编语句的种类:
(3种):
指令语句,伪指令语句,宏指令语句
20.指令性语句格式:
[标号:
][前缀]指令助记符[操作数表][;注释]
21.伪指令性语句格式:
[名字]伪指令[参数表][;注释]
22.表达式的求值是由汇编程序完成的。
23.逻辑运算符出现在操作数中时为微操作,其功能在汇编时完成例如
MOVAX,75A6HAND2465H
24.关系运算符:
EQ、NE、LT、GT、LE、GE。
说明:
关系运算的结果是一个常数(布尔值)。
关系成立,结果为0FFFFH,否则,为0。
25.变量的定义:
1)VARDB12;2)VARDB12DUP(0)(字节串/字符串)
3)VARDW12DUP()(字串)
4)VARDB125DUP(5)(字节串,只给部分字节赋值)
26.分析运算符:
分析运算符用来把存储器操作数(变量或标号)分解为它的组成部分(段地址、偏移值、类型、数据字节总数、数据项总数等),并以数值形式回送给变量或标号(例子见教材P136)。
SEG回送变量或标号的段地址;
OFFSET回送变量或标号的偏移量;
TYPE回送反映变量或标号类型的一个数值;
SIZE回送变量数据区的字节总数;
LENGTH回送变量数据区的数据项总数;
HIGH取地址表达式或16位绝对值的高8位;
LOW取地址表达式或16位绝对值的低8位;
27.$地址计数器
假定进行汇编时,为VAR分配的偏移地址为0074H。
那么汇编伪指令:
VARDW1,2,$+4,3,4,$+4后,该存储区的存储情况如何
28.在指令中引用$时,$就表示该指令首地址,与$本身所指向单元无关。
比如指令:
JNZ$+6
该指令的转移地址是JNZ指令的首地址加上6。
当然,$+6必须是某一条指令的首地址,这样才能达到正确转移的目的。
及BIOS中断调用前七个
第四章习题整理
AX=0020H