微机原理复习笔记Word下载.docx
《微机原理复习笔记Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理复习笔记Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
与该数原码相同
负数的反码表示:
在其正数反码表示基础上按位求反
补码:
正数的部门与原码相同
负数的部门在正数的补码表示,按位求反,在最低位加1
注:
1、补码不等于负数
2、求补不等于补码,求补是求其相反数的操作
二进制编码
1、BCD码
压缩的BCD码:
一个字节表示2位BCD码
非压缩的BCD码:
一个自己表示1位BCD码
2、ASCⅡ码:
七位二进制数表示一个符号高位为0
微机原理笔记
(二)--8086结构
一、8086CPU内部结构
算数逻辑单元(ALU):
运算器的重要部件,完成算术运算(加、减、乘、除、求补、与、或、异或、求反、移位、循环移位)
程序状态字(psw):
又称标志寄存器,记录运算结果的特征
控制器:
指令译码、发出控制信号、协调各部件工作
段寄存器:
CS、DS、SS、ES、IP(指令指针,存放下一条直线指令在存储单元内的地址,每取一个字节的指令代码会自动加1)
二、8086寄存器结构
AX:
16位寄存器,分为2个8位AH、AL
作用:
1、通用寄存器,数据的存取
2、与DX一起构成双字作为低16位,在乘法和除法指令中使用
3、作为累加器
BX:
16位寄存器,分为2个8位BH、BL
1、通用寄存器
2、作为访问存储器的地址指针
CX:
16位寄存器,分为2个8位CH、CL
2、在循环指令中作为循环计数器、循环指令。
在串操作指令中传送计数器。
DX:
16位寄存器,分为2个8位DH、DL
2、与AX一起构成双字作为高16位,在乘法、除法指令中使用
3、作为输入、输出地址,不可有作为存储器地址
BP:
16位寄存器
2、访问存储器的地址指针
SP:
16位堆栈指针,只想堆栈的栈顶,可作为访问存储器地址
SI、DI:
2、可以作为访问存储器的地址
3、在变址寻址时作为变址寄存器
4、在串操作时,SI作为源指针,DI作为目的指针
psw:
程序状态字,16位寄存器,又称FL、FR
状态位:
CF、PF、AF、ZF、SF、OF(6位,操作结果的特征)
控制位:
TF、IF、DF
CF:
进位标志位。
运算结果最高位产生进位或借位,该位置为1,否则为0
PF:
奇偶标志位。
运算结果的低8位,有偶数个1,该位置1,有奇数个1,该位置0
AF:
辅助进位标志位。
运算结果的低4位产生进位或借位该位置1,否则置0
ZF:
全零标志位。
运算结果为0时,该位置1,否则置0
SF:
符号标志位(负数标志位)。
运算结果是负数,该位置1,否则置0
OF:
溢出标志位。
运算结果超出表示的范围,该位置1,否则置0
符号数运算溢出,根据OF判断,不带符号数运算产生溢出根据CF判断
次高位产生进位a,最高位产生进位b,OF=a异或b
TF:
单步标志位。
若TF=1,执行一条指令后,产生一个中断,单步执行
IF:
中断标志位。
若IF=1,允许CPU响应可屏蔽中断
DF:
方向标志位。
串操作时使用。
DF=0,地址指针式增量+1或+2;
DF=1,地址指针是减量-1或-2
三、8086CPU引脚介绍
电源(40),接地(1,20),时钟信号(19),重置(21)--输入引脚高电平有效
AD0~AD15:
地址/数据线,分时复用,地址A0~A15,数据D0~D15。
线传送地址,然后传送数据,双向输入/输出,三态(0,1,高阻)
A19/S6~A16/S3:
地址/状态线,分时复用,三态,输出,8086中S6不用,S5表示IF状态
BHE:
总线高位有效,输出,三态,低电平有效(8086没有)
BHE=0,表示CPU正在使用D8~D15进行数据传送
A0=0,表示CPU正在使用D0~D7进行数据传送
偶地址由D0~D7数据传数(A0=0)
奇地址由D8~D15数据传数(A0=1即bhe=0)
MN/MX:
最小/最大工作模式选择输入
最小模式:
MN/MX=1单CPU系统
最大模式:
MN/MX=0多CPU系统
ALE:
地址锁存允许信号,输出,高电平有效
开始传送地址时,ALE由0变成1,经过一定时间,ALE由1变成0锁存地址
M/IO:
存储器/IO,输出,三态(8088与其相反)
M/IO=1,访问存储器;
M/IO=0,访问I/O
RD:
读、取数,输出,低电平有效,三态
RD=0,CPU从数据线上获取数据
WR:
写、输出、低电平有效、三态
DEN:
数据缓冲器控制(驱动器控制),输出,低电平有效
DT/R:
数据传送方向
DT/R=1,由CPU到存储器/IO;
DT/R=0,由存储器/IO到CPU
READY:
准备就绪信号,输入,高电平有效
INIR:
可屏蔽中断请求,输入,高电平有效,与IF对应
INTA:
中断响应信号,输出。
等于0时,CPU响应屏蔽中断
NMI:
非屏蔽中断请求,不受IF控制,输入,上升沿有效
TEST:
输入,低电平有效,外部事件与CPU同步
HOLD:
总线请求信号,输入,高电平有效
HLDA:
总线响应信号
BX、BP、SI、DI、SP、IP、CS、DS、ES、SS可访问存储器的地址
8086存储空间1MB
四、8086存储器的组织结构
每段<
=64KB记录段起始地址
偏移地址EA(有效地址)16位
BX、BP、SI、DI、SP、IP直接地址
限制:
段棋手地址的低四位必须为0
物理地址=段基址×
16+EA(有效地址)
物理地址<
-->
存储单元
0300H:
0100H
PA=0300H*16+0100H=03000H+0100H=03100H
时序:
时钟周期:
1个CLOCK周期
总线周期:
4个时钟周期构成
控制信号:
变为有效->
无效
指令周期:
一到几个总线周期构成
M/IO
RD
WR
AO
BHE
操作
1
0
D0~D7读M
D8~D15读M
0
D0~D15读M读16位
D8~D15读低位
D0~D7读高位
微机原理笔记(三)--寻址方式
寻址方式
得到操作数或操作数的地址的方法
1、立即寻址
指令中直接给出了参加操作的操作数
MOVAX,3680(80放入AL,36放入AH)
ADDBL,30H
用BL的内容加上30H的结果送入BL
立即数相当于C语言中的常量
2、寄存器寻址
操作数在CPU内部的某一个寄存器
ADDALAH//(AL)+(AH)->
AL
SUBAHBL//(AH)-(BL)->
AH
CF=1,PF=1,AF=0
ZF=0,SF=1,OF=0
3、直接寻址
指令中直接给出了操作数的有效地址EA(16位)
MOVAX[200H]
段寄存器缺省DS
MOVAXes:
[2000H]
ADDAL[2380H]
4、寄存器间接寻址
操作数的地址在BX、BP、SI、DI、SP
段基址:
BX(缺省)、SI、DI、DS、BP、SP
5、相对寄存器寻址
EA=(BX,BP,SI,DI)+指令给出的8位或16位位移量
MOVAX[BX+5]=MOVAX5[BX]
6、基址变址寻址方式
EA=(BX,BP)+(SI,DI)
BX缺省DS,BP缺省SS
7、相对基址变址寻址方式
EA=(BX,BP)+(SI,DI)+8位或16位位移量
计算EA,结果一定是16位
计算PA,结果一定是20位
微机原理笔记(四)--数据传送指令
一、MOV
MOV目的,源
将源的内容送到目的中
MOV[AX],0//8位传送或16位传送
MOVbyteptr[BX],0//8位传送
MOVwordptr[BX],0//16位传送
通用寄存器、存储器<
数寄存器[CS不可作为目的]
通用寄存器<
存储器
通用存储器
1、CS、IP和立即数不能作为目的操作数
2、操作数的尺寸必须一致
3、两个操作数不能同时位存储器操作数(串操作除外)
二、堆栈操作指令
堆栈:
记寻返回地址,按照后进先出的原则组织,保存地址或数据的布局
硬件堆栈:
专门的布局,一般在CPU内部,速度快,容量小;
在存储器中开发一块区域作为堆栈使用,速度慢
8086堆栈生成方式
向下生成:
从地址高的地方向地址低的地方使用
向上生成:
从地址低的地方向地址高的地方使用
操作方式:
按字节(8051)
按字(8086)
按双字:
堆栈指针SP(16位)
指向栈顶(最后一个入栈数据存放单元)
入栈:
PUSH源
出栈:
POP目的
三、交换指令
XGHGop1,op2
op1,op2不可同时为存储器操作数,任何一个都不能为段寄存器操作数
四、换码指令
XLAT(表名)
五、地址传送指令
1、LEA目的,源
将源的有效地址(EA)送到目的中
2、LDS寄存器名,存储器
从源操作数指定的存储单元中取出4字节的连续地址,前2个字节送入目的寄存器,后两个字节送入DS中
六、标志传送
1、LAHF将psw中低8位送入AH中
2、SAHF将AH内容存入psw中低8位
3、pushF将psw送入栈中
4、popF标志出栈
七、输入输出指令
IN/OUT
微机原理笔记(五)--算数运算指令
一、加法指令:
(一)ADD:
不带进位位的二进制加法指令
ADD目的,源//两者均不能为段寄存器,目的不能为立即数
功能:
目的+源-->
目的
将CF清零ADDAL,0
(二)ADC:
带进位的二进制加法指令
ADC目的,源//影响psw
目的+源+CF-->
(三)INC:
加1指令
INC目的(源)//影响psw,不影响CF
目的+1-->
(四)BCD加法调整指令
1、DAA:
组合的BCD码加法调整指令
AL的低四位>
9或AF=1,AL+06H-->
AL;
否则什么都不做
AL的高四位>
9或CF=1,AL+06H-->
否则不动作
DAA只能调整AL,不能调整AH。
2、AAA:
非压缩的加法调整指令
根据当前标志,对AL内容进行调整
AL的低四位<
=9且AF=0,只将AL的高四位清零
9或AF=1(不会同时产生),AL+06H-->
AL,AH+1-->
二、减法指令
(一)SUB:
不带进位的二进制减法指令
SUB目的,源
目的-源-->
(二)SBB:
带进位的二进制减法指令
SBB目的,源//影响psw
目的-源-CF-->
(三)DEC:
减1指令
DEC目的//影响psw,不影响CF
目的-1-->
(四)NEG:
求补指令
NEG目的//影响psw
0-目的-->
(五)CMP:
比较指令
CMPop1,op2//op1-op2,影响psw(同SUB)
用途:
比较两数是否相等:
ZF=1,op1=op2;
ZF=0,op1!
=op2
比较两个无符号数大小:
CF=1,op1=op2;
CF=0&
ZF=0,op1>
op2;
比较两个带符号数大小:
OF⊕SF=0,op1>
=op2;
OF⊕SF=1,op1<
OP2;
(OF⊕SF=0)&
op2
(六)DAS:
压缩BCD码调整
(七)AAS:
非压缩BCD码调整
三、乘法指令
(一)MUL:
无符号数乘法指令
MUL源//源不能为立即数,可以是8位二进制数,16位二进制数
若源为8位,AL*源-->
AX;
若源为16位,AL*源-->
DX,AX
若运算结果高半部分为0,则OF=0,否则为1
(二)IMUL:
IMUL源
若乘积高半部分为低半部分的符号扩展,择CF=0&
OF=0,否则为1
(三)AAM:
乘法的ASCII调整指令
四、除法指令:
(一)DIV:
无符号数除法指令
DIV源
如果源是8位,AX/源-->
AL(高),AH(余)
如果源是16位,DX,AX/源-->
AX(高),DX(余)
此指令会产生除法溢出,即16位除以8位,结果必须是8位,32位除以16位结果必须为16位。
(二)IDIV:
符号数除法指令
IDIV源
如果源为8位,AX/源-->
AL(高),AH(低)
如果源为16位,DX,AX/源-->
AX(高),DX(低)
除法溢出同DIV
(三)CBW
把AL中字节的符号位扩充到AH的所有位,这时AH被称为AL的符号扩充
不影响psw
(四)CWD
(五)AAD:
除法的ASCII调整指令
在做除法前,把BCD码转换成二进制数
影响SF,ZF,PF,对OF,CF,AF无定义
微机原理笔记(六)--逻辑运算和移位指令
一、逻辑运算和移位指令
(一)NOT:
取反指令
格式:
NOT目的
目的<
--目的取反
对标志位无影响
(二)AND:
逻辑与指令
AND目的,源
--目的与源
主要用于操作数某些保留(“与1”),和某些位清除(“与0”)
(三)OR:
逻辑或指令
OR目的,源
--目的或源
“0或”保留,“1或”置1
(四)XOR异或指令
XOR目的,源
--目的异或源
“0异或”保留,“1异或”取反
(五)TEST
TEST目的,源
目的与源,仅修改FR
二、算术逻辑和移位指令
(一)SAL/SHL:
ShiftArithmeticLeft
SAL目的,计数值
CF<
--MSB<
--LSB<
--0
1、左移动一次,相当于目的操作数乘2
2、只需移动一次,直接将计数值置1
大于一次,利用CL
3、符号位改变:
一次移位,OF置1;
多次移位,OF不定
符号位不变:
一次移位,OF清0;
CF=最后移出地值,SF,ZF根据操作数状态,PF当操作数在AL有效,AF不定
(二)SHR:
ShiftLogicRight
SHR目的,计数值
0-->
MSB-->
LSB-->
CF
右移除2,但余数丢掉(无符号数)
(三)SAR:
ShiftArithmeticRight
SAR目的,计数值
MSB->
CFMSB-->
MSB
高位保持不变(有符号数)
(四)循环移位指令:
Rotate
ROL:
RotateLeft
ROR:
RotateRight
RCL:
RotatethroughCarryLeft
RotateThroughCarryRight